我正在寫大概需要本地計算機的接口,就像通過一個簡單的「使用ifconfig」命令重新調校的那些信息的內核模塊,我已經搜查了很多的,但找不到任何有沒有一個內核模塊能夠返回一個簡單的'ifconfig'呢?
2
A
回答
5
你可以通過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 = ifa1->ifa_next) {
ifap->ifa_address; // is the IPv4 address
}
(所有這些是不編譯測試,所以錯別字是可能)
+0
好吧,我想獲得接口的IP地址,MAC地址,狀態,錯誤的數據包數量和丟失的數據包,並且有什麼方法可以在此接口上獲得鏈接的速度或帶寬? – 2012-04-12 15:40:58
0
例如,請參閱函數net/ipv6/addrconf.c
以瞭解如何獲取地址。對於鏈接屬性,如鏈接層地址,請參見core/rtnetlink.c
。 ifconfig及其ioctls已經過時(在Linux上),所以最好不要認爲現在是bug瀰漫的程序。
相關問題
- 1. 有沒有一個libnfc android可加載內核模塊?
- 2. 從活動中返回一個值 - 有沒有一個好的做法呢?
- 3. 有沒有辦法簡單地返回一個BlockingCollection
- 4. 可疑返回代碼加載簡單的內核模塊
- 5. 有一個簡單的JavaScript滑塊嗎?
- 6. SSRS一個模型返回數據另一個沒有
- 7. 有沒有簡單的方法來返回一個異常的任務?
- 8. 有沒有一個模塊來管理Node.JS中的簡單博客?
- 9. 有沒有像返回一個函數?
- 10. 怎樣包括一個模塊(該模塊內部有一個模塊)的另一模塊內用Ruby
- 11. 如何建立一個內核模塊
- 12. 一個模塊中的功能,我進口的回報有沒有定義
- 13. 創建簡單的內核模塊
- 14. 有沒有可能mongodb的$ project返回一個數組?
- 15. 有沒有辦法讓內核模塊找到另一個加載模塊的段地址?
- 16. 從pyopencl內核返回一個結果
- 17. XSL-FO - 空塊元素有一個很簡單的模板
- 18. 是否有一個ruby方法只返回一個塊的值?
- 19. py2exe - 沒有一個系統模塊「pywintypes」
- 20. 如何在沒有DAL的情況下創建一個簡單的Dotnetnuke模塊
- 21. requirejs返回一個帶有attach和notNeeded方法的模塊
- 22. 如何使一個Linux內核模塊依賴於具有depmod的另一個外部模塊?
- 23. 返回一個NSArray沒有泄漏?
- 24. mysqli :: prepare沒有返回一個對象?
- 25. GetWindowRect()沒有返回一個矩形
- 26. 我沒有返回一個字符串?
- 27. PHP mt_rand沒有返回一個整數
- 28. 有沒有一個簡單的數組,並似乎有一個編譯錯誤
- 29. 在一個Pod中嵌入一個沒有模塊的框架
- 30. 有沒有做一個特定的線程中的OpenCL內核
檢查ifconfig的源代碼並查看它的作用(或者使用strace進行檢查),然後檢查Linux內核源代碼,瞭解執行這些系統調用時網絡驅動程序的功能。例如ioctl SIOCGIFHWADDR,SIOCGIFADDR等。 – 2012-04-12 13:41:45
例如,檢查net/core/dev.c函數__dev_get_by_name()看起來很有趣。你可以使用它並從返回的結構中獲取關於接口的一些信息。 – 2012-04-12 13:49:45