交換機,linux系統
在協議堆疊內進行資料截取,如果是發往本機的資料就不處理,
所以需要獲取到"br0"的MAC地址與資料包的目的MAC進行比較判斷
請問在協議堆疊內如何獲取本機"br0"的mac ??
uj5u.com熱心網友回復:
自己找到了方法, 用 dev_get_by_name(&init_net,"br0") 可以獲取到net_device結構體, 里面的 dev_addr 引數就是MAC地址uj5u.com熱心網友回復:
。學習了。這個函式一直在用,直到看了這篇文章才知道net_device結構體含有mac地址,見識淺薄啊,之前嘗試獲取mac地址的時候是采取這樣的方法,根據進來的報文目的ip地址匹配本機IP后獲取其目的mac的方式。這里想問樓主一下, 假如本機有多個介面,例如eth0, eth1...,那該如何在內核層面獲取所有介面呢,
uj5u.com熱心網友回復:
我去,這個不是內核原始碼區嗎?uj5u.com熱心網友回復:
再添加一些內容,net_device結構體的填充是在執行netdev_add函式的時候進行的,具體在網卡驅動的probe函式那邊應該uj5u.com熱心網友回復:
用函式is_etherdev_addr就可以判斷資料表的目的mac是不是本機的mac了。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/60366.html
標籤:內核源代碼研究區
