如何检测IPv6全局地址是否已弃用?

时间:2016-01-20 08:58:13

标签: embedded-linux ipv6

我能够检测到所有IP地址,但我想检测哪些IPv6地址已被弃用。我怎么能用C代码呢?可能在/proc/net/if_inet6中有这些信息,但我不确定此文件中的第五列是否表明了这一点。这是我的/proc/net/if_inet6文件。

fdc2714277b700009422b252a33ddc6a 02 40 00 21     eth0
fdc2714277b70000021a4dfffedd455f 02 40 00 00     eth0
00000000000000000000000000000001 01 80 10 80       lo
fe80000000000000021a4dfffedd455f 02 40 20 80     eth0
fdc2714277b70000ec3e4b537af7f419 02 40 00 01     eth0

在第五栏中输入 21 的是我弃用的IPv6地址,第五栏中的 01 条目是我当前的临时IPv6地址。

1 个答案:

答案 0 :(得分:0)

你是对的。该列是包含标志的十六进制值。标志在rtnetlink.h

中定义
#define IFA_F_SECONDARY 0x01
#define IFA_F_DEPRECATED 0x20
#define IFA_F_TENTATIVE 0x40
#define IFA_F_PERMANENT 0x80

因此,带有标志值21的地址是不推荐使用的辅助地址。