libtins
libtins copied to clipboard
Multiple IPv4
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;
};