【问题标题】:Detect if IP is static or obtained from DHCP on busybox检测 IP 是静态的还是从busybox 上的 DHCP 获得的
【发布时间】:2009-10-08 11:37:42
【问题描述】:

我正在开发运行 BusyBox 的嵌入式设备。
系统正在使用 ip 命令获取其地址。 我想从我的 C 程序中弄清楚设备是否 ip 静态或从 DHCP 服务器接收。我该怎么做?

【问题讨论】:

  • 我认为您应该首先编辑您的问题,详细说明如何获取 IP 地址。我以为你运行的是 BusyBox 的 dhcp 客户端,但这似乎是错误的。

标签: c embedded dhcp


【解决方案1】:

我不知道您的用户如何与您的嵌入式系统交互。但是在我们的(相同的组件)上,我们有 CLI,它在每个接口的 SHM 结构 (db) 中注册选择的 DHCP/STATIC 类型设置。

基本上,您需要跟踪接口的 IP 是如何设置的。

【讨论】:

    【解决方案2】:

    dumpleases 命令应该显示当前的租约。我想如果你能确定你有一个 IP 地址,但没有租约,那么这个地址就是静态的。

    【讨论】:

    • 设备使用 ip 命令而不是 udhcp 获取其地址,因此 dumpleases 不起作用
    【解决方案3】:

    如果你控制环境,我建议设置一个环境变量,或者在设置 IP 地址时在可以统计的地方创建一个标志文件。

    【讨论】:

      【解决方案4】:

      查看this question 并检查 IFF_DYNAMIC 标志 - 当 DHCP 在接口上处于活动状态时可能会设置该标志。

      【讨论】:

      • IFF_DYNAMIC 表示拨号设备地址变化
      • 在 Solaris 中有 IFF_DHCPRUNNING 标志。有 Linux 等价物吗?
      猜你喜欢
      • 2011-06-23
      • 2015-10-14
      • 2020-08-04
      • 2012-09-25
      • 2015-03-10
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多