我正在編寫一個內核模塊,它在ip級別形成自己的數據包,然後發送數據。我只想知道如何找到本地網絡接口的IP地址。從內核模塊獲取本地網卡的IP地址
回答
定義了ioctl SIOCGIFADDR
(獲取地址)和SIOCSIFADDR
(設置地址)。
IPv4的所有設備配置都在net/ipv4/devinet.c
中完成。你可以參考這個源文件來獲取更多信息。
我想在內核空間使用ioctl的IP地址.....我怎麼能做到這一點..please告訴通過編寫代碼 – karan421 2012-03-30 14:50:40
想讀取設計問題的接口地址reeks。但是,如果您正在尋找在struct rt6_info.rt6i_prefsrc
中與ip6_route_output
獲得聯繫時確定聯繫遠程對等方時使用的首選源地址。沿着線的東西(沒有隱含的擔保):
int pick_addr(struct in6_addr *saddr, struct net *net, const struct in6_addr *daddr)
{
struct rt6_info *rt;
struct flowi6 fl6;
int ret;
memset(&fl6, 0, sizeof(fl6));
memcpy(&fl6.daddr, daddr, sizeof(*daddr));
dst = (struct rt6_info *)ip6_route_output(net, NULL /* or sk if you have it */, &fl6);
ret = rt->dst.error;
if (ret == 0)
memcpy(saddr, &rt->rt6i_prefsrc.addr, sizeof(*saddr));
dst_release(&rt->dst);
return ret;
}
這段代碼似乎是ip 6我需要ip 4 – karan421 2012-03-30 16:34:58
這是類似的IPv4(請參閱net/netfilter/xt_TEE.c的骨架)。 prefaddr然後在'struct rtable.rt_src' AFAICS中。 – 2012-03-30 16:42:31
我們有if_getconfig功能的linux-XYZ /文檔/網絡/ ifenslave.c文件可這是怎樣一個很好的例子使用ioctls並從內核空間獲取地址
- 1. 獲取本地IP地址
- 2. 從網址獲取IP地址
- 3. 從ARP條目(Linux內核)獲取給定IP的MAC地址
- 4. 從Hazelcast網格獲取主IP地址
- 5. 如何從網絡上的IP地址獲取MAC地址?
- 6. 如何在內核模塊開發下解析IP地址的Mac地址?
- 7. 獲取網卡地址
- 8. 從arp獲取IP地址
- 9. 從bssid獲取IP地址
- 10. 如何獲取內核模塊nt和win32k的地址?
- 11. 如何獲取內核模塊的地址(使用insmod加載)
- 12. 模仿本地IP地址
- 13. 獲取本地IP地址在Delphi
- 14. 獲取非本地IP地址Java
- 15. 使用Boost.Asio獲取本地IP地址
- 16. 獲取IP地址
- 17. 獲取IP地址
- 18. 獲取IP地址
- 19. 從IP地址獲取地理位置
- 20. 獲取IP地址的mac地址
- 21. 從本地網絡的IP地址獲取本機網絡上的機器MAC地址#
- 22. 如何獲取WindowsStore Apps的本地網絡IP地址
- 23. 獲取套接字/網絡接口的本地IP地址
- 24. 獲取C#中以太網接口的本地IP地址
- 25. 使用java獲取本地網絡的IP地址
- 26. 獲取本地地址而不是IP地址的WebService
- 27. 塊IP地址
- 28. 獲取網絡用戶的IP地址
- 29. 通過IP地址獲取本地主機網頁
網絡接口可以(並且將會)接收來自許多不同發件人的數據包。您從收到的數據包中獲得發件人。 – 2012-03-30 10:20:40
@JoachimPileborg我想要我的接口的IP地址。沒有爲我的界面獲取IP地址的功能。我不想捕獲RX包,並從那裏採取,因爲我會產生交通 – karan421 2012-03-30 10:24:50
我編輯的問題和標題,使其更清晰。 – 2012-03-30 10:49:00