m 标志和 o 标志将存储在 Linux 中的位置

Posted

技术标签:

【中文标题】m 标志和 o 标志将存储在 Linux 中的位置【英文标题】:Where m flag and o flag will be stored in Linux 【发布时间】:2013-05-12 15:28:36 【问题描述】:

我想知道最近收到的Router Advertisement的m flag和o flag的值。从内核源代码中我得知存储了 m 标志和 o 标志。

  /*
   * 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 文件系统或任何其他方法来检索这些值。谁能指点一下。

【问题讨论】:

你用什么语言工作? 当然我在 C 中工作。 【参考方案1】:

我终于找到了路。感谢 Google,感谢 Shirley Ma。请从我的博客http://kumaran127.blogspot.jp/2013/05/get-m-and-o-flag-of-most-recently.html获取代码

【讨论】:

在您的博客中,您提到了 IBM 的一些库代码。你也可以链接到那个吗,提前谢谢。 这里是该代码link (dev.laptop.org/~mstone/sources/expanded_srpms/…) 的链接。我使用了 netlink.c 文件中的代码。【参考方案2】:

我很确定您不会在 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 上,然后用于监听。

干杯

【讨论】:

您能否解释一下您是如何确定 proc 文件系统没有此信息的。并查看我共享的代码。它非常清楚,最新的 RA 标志被存储以供将来参考(如 RFC 所指定)。所以应该有办法找回它。 这是所有procfs entries in /proc/sys/net/ipv6/ 的列表。不幸的是,没有为 RA 的标志列出条目。 您正在查看的源代码可能存储了内核中使用的标志。如果你想从用户空间访问这些标志,你需要依赖诸如 radvd 之类的守护进程,或者滚动你自己的内核模块(不是特别难完成)来打印出标志到 /proc/. 否,标志不存储供内核内部使用。根据 RFC,dhcp6 客户端应根据最近收到的 RA 的 M 和 O 标志启动。所以这些标志是为 dhcp6 客户端的目的而存储的。所以应该有某种方法来检索它。您还可以阅读有关 Netlink 套接字的信息以了解更多信息。我正在使用 radvd 发送 RA。我不想手动读取这些值。我需要检查它并在我的代码中启动我的 dhcp6 客户端。 请原谅我的困惑,我对网络不是特别熟悉,您是想完全在用户空间中获取标志,还是在内核空间中获取标志,然后通过ioctlprocfs 传递到用户空间,等等?

以上是关于m 标志和 o 标志将存储在 Linux 中的位置的主要内容,如果未能解决你的问题,请参考以下文章

linux 生成的.o文件为啥带锁标志

open(2) 中的 O_SYNC 和 O_DIRECT 标志有何不同/相似?

链接程序时是不是需要重复编译标志?

`ssh-keygen` 中的 `-o` 标志有啥作用?

如何将标志从一个 __m256 中的浮点数复制到另一个 __m256 中? [复制]

Linux应用开发:文件IO进阶