隨機配置一個mac地址,發現有的會報出Cannot assign requested address。
錯誤碼是EADDRNOTAVAIL。
檢查不是組播地址也不是全0地址。
組播地址就是第一個字節最低位為1,問題就是在這里。
發現第一個字節最低位為1時該函數就會返回0,driver中的set_mac_addr就會返回EADDRNOTAVAIL錯誤碼。
嚴格來說mac地址對於每塊網卡是固定的,每塊網卡被生產出來后,都會有一個全球唯一的編號來標識自己,不會重復,
這個編號就是MAC地址,也就是網卡的物理地址。MAC地址是由48位的二進制數組成,即6個字節。在通信中是用16進制表示的。
前24位是由生產廠家向IEEE標准組織申請的廠家代碼,是固定的,但是第一個字節的最低位一定是0,因為網卡的物理地址,一定是單播地址,
在IPv4的環境中,區分單播和組播地址就是校檢最低位的二進制數字,0代表單播地址,1代表組播地址。
也就是說第二個數字一定是0、2、4、6、8、A、C、E其中的一個。
所以mac地址雖然可以修改,但是不要亂改,要按照廠商規定來修改,以免重復。
---------------------
作者:kerneler_
來源:CSDN
原文:https://blog.csdn.net/skyflying2012/article/details/40322563
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!