linux mac设置,linux mac设置获取

// shell里面执行

//ifconfig eth0 down

//ifconfig eth0 hw ether 98:2F:3C:0E:33:5B

//ifconfig eth0 up

int get_mac(int socket,char *arg)

{

char *mac = arg;

u_char * ptr;

struct ifreq ifr;

if (NULL == arg)

{

printf("(out)arg is null\n");

goto LAB_ERR;

}

bzero((char *)&ifr, sizeof(ifr));

strcpy(ifr.ifr_name,"eth0");

if (ioctl(socket,SIOCGIFHWADDR,&ifr) != 0)

{

printf("(out)SIOCGIFHWADDR failed: %s\n", strerror(errno));

goto LAB_ERR;

}

ptr =(u_char *)&ifr.ifr_ifru.ifru_hwaddr.sa_data[0];

sprintf(mac, "%02x%02x%02x%02x%02x%02x",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));

printf("mac=%s\n",mac);

return 0;

LAB_ERR:

return -1;

}

static int network_set_mac(int socket, char *mac)

{

struct ifreq ifr;

memset(&ifr, 0, sizeof(struct ifreq));

ifr.ifr_addr.sa_family = ARPHRD_ETHER;

strcpy(ifr.ifr_name, "eth0");

memcpy((void *)ifr.ifr_hwaddr.sa_data, mac, 6);

if (ioctl(socket, SIOCSIFHWADDR, &ifr)<0)

{

printf("CHMID_TCPIP_SetMAC SIOCSIFHWADDR failed;%s!\n",strerror(errno));

}

return 0;

LAB_ERR:

return -1;

}

int main(int argc, char *argv[])

{

//int ret=0,fd=-1;

//char buf='1';

int socket_fd;

int bReuseaddr=1;

char mac[20]={0};

socket_fd = socket(AF_INET,SOCK_DGRAM,0);

setsockopt(socket_fd, SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(int));

if (socket_fd < 0)

{

printf("(out)socket failed: %s\n", strerror(errno));

return -1;

}

get_mac(socket_fd,mac);

memset(mac,0,20);

//98:2F:3C:0E:33:5E

mac[0]=0x98;

mac[1]=0x2F;

mac[2]=0x3C;

mac[3]=0x0E;

mac[4]=0x33;

mac[5]=0x5E;

network_set_mac(socket_fd,mac);

get_mac(socket_fd,mac);

close(socket_fd);  return 0; }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值