libtins icon indicating copy to clipboard operation
libtins copied to clipboard

Multiple IPv4

Open lynnux opened this issue 5 years ago • 0 comments

root@tinkerboard:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 88:d7:f6:c3:1a:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.6.12/24 brd 192.168.6.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 169.254.88.52/16 brd 169.254.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fdc0:5be3:3586::1b9/128 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::54c:371e:2455:26ba/64 scope link
       valid_lft forever preferred_lft forever

On a debian9.3 systems, I don't know 169.254.88.52 where come from, it cause Utils::resolve_hwaddr could not get the gateway's mac of 192.168.6.12, the arp are sent like:

03:15:36.211454 ARP, Request who-has 192.168.6.1 tell 169.254.88.52, length 46

It seems NetworkInterface::addresses() only get the latter IP, and the NetworkInterface::Info only have one IPv4Address:

    struct Info {
        IPv4Address ip_addr, netmask, bcast_addr;
        std::vector<IPv6Prefix> ipv6_addrs;
        address_type hw_addr;
        bool is_up;
    };

lynnux avatar Aug 27 '18 03:08 lynnux