社区
VxWorks
帖子详情
VxWorks 6.6 实现以太网帧的发送
ysuzyc
2012-10-21 06:04:15
小弟想用mux层去直接发送以太网帧,但却不知道具体怎么做,希望各位大侠给点指导啊~~,可以有偿提供代码啊!!!
...全文
3225
10
打赏
收藏
VxWorks 6.6 实现以太网帧的发送
小弟想用mux层去直接发送以太网帧,但却不知道具体怎么做,希望各位大侠给点指导啊~~,可以有偿提供代码啊!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
阿莉派
2015-06-14
打赏
举报
回复
楼主能分发一份获取以太网帧的代码吗?
ambercctv
2012-10-31
打赏
举报
回复
主机的防火墙关了嘛?
viphj
2012-10-30
打赏
举报
回复
Waiting for the answer
zhenghn2010
2012-10-30
打赏
举报
回复
ping 其他网段不通? 抓包看了吗,真的发出去了吗?
要明白tcp/ip数据报文发送的基本过程。
如果是同一网段的,能找到相应路由项,就从相应的接口发送出去,包括arp, ping等。
如果不是同一网段,就要找默认路由,从这个接口发送出去,目的方是默认网关/路由,是同一网段的,然后由这个网关实现转发。
你看看你的路由表,是否有默认路由,是否正确。
ysuzyc
2012-10-28
打赏
举报
回复
to huangdx13:TCP UDP都是在IP之上,以太网数据帧是在IP之下,是数据链路层,所以TCP、UDP是无法实现以太网帧的发送的。
目前已经完成IP数据的转发。并且在开发过程中,实现了arp欺骗以及对任意子网网段内的ping的回复。但是对子网段外的ping无法回复,不知道怎么回事。如局域网掩码为255.255.255.0;vxworks ip :10.2.120.2,PC IP:10.2.120.5;PC ping 10.2.120.x都能ping通(PC只与VXWorks相连),但ping其他ip 如 ping 10.2.2.2就ping不通,不清楚怎么回事啊!!
hdxccc
2012-10-28
打赏
举报
回复
个人认为利用UDP或者TCP协议就可以对以太网的数据帧进行传送了。
ysuzyc
2012-10-27
打赏
举报
回复
谢谢楼上啊,目前以太网包的抓取和转发已经实现了。现在我想实现对ping的回复,我直接将接受到的icmp报文的''类型''区设置为0,将ip报文的源ip和目的ip互换,添加以太桢头发送出去(确定已经发出去),可ping的发起端却收不到回复。不知道怎么回事啊!请大侠帮我分析分析吧
ysuzyc
2012-10-23
打赏
举报
回复
帖子很冷清啊
sxyandsl
2012-10-23
打赏
举报
回复
可以的,比较麻烦,你要自己添加IP报文头和相关协议报文头,网上有现成的步骤
1、首先进行绑定,将需要发送接收的绑定到程序中(在说明中都说绑定到驱动上,其实在应用程序中也是可以的,只是感觉破坏了程序的结构,但是在一些实时任务中,为了保证程序的延时小于毫秒级,也就直接发送数据给MUX层)
/*测试mux发送*/
pSlot->pSendCookie=muxBind("motfcc",0,(FUNCPTR)stackRcvRtn,NULL,NULL,NULL,
MUX_PROTO_SNARF,"RealUDP",NULL);
if(NULL == pSlot->pSendCookie)
{
LOG_Dbg_Msg("MUX bind fail./n", 0, 0, 0, 0, 0, 0);
pSlot->pSendCookie = NULL;
return ERROR;
}
2、根据绑定的结果获取获取的发送MUX ID
/*获取发送数据ID*/
pEnd = ((MUX_ID)gpSlotTest->pSendCookie)->pEnd;
if(NULL == pEnd)
{
LOG_Dbg_Msg("pEnd is NULL./n", 0, 0, 0, 0, 0, 0);
muxUnbind(gpSlotTest->pSendCookie,MUX_PROTO_PROMISC,(FUNCPTR)stackRcvRtn);
gpSlotTest->pSendCookie = NULL;
return ;
}
3、申请发送数据的数据缓冲区,同时进行缓冲区的设置。将报文复制之后,该缓冲区可以直接发送。
/*获取网络数据缓冲区*/
pMblk = netTupleGet (pEnd->pNetPool, 1480, M_DONTWAIT, MT_DATA, FALSE);
if(NULL == pMblk )
{
LOG_Dbg_Msg("can't get net pool flag./n", 0, 0, 0, 0, 0, 0);
return ;
}
pMblk->mBlkHdr.mFlags |= M_PKTHDR;
pMblk->mBlkHdr.mLen = 0;
pMblk->mBlkHdr.mData = pMblk->pClBlk->clNode.pClBuf;
3、数据的发送,首先进行发送报文内容的复制,在将报文发送;在MUX这个发送,如果发送成功将不需要进行报文的释放,而如果发送失败缓冲区是需要手动的将这个缓冲区释放。
pData = pMblk->mBlkHdr.mData;
bcopy(gpSlotTest->pDataBuf,pData,sizeof(cTempBuf));
pMblk->mBlkHdr.mLen = sizeof(cTempBuf);
pMblk->mBlkPktHdr.len = pMblk->mBlkHdr.mLen;
if(muxSend(gpSlotTest->pSendCookie,pMblk)!=OK)
{
LOG_Dbg_Msg("socket is invalid./n", 0, 0, 0, 0, 0, 0);
netMblkClChainFree(pMblk);
//muxUnbind(SendCookie,MUX_PROTO_PROMISC,(FUNCPTR)stackRcvRtn);
return ;
}
ysuzyc
2012-10-21
打赏
举报
回复
自己顶一下
vxWorks
6.6下基于vxBus的以
太
网
驱动开发
从中断中捕获报文分析,测试以
太
网
发送
报文 LOCAL int etsecEndEncap ( ETSEC_DRV_CTRL * pDrvCtrl, M_BLK_ID pMblk ) { ETSEC_DESC * pDesc = NULL, * pFirst; ETSEC_TX_FCB * pFcb; M_BLK_ID pCurr, pStart; UINT...
VxWorks
-6.6系统下,ARP包对FTP转储的影响
4、解决方式:在PC机对插件进行FTP拷贝文件时,增加插件对端通信的IP地址(本例是192.168.10.20),防止插件不断
发送
ARP包,问题得以解决 5、推测:
VxWorks
的
网
络协议栈中,
网
络内存池中承载以
太
网
包的数目是固定的...
VxWorks
Fuzzing 之道:
VxWorks
工控实时操作系统漏洞挖掘调试与利用揭秘
VxWorks
是世界上使用最广泛的一种在嵌入式系统中部署的实时操作系统,是由美国WindRiver公司(简称风河公司,即WRS 公司)于1983年设计开发的。其市场范围跨越所有的安全关键领域,仅举几例,包括火星好奇心流浪...
VxWorks
技术资料免费下载
VxWorks
技术资料免费下载,资源来源
网
络,版权归原作者所有!
vxworks
双
网
卡冗余
vxworks
系统下xia
VxWorks
2,180
社区成员
2,916
社区内容
发帖
与我相关
我的任务
VxWorks
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
复制链接
扫一扫
分享
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章