设为首页 加入收藏

TOP

50.Linux-分析ifconfig到内核的调用过程,实现内核启机自动设MAC地址(原)(二)
2019-09-03 02:25:19 】 浏览:46
Tags:50.Linux-分析 ifconfig 内核 调用 过程 实现 自动 MAC 地址
name,&(slave_hwaddr.ifr_hwaddr))->   ioctl (skfd, SIOCSIFHWADDR, &ifr) -> dev_ifsioc(net, &ifr, cmd)-> dev_set_mac_address(dev, &ifr->ifr_hwaddr) -> //设置网卡MAC地址 dev->netdev_ops->ndo_set_mac_address(dev, &ifr->ifr_hwaddr);                 //最终调用net_device的ops成员函数实现设置

 

6.实现内核开机自动设置固定MAC地址

流程分析完后,接下来我们便来实现它.

6.1以我们板卡的dm9000网卡为例

我们找到register_netdev()位置,位于drivers/net/Ethernet/davicom/dm9000.c的dm9000_probe函数里:

 

6.2 然后在register_netdev()函数下面添加代码:

struct       sockaddr  hwaddr;                   //用来存储MAC地址的结构体

rtnl_lock();
ret =dev_close(jz_ndev);                          //首先需要关闭网卡,以防万一
rtnl_unlock();

hwaddr.sa_family = ndev->type; 

hwaddr.sa_data[0]=0x12;                      //注意,data[0]最低位不能为1,也就是首位不能为奇数
hwaddr.sa_data[1]=0x34;
hwaddr.sa_data[2]=0x56;
hwaddr.sa_data[3]=0x78;
hwaddr.sa_data[4]=0x90;
hwaddr.sa_data[5]=0xab;              

rtnl_lock();
ret = dev_set_mac_address(jz_ndev,&hwaddr);  //调用我们分析到的函数,来设置mac地址
rtnl_unlock();

6.3 编译-试验

 启动后输入ifconfig,即可看到内核已经帮我设置好了:

 

 

  • 总结:  其实实现的代码很简单,但是需要去分析才能把东西消化为自己的.

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux配置防火墙端口 8080端口 下一篇C-Linux_毫秒级随机值获取

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目