vxworks下调试网络----icmp记录(不完善)

9 篇文章 0 订阅
9 篇文章 0 订阅

ICMP协议分析

ICMP网络协议:工作在TCP/IP的网络层,请求类型为8,应答类型为0

Host主机向目标板ping命令的数据流向

在执行ping命令时:

ipcom_drv_eth_recv_end2 ---> ipcom_drv_eth_output

ipnet_queue_received_packet不会走

ipnet_icmp4_input函数会接收到主机ping的数据包,根据数据的类型,如果是8,设置应答类型,使用ipnet_icmp4_send函数,将准备好的数据发送出去

ipnet_ip4_local_rx

初始化流程

ipAttach ---> ipcom_drv_eth_init ---> ipcom_drv_eth_bind ---> mux2Bind ---> muxBindCommon ---> muxEndProtoRegister

协议栈分析简要:

协议栈中最主要的结构体Ipnet_netif和Ipcom_pkt;Ipnet_netif主要于网卡驱动有关,在使用ipAttach绑定网卡时创建并且添加Ipnet_netif到ipcom_port变量中, Ipcom_pkt主要是在接收或发送网络数据时使用,mux2OverEndReceive函数中会获取Ipnet_netif结构体,

Ipcom_pkt主要用于网络数据的接收,在

ipnet_ip4_init函数初始化

ipnet_ip4_transport_layer_rx 的默认值为ipnet_ip4_unsupported_transport_layer_rx

ipnet_ip4_transport_layer_rx

ipnet_ip4_transport_layer_rx[1] = ipnet_icmp4_input

ipnet_ip4_transport_layer_rx[2] = ipnet_igmp_input

ipnet_ip4_transport_layer_rx[3] =

ipnet_ip4_transport_layer_rx[4] = ipnet_tunnel_ip4_rx

ipnet_ip4_transport_layer_rx[6] = iptcp_ip4_rx

ipnet_ip4_transport_layer_rx[17] = ipnet_udp_ip4_rx

ipnet_ip4_transport_layer_rx[47] = ipnet_tunnel_ip4_rx

ipnet_ip4_transport_layer_rx[55] = ipnet_tunnel_ip4_rx

ipnet_ip4_transport_layer_rx[103] = ipnet_pim_ip4_rx

        

分析过程

在ipcom_drv_eth_output入口处添加taskSuspend(0),使用tt得出以下调用关系(标注绿色是自己反汇编的函数)

0xc0764480 jobQueueProcess+0x178: 0xc0563fe0 ()   synEndRxHandle

0xc0564198 synopGMAC_reset+0x638: 0xc044ba84 ()  muxReceive

0xc044bb3c muxReceive   +0xbc : 0xc0651520 ()     mux2OverEndReceive

0xc06515f4 mux2OverEndInit+0x13c: 0xc0761460 ()   ipcom_drv_eth_recv_end2

0xc07614bc trcStackTrace+0x64c: ipcom_pkt_input ()

0xc0761950 ipcom_pkt_input+0x2c : ipnet_pkt_input ()

0xc0403fd8 ipnet_pkt_input+0x1d4: 0xc0761968 ()    ipnet_eth_rx

0xc076234c ipcom_pkt_input+0xa28: ipnet_ip4_input ()

0xc0762f90 ipnet_ip4_input+0x4cc: ipnet_ip4_rx ()

0xc0762aa4 ipnet_ip4_rx +0x188: 0xc040f5e0 ()      ipnet_ip4_local_rx

0xc040fa24 ipnet_ip4_fragment_timeout_peer+0x13b0: 0xc041bcbc ()  ipnet_icmp4_input

0xc041bfcc ipnet_ip4_pkt_with_iphdr_rawsock_tx+0xd44: ipnet_icmp4_send ()

0xc041698c ipnet_icmp4_send+0x1008: 0xc040f028 ()       ipnet_ip4_local_tx

0xc040f388 ipnet_ip4_fragment_timeout_peer+0xd14: 0xc07624fc ()    ipnet_eth_tx

0xc07626a8 ipcom_pkt_input+0xd84: ipnet_if_output ()

0xc0764ccc ipnet_if_output+0x10c: ipnet_if_drv_output ()

0xc0764a24 ipnet_if_drv_output+0x8c : 0xc0761524 ()   ipcom_drv_eth_output

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是一个人的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值