- 论坛徽章:
- 0
|
最后是通过net_device解决的 以下是模块部分代码- static int getip6_init(void)
- {
- /* printk("Module start!\n");*/
- struct inet6_dev *in_dev6;
- struct inet6_ifaddr *ifa6 = NULL;
- int i;
- sock_create_kern(PF_INET6, SOCK_DGRAM, 0,&sock);
- net = sock_net((const struct sock *)sock->sk);
- dev = dev_get_by_name(net,"eth0");
-
- in_dev6 = (struct inet6_dev *)dev->ip6_ptr;
-
- while (in_dev6){
- ifa6 = in_dev6->addr_list;
- while (ifa6){
- if(ifa6->scope == IPV6_ADDR_ANY){
- addr = ifa6->addr;//addr即为eth0接口的v6地址
-
- for(i = 0; i < 8;i++){
- printk("%4x ",addr.s6_addr16[i]);
- }
- }
- ifa6 = ifa6->if_next;
- }
- in_dev6 = in_dev6->next;
- }
-
- return 0;
- }
复制代码 |
|