简单化后的netif
struct netif {
struct netif *next; //显然可以存在多网卡组成单向链表.
#if LWIP_IPV4
ip_addr_t ip_addr;
ip_addr_t netmask;
ip_addr_t gw;
#endif /* LWIP_IPV4 */
netif_input_fn input; //网卡数据接收回调函数,面向ip协议
netif_output_fn output; //网卡数据发送回调函数
netif_linkoutput_fn linkoutput; //网卡数据接收回调函数,(我理解为面向arp协议)
netif_status_callback_fn status_callback; //网卡启动/关闭回调函数
u16_t mtu; //最大数据传输单元
const char* hostname; //主机名
u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; //mac地址,NETIF_MAX_HWADDR_LEN猜到应该是6
u8_t hwaddr_len; //mac地址长度
u8_t flags;
u8_t num; //网卡被用次数
...
}
响应网卡接入信号
- status_callback 每次接入后,可以通过此记录日志。
ARP包分析
- 由上面的分析,可以了解到当有PING命令时,由此接口回复数据。 之前遇到ARP运行过程中,突然双方通信结束,
由于当时另外一方是甲方的客户环境,导致无法进行分析,也无法定位问题是哪方的责任。 当前使用的uip协议栈,
现在了解后,其实可以在次进行日志打印就能够进一步定位问题。 当时其实也分析到出现问题时确实有3包ARP包能
够在总线上监听而我方却没能收到,导致的问题。
netif_linkoutput_fn linkoutput; //网卡数据接收回调函数,(我理解为面向arp协议)
————————————————
版权声明:本文为CSDN博主「芋圆-钰源」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37571125/article/details/105160412