所以我有創建Linux TAP接口的Python代碼,但它總是隨機出現一個自動生成的MAC地址。爲了簡化測試,我想在初始化後爲接口手動分配一個MAC地址。我知道我可以用SIOCSIFHWADDR
ioctl和struct ifreq
來做到這一點,但是我有幾個關於實現的問題。如何調用SIOCSIFHWADDR ioctl在Python中更改MAC地址?
這裏是C結構:
struct ifreq
{
# define IFHWADDRLEN 6
# define IFNAMSIZ IF_NAMESIZE
union
{
char ifrn_name[IFNAMSIZ]; /* Interface name, e.g. "en0". */
} ifr_ifrn;
union
{
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
struct sockaddr ifru_netmask;
struct sockaddr ifru_hwaddr;
short int ifru_flags;
int ifru_ivalue;
int ifru_mtu;
struct ifmap ifru_map;
char ifru_slave[IFNAMSIZ]; /* Just fits the size */
char ifru_newname[IFNAMSIZ];
__caddr_t ifru_data;
} ifr_ifru;
};
現在我認爲我只需要填寫hwaddr
領域,但是這是一個聯盟,我不知道如何在Python中創建的結構。
調用SIOCSIFHWADDR
ioctl和struct ifreq
以在Python中更改接口的MAC地址的最佳方式是什麼?
謝謝!
你想在Python或C? – 2011-05-27 16:12:29
在Python中,我的主要問題是構建傳遞給ioctl的結構。 – 2011-05-27 16:15:43