2013-05-17 73 views
7

我想知道最近收到的路由器廣告的m標誌和o標誌的值。從內核源代碼我知道m標誌和o標誌被存儲。其中m標誌和o標誌將存儲在Linux

/* 
    * Remember the managed/otherconf flags from most recently 
    * received RA message (RFC 2462) -- yoshfuji 
    */ 
    in6_dev->if_flags = (in6_dev->if_flags & ~(IF_RA_MANAGED | 
          IF_RA_OTHERCONF)) | 
          (ra_msg->icmph.icmp6_addrconf_managed ? 
            IF_RA_MANAGED : 0) | 
          (ra_msg->icmph.icmp6_addrconf_other ? 
            IF_RA_OTHERCONF : 0); 
    . 
    . 
    . 

然後我相信它必須可以使用ioctl或proc文件系統或任何其他方法檢索這些值。任何人都可以請指出這一點。

+0

你在用什麼語言工作? –

+0

當然我在C工作。 – theB

回答

3

最後我找到了方法。感謝Google,感謝Shirley Ma。請從我的博客獲取代碼http://kumaran127.blogspot.jp/2013/05/get-m-and-o-flag-of-most-recently.html

+0

在您的博客中,您提到了IBM提供的一些庫代碼。你可以鏈接到,也提前謝謝。 – thuovila

+1

以下是該代碼的鏈接[鏈接](http://dev.laptop.org/~mstone/sources/expanded_srpms/dhcpv6-0.10-44.fc7/dhcp-0.10/)(http://dev.laptop .ORG /〜msto​​ne /來源/ expanded_srpms/dhcpv6-0.10-44.fc7/DHCP-0.10 /)。我使用了netlink.c文件中的代碼。 – theB

1

我敢肯定你不會在procfs中發現這一點,但你可以分析這些數據包與radvdump:看http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/hints-daemons-radvd.html以及它是如何實現的參考:http://svn.dd-wrt.com/browser/src/router/radvd/radvdump.c?rev=11491。這裏是他們如何在原始創建過濾器ICMP6插座http://svn.dd-wrt.com/browser/src/router/radvd/socket.c?rev=11491然後用於聆聽。

乾杯

+0

請你解釋一下你是如何確定proc文件系統沒有這個信息的。並看到我分享的代碼。它很清楚,最近的RA標誌被存儲起來供將來參考(如RFC所指定的)。所以應該有一些方法來檢索它。 – theB

+1

下面列出了所有'procfs' [[/proc/sys/net/ipv6/](http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/proc-sys-net-ipv6)中的條目。的.html)。不幸的是,沒有列出RA旗幟的條目。 –

+1

您正在查看的源代碼可能會在*內核中存儲用法*的標誌。如果你想從用戶空間訪問這些標誌,你需要依賴一個守護進程,例如** radvd **,或者滾動你自己的內核模塊(不是特別難以完成)來將標誌打印到**/proc/**。 –