kuznet@alisa:~ $ ip addr ls eth0 3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc cbq qlen 100 link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff inet 18.104.22.168/24 brd 22.214.171.124 scope global eth0 inet6 3ffe:2400:0:1:2a0:ccff:fe66:1878/64 scope global dynamic valid_lft forever preferred_lft 604746sec inet6 fe80::2a0:ccff:fe66:1878/10 scope link kuznet@alisa:~ $
The first two lines coincide with the output of
ip link ls.
It is natural to interpret link layer addresses
as addresses of the protocol family
Then the list of IP and IPv6 addresses follows, accompanied by additional address attributes: scope value (see Sec.5.1, p. above), flags and the address label.
Address flags are set by the kernel and cannot be changed administratively. Currently, the following flags are defined:
-- the address is not used when selecting the default source address of outgoing packets (Cf. Appendix A, p..). An IP address becomes secondary if another address with the same prefix bits already exists. The first address is primary. It is the leader of the group of all secondary addresses. When the leader is deleted, all secondaries are purged too.
-- the address was created due to stateless autoconfiguration .
In this case the output also contains information on times, when
the address is still valid. After
preferred_lft expires the address is
moved to the deprecated state. After
valid_lft expires the address
is finally invalidated.
-- the address is deprecated, i.e. it is still valid, but cannot be used by newly created connections.
-- the address is not used because duplicate address detection  is still not complete or failed.