2010年5月20日 星期四

Get interface ip in linux kernel

在userspace的ioctl是不能使用的。在這邊以取得"br0"為範例。

struct net_device *br0_dev;
struct in_device *br0_in_dev;

br0_dev = dev_get_by_name(&init_net,"br0");
br0_in_dev = in_dev_get(br0_dev);

printk(KERN_INFO br0 ip:"NIPQUAD_FMT"\n" ,NIPQUAD(br0_in_dev->ifa_list->ifa_address));

NIPQUAD的話要參考前一篇ip轉換為字串的說明。

參考資料:
[1] 利用net_device取本机ip地址+网络设备的IP地址结构

沒有留言: