linux - 是否有一个内核模块可以准确地返回简单的 'ifconfig' 的作用?

标签 linux kernel-module network-interface

我正在编写一个内核模块,它需要有关本地机器接口(interface)的信息,就像通过简单的“ifconfig”命令返回的接口(interface)一样,我已经搜索了很多,但找不到任何东西

最佳答案

您可以通过 struct net_device 以某种方式获取所有这些信息。 正如 Albert Veli 所说,您可以使用 __dev_get_by_name() 获取此 struct net_device 指针。

如果您告诉我们您具体需要哪些信息,我们甚至可以为您指明正确的字段。

查找 MAC 地址非常简单:

struct net_device *dev = __dev_get_by_name("eth0");
dev->dev_addr; // is the MAC address
dev->stats.rx_dropped; // RX dropped packets. (stats has more statistics)

找到 IP 地址比较困难,但并非不可能:

struct in_device *in_dev = rcu_dereference(dev->ip_ptr);
// in_dev has a list of IP addresses (because an interface can have multiple)
struct in_ifaddr *ifap;
for (ifap = in_dev->ifa_list; ifap != NULL;
         ifap = ifap->ifa_next) {
    ifap->ifa_address; // is the IPv4 address
}

(这些都没有经过编译测试,所以可能会出现拼写错误。)

关于linux - 是否有一个内核模块可以准确地返回简单的 'ifconfig' 的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124721/

相关文章:

Linux 内核构建 : Perform "make localmodconfig" non-interactive way

c - 在 LKM 中使用 ELF 部分

.net - 如何在.NET中以编程方式选择连接到互联网的网卡

linux - 为什么UDP数据包是从默认接口(interface)地址发送的,而不是从接收客户端数据包的地址发送的?

windows - Windows7可以配置虚拟网络接口(interface)吗?

linux - 使用多个输入和输出文件运行 .out?

python - 将文件名拆分为part1和part2并创建目录part1并将文件part2放入part1目录的脚本

linux - 在 tmux 中绑定(bind) Ctrl+Tab 和 Ctrl+Shift+Tab

c - 如果在取消点调用信号处理程序会发生什么?