使用ioctl将多个ipv6地址添加到单个接口

时间:2013-10-29 08:50:16

标签: c linux ipv6

我正在尝试将我的应用程序移植到ipv6,我的当前代码会动态显示别名IP地址,如下所示:

eth0      Link encap:Ethernet  HWaddr 00:16:35:68:21:5B
          inet addr:192.168.1.245  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:35ff:fe68:215b/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:278885750 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68117973 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:68976932662 (64.2 GiB)  TX bytes:39384521280 (36.6 GiB)
          Interrupt:169

eth0:1    Link encap:Ethernet  HWaddr 00:16:35:68:21:5B
          inet addr:192.168.1.246  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          Interrupt:169

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6060179 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6060179 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2366257047 (2.2 GiB)  TX bytes:2366257047 (2.2 GiB)

eth0:1将由应用程序动态添加。它使用ioctl来做到这一点。我想对IPV6地址做同样的事情。我试过这个Assign ipv6 address using ioctl。但示例代码是将IPV6地址添加到现有接口eth0而不是eth0:1或eth0:2,即使我将接口名称指定为eth0:1。任何人都可以帮忙,因为我是IPV6的新手。

1 个答案:

答案 0 :(得分:1)

这是正常行为。在IPv4中,每个接口只能有一个地址。要添加更多地址,您必须创建“假”接口,例如eth0:1。 IPv6每个接口总是有多个地址,因此eth0:1之类的解决方案不会用于IPv6。