ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – ethtool获取永久MAC地址返回全0

2019-08-12 21:54:12  阅读:957  来源: 互联网

标签:mac-address c linux networking ethernet


我需要读取网络适配器的永久(烧录)MAC地址.由于MAC地址很容易被欺骗,我需要读取写在EEPROM上的真实地址.我需要在Linux上使用C来完成它.

我尝试使用ethtool非常好,工作正常.但是在某些系统上,它不能像预期的那样工作.

ethtool -P eth0

返回:

Permanent address: 00:00:00:00:00:00

ethtool -e eth0

返回:

Cannot get EEPROM data: Operation not supported

网络适​​配器具有以下信息:

>司机:ucc_geth
>版本:1.1
> firmware-version:N / A.
> bus-info:QUICC ENGINE

Linux内核版本是:2.6.32.13

问题是:我能解决任何更新(驱动程序,内核等)的问题吗?

另外,我使用C中的ioctl函数进行相同的ethtool调用.有没有办法在代码中解决这个问题?或者还有其他方法可以从EEPROM获取永久MAC地址吗?

解决方法:

如果您信任本地计算机不要欺骗,ifconfig和ip addr都会为您提供硬件的MAC地址.

如果您不信任本地计算机,则ethtool,ifconfig和ip都不会为您提供所需的信息.由于MAC欺骗有非常合理的原因(例如,以太网卡上的热故障),所有驱动程序仅报告当前的“虚拟”MAC地址,因为如果您需要欺骗地址,则对某些工具不会有好处报告固件地址和其他报告软地址.没有ioctl可以或应该给你硬地址.

要获得硬地址,需要直接读取器件寄存器,因此完全取决于器件.

快速查看ucc_geth.c driver似乎表明芯片本身支持MAC地址重新分配(这是有道理的,因为它需要能够从以太网中发送到其软地址的数据包).这意味着您需要非常慎重地确保获得驱动程序自由地说出的硬地址:

/* For more details see the hardware spec.  */

标签:mac-address,c,linux,networking,ethernet
来源: https://codeday.me/bug/20190812/1643997.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有