我试图让IPv6的在我的Linux OS像下面的地址地址:获取的IPv6在Linux中使用的ioctl
sd = Socket_m(AF_INET6_m, SOCK_DGRAM_m, 0);
ifc.ifc_buf = buffer_p;
ifc.ifc_len = buffSize;
Ioctl_m(sd, SIOCGIFCONF, &ifc);
它可以成功地如果有IPv4地址的配置界面,但如果接口只有一个IPv6地址它不是由ioctl返回的。
例如,我不能,因为只有IPv6地址配置获得followith接口的IPv6地址:
br1 Link encap:Ethernet HWaddr 00:10:18:2D:BB:34
inet6 addr: fe80::210:18ff:fe2d:be54/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:194244850 errors:0 dropped:0 overruns:0 frame:0
TX packets:72005 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12331900995 (11760.6 Mb) TX bytes:6192406 (5.9 Mb)
非常感谢您对clarifation,请你帮我理解“的/ proc /净/ if_inet6”的格式,我怎么能确定UP和非回送地址?我读http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/proc-net.html,但目前尚不清楚.. –
该文档是相当明确的 - 它的“接口标志”你以后。查看IFF_LOOPBACK和IFF_UP的系统头文件中的值(“if.h”)。如果你试图用shell解析if_inet6,你可以使用awk提取正确的字段,并用'&'与相关常量进行与运算。 –