Linux : uname -a :2.6.18 和 2.6.39
我对它很陌生...当第一次加载驱动程序时,在 ifconfig 可以更改 MAC 地址之前,现有的(永久)MAC 地址被存储起来,可以通过这个 ioctl 检索。
case ETHTOOL_GPERMADDR:
rc = ethtool_get_perm_addr(dev, useraddr);
break;
有人测试过吗?我可以获得代码或代码的一部分来实现它吗?
Linux : uname -a :2.6.18 和 2.6.39
我对它很陌生...当第一次加载驱动程序时,在 ifconfig 可以更改 MAC 地址之前,现有的(永久)MAC 地址被存储起来,可以通过这个 ioctl 检索。
case ETHTOOL_GPERMADDR:
rc = ethtool_get_perm_addr(dev, useraddr);
break;
有人测试过吗?我可以获得代码或代码的一部分来实现它吗?
像这样调用它:
# 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;
}