【问题标题】:getting original MAC address using driver使用驱动程序获取原始 MAC 地址
【发布时间】:2013-02-22 07:36:52
【问题描述】:

Linux : uname -a :2.6.18 和 2.6.39

我是新手... 首次加载驱动程序时,在 ifconfig 可以更改 MAC 之前 地址,现有的(永久)MAC地址被存储起来,能够 通过此 ioctl 检索。

case ETHTOOL_GPERMADDR:
rc = ethtool_get_perm_addr(dev, useraddr);
break;

有人测试过吗?我可以获取代码或部分代码来实现它吗?

【问题讨论】:

    标签: c linux linux-kernel linux-device-driver device-driver


    【解决方案1】:

    像这样调用它:

    # ethtool -P eth0
    

    来自 ethtool 源(来自包 ethtool-debugsource-3.2-3.1.2.x86_64 的 ethtool.c):

    static int do_permaddr(struct cmd_context *ctx)
    {
            int i, err;
            struct ethtool_perm_addr *epaddr;
    
            epaddr = malloc(sizeof(struct ethtool_perm_addr) + MAX_ADDR_LEN);
            epaddr->cmd = ETHTOOL_GPERMADDR;
            epaddr->size = MAX_ADDR_LEN;
    
            err = send_ioctl(ctx, epaddr);
            if (err < 0)
                    perror("Cannot read permanent address");
            else {
                    printf("Permanent address:");
                    for (i = 0; i < epaddr->size; i++)
                            printf("%c%02x", (i == 0) ? ' ' : ':',
                                   epaddr->data[i]);
                    printf("\n");
            }
            free(epaddr);
    
            return err;
    }
    

    【讨论】:

    • 这几乎不取决于您的 NIC 类型。并且 ethtool 代码不适合。因为它不适用于许多设备
    猜你喜欢
    • 2013-12-03
    • 2018-09-04
    • 2013-05-05
    • 2015-07-24
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多