c linux设置mac地址,linux C 写MAC地址

// luo

//  gcc  mac.c

//  sudo ./a.out

// http://www.360doc.com/content/12/0406/08/1317564_201298802.shtml

// http://www.cnblogs.com/tzhangofseu/archive/2012/05/10/2493846.html #include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int  main()

{

struct ifreq ifreq;

int socket_id;

int ret, i;

char ifname[]="eth0";

char mac_addr[18] = "08:00:27:88:88:88";

char temp[6]= {0};

//==========================================

printf("ifconfig  eth0  down \n");

socket_id = socket(AF_INET,SOCK_STREAM,0);

strncpy(ifreq.ifr_name, ifname, IFNAMSIZ);

ifreq.ifr_flags &= ~IFF_UP;  // ifconfig   donw

//ifreq.ifr_flags |= IFF_UP; // ifconfig   up

ret = ioctl(socket_id, SIOCSIFFLAGS, &ifreq);

close(socket_id);

sleep(3);

//==========================================

socket_id = socket(AF_INET,SOCK_STREAM,0);

ifreq.ifr_addr.sa_family = ARPHRD_ETHER;

strcpy(ifreq.ifr_name, ifname);

sscanf(mac_addr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", \

&temp[0], &temp[1], \

&temp[2], &temp[3], \

&temp[4], &temp[5] );

for(i=0; i<6; i++)

{

//printf("%x:", temp[i]);

ifreq.ifr_hwaddr.sa_data[i]= temp[i];

printf("%x:", ifreq.ifr_hwaddr.sa_data[i]);

}

//    memcpy((unsigned char *)ifreq.ifr_hwaddr.sa_data, temp, 6);

ret = ioctl(socket_id, SIOCSIFHWADDR, &ifreq);

if(ret < 0)

{

perror("error ioctl");

return -1;

}

close(socket_id);

//==========================================

printf("ifconfig  eth0  up \n");

socket_id = socket(AF_INET,SOCK_STREAM,0);

strncpy(ifreq.ifr_name, ifname, IFNAMSIZ);

//ifreq.ifr_flags &= ~IFF_UP;  // ifconfig   donw

ifreq.ifr_flags |= IFF_UP;     // ifconfig   up

ret = ioctl(socket_id, SIOCSIFFLAGS, &ifreq);

close(socket_id);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值