2011-07-01 11 views

答えて

1

[email protected]:/tmp/iproute-20100519/ip > ip -6 monitor 
2: eth0 inet6 2001:XXXX:XXXX:0:XXXX:XXXX:XXXX:XXXX/64 scope global dynamic 
     valid_lft 86400sec preferred_lft 14400sec 
prefix 2001:XXXX:XXXX::X/64 dev eth0 onlink autoconf valid 14400 preferred 131084 

(パラノイアのために取り外さいくつかの正確なアドレス):iproute2の一部である

ipユーティリティは、例えば、この情報を表示するように表示されるモニタモードを持っています。私はこのLANに設定されているフラグを持つRAを持っていませんが、99%はそこにも表示されることを確信しています。 straceとチャンスをうかがっ

が面白いの呼び出しがあるように見える示しています。だから、

int print_prefix(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg); 

int accept_msg(const struct sockaddr_nl *who, 
       struct nlmsghdr *n, void *arg) 
{ 
     // Snipped some unrelated stuff 
     if (n->nlmsg_type == RTM_NEWPREFIX) { 
       if (prefix_banner) 
         fprintf(fp, "[PREFIX]"); 
       print_prefix(who, n, arg); 
       return 0; 
     } 

} 

socket(PF_NETLINK, SOCK_RAW, 0)   = 3 
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0 
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0 
bind(3, {sa_family=AF_NETLINK, pid=0, groups=fffffff7}, 12) = 0 
getsockname(3, {sa_family=AF_NETLINK, pid=7151, groups=fffffff7}, [12]) = 0 
time(NULL)        = 1309595579 
send(3, "...", 20, 0) = 20 
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"...", 16384}], msg_controllen=0, msg_flags=0}, 0) = 864 

iproute2のソースは、ほとんどの作業を行うように見えるファイル、ip/ipmonitor.cを、持っています私はあなたがこれを使って解決策をまとめることができるはずだと思います。

+0

'onlink'と' autoconf'はプレフィックスフラグですが、otherconfとmanagerはプレフィックスフラグではありません。彼らはinet6_dev.if_flagsです – drizzt

関連する問題