2013-02-22 30 views
2

Linux的原始MAC地址使用uname -a:2.6.18以及2.6.39獲得使用驅動程序

我在很新... 當第一次加載驅動程序,之前的ifconfig可以改變MAC 地址,現有(永久)MAC地址被存儲,能夠通過這個ioctl檢索 。

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

有人測試過它嗎?我可以獲取代碼或代碼的一部分來實現它嗎?

回答

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; 
} 
+0

它幾乎取決於你類型的NIC。並且ethtool代碼不適用於此。因爲它在許多設備中不起作用 – 2013-02-23 05:31:41

相關問題