2

Linux : uname -a :2.6.18 および 2.6.39

私はそれに非常に慣れていません...ドライバーが最初にロードされると、ifconfigがMACアドレスを変更する前に、既存の(永続的な)MACアドレスが保存され、このioctlを介して取得できます。

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

誰かがそれをテストしましたか?コードまたはコードの一部を入手して実装できますか?

4

1 に答える 1

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;
}
于 2013-02-23T01:47:58.623 に答える