我正在製作一個模塊,在該模塊中我需要網絡接口的mac地址。有沒有什麼功能,我可以找到沒有在用戶空間執行ioctl的mac地址。從內核空間查找網絡接口的mac地址
1
A
回答
3
您不指定您正在使用的內核版本。這是基於最新的3.something版本,但它應該是非常相似的舊版本:
假設你有struct net_device(如果你不這樣做,你可能做錯了),你可以只要看看dev_addrs字段。它包含所有設備硬件地址的列表。
include/linux/etherdevice.h中的is_etherdev_addr函數可能是一個關於如何讀取它的好例子。
-1
請參閱下面的代碼:
struct ifreq tmp;
struct socket * sock = NULL;
struct net_device *dev = NULL;
struct net *net;
int retval;
char mac_address[6];
retval = sock_create(AF_INET, SOCK_STREAM, 0, &sock);
net = sock_net(sock->sk);
dev = dev_get_by_name_rcu(net,"eth0");
memcpy(&mac_address,dev->dev_addr,6);
sock_release(sock);
0
可以遍歷所有netdev
可用的系統,並得到他們的名字和互助:
#include <linux/netdevice.h>
...
struct net_device *dev;
for_each_netdev(&init_net, dev) {
pr_info("Interface %s with MAC %02x:%02x:%02x:%02x:%02x:%02x\n"
, dev->name
, dev->dev_addr[0]
, dev->dev_addr[1]
, dev->dev_addr[2]
, dev->dev_addr[3]
, dev->dev_addr[4]
, dev->dev_addr[5]
);
}
請參閱hwaddr-rand完整示例的源代碼。
相關問題
- 1. 查找網絡地址
- 2. 如何獲取WiFi網絡接口的MAC地址?
- 3. 打印出網絡接口上顯示的每個MAC地址?
- 4. 從內核空間傳遞地址到用戶空間
- 5. 從接口名稱查找IP地址
- 6. 查找MAC地址
- 7. 如何從網絡上的IP地址獲取MAC地址?
- 8. QEMU/KVM網絡接口地址
- 9. linux內核和用戶地址空間
- 10. linux內核的內核地址空間的佈局是什麼?
- 11. 知道從mac地址接口snmp
- 12. 如何在網絡地址/網絡掩碼中寫入以下地址空間?
- 13. 如何在java中獲取當前網絡連接的接口mac地址?
- 14. 查找連接到同一網絡的設備的IP地址和端口
- 15. 修改IP和MAC-地址的網絡
- 16. 獲取套接字/網絡接口的本地IP地址
- 17. 處理虛擬地址空間和內核地址空間?怎麼樣?
- 18. 檢查是否可以從linux內核空間訪問內存地址
- 19. 從內核空間配置串口
- 20. 如何查找網絡接口名稱
- 21. Python掃描網絡IP地址和mac
- 22. 特定MAC地址掃描網絡 - Android
- 23. Ping網絡並獲取mac地址
- 24. 從網絡設備的IP地址列表中查找打印機IP地址
- 25. 從網絡上的IP地址查找特定計算機
- 26. 從本地網絡的IP地址獲取本機網絡上的機器MAC地址#
- 27. 從IPv4地址獲取網絡接口名稱
- 28. 接收到的可用WiFi網絡的MAC地址不正確
- 29. Arduino搜索網絡的IP地址,並獲得MAC地址
- 30. 獲取內置WiFi網絡的MAC地址
arp_find()似乎工作,如果條目已經被學會,但顯然它被depricated。 – 2012-03-31 11:41:56