7898|3

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vxworks如何修改mac地址 [复制链接]

 我这里有程序可以读到目标机的mac地址,可是我怎样去更改目标机的mac地址呢?请高人指点。附上读mac地址的代码,作为参考。
[code]#include "vxWorks.h"
#include "stdio.h"
#include "netinet/in.h"
#include "net/if.h"
#include "netinet/if_ether.h"
#include "sys/ioctl.h"
#include "ioLib.h"
#include "inetLib.h"
#include "string.h"
#include "netinet/in_var.h"
#include "ipProto.h"
#include "end.h"
#include "private/muxLibP.h"
extern struct in_ifaddr* in_ifaddr;


int
getmac()
{
  struct in_ifaddr* ia;
  for (ia = in_ifaddr; ia != 0; ia = ia->ia_next)
    {
      struct ifnet* ifp = ia->ia_ifa.ifa_ifp;
      if (ifp != 0)
        {
          int level;
          IP_DRV_CTRL *pDrvCtrl;
          END_OBJ *pEnd;
          unsigned char PhyAddr[10];

          if(ifp->if_type != M2_ifType_ethernetCsmacd)
            {
               continue;
            }
          level = intLock();

          pDrvCtrl = (IP_DRV_CTRL *)ifp->pCookie;

          pEnd = PCOOKIE_TO_ENDOBJ(pDrvCtrl->pIpCookie);

          pEnd->pFuncTable->ioctl(pEnd, EIOCGADDR, PhyAddr);
          printf("%x:%x:%x:%x:%x:%x\n", PhyAddr[0], PhyAddr[1], PhyAddr[2], PhyAddr[3], PhyAddr[4], PhyAddr[5]);

          intUnlock(level);
        }
    }
}
/code]

最新回复

看看奥  详情 回复 发表于 2009-9-22 14:49
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
  1. include "vxWorks.h"
  2. #include "stdio.h"
  3. #include "netinet/in.h"
  4. #include "net/if.h"
  5. #include "netinet/if_ether.h"
  6. #include "sys/ioctl.h"
  7. #include "ioLib.h"
  8. #include "inetLib.h"
  9. #include "string.h"
  10. #include "netinet/in_var.h"
  11. #include "ipProto.h"
  12. #include "end.h"
  13. #include "private/muxLibP.h"
  14. extern struct in_ifaddr* in_ifaddr;


  15. int
  16. getmac()
  17. {
  18.   struct in_ifaddr* ia;
  19.   for (ia = in_ifaddr; ia != 0; ia = ia->ia_next)
  20.     {
  21.       struct ifnet* ifp = ia->ia_ifa.ifa_ifp;
  22.       if (ifp != 0)
  23.         {
  24.           int level;
  25.           IP_DRV_CTRL *pDrvCtrl;
  26.           END_OBJ *pEnd;
  27.           unsigned char PhyAddr[10];

  28.           if(ifp->if_type != M2_ifType_ethernetCsmacd)
  29.             {
  30.                continue;
  31.             }
  32.           level = intLock();

  33.           pDrvCtrl = (IP_DRV_CTRL *)ifp->pCookie;

  34.           pEnd = PCOOKIE_TO_ENDOBJ(pDrvCtrl->pIpCookie);

  35.           pEnd->pFuncTable->ioctl(pEnd, EIOCGADDR, PhyAddr);
  36.           printf("%x:%x:%x:%x:%x:%x\n", PhyAddr[0], PhyAddr[1], PhyAddr[2], PhyAddr[3], PhyAddr[4], PhyAddr[5]);

  37.           intUnlock(level);
  38.         }
  39.     }
  40. }
复制代码
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我以前用860时是修改启动配置存储在FLASH上然后下次启动生效,后来写网口驱动觉可调用ioctl,你既然都用ioctl EIOCGADDR命令读出来了,当然也可以写,只要驱动做了这部分程序,就可以改。标准的templateEnd.c驱动模板中就有EIOCSADDR,
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
看看奥
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表