{DHCP_FINE_TIMER_MSECS, HANDLER(dhcp_fine_tmr)}, #endif /* LWIP_DHCP */ #if LWIP_AUTOIP {AUTOIP_TMR_INTERVAL, HANDLER(autoip_tmr)}, #endif /* LWIP_AUTOIP */ #if LWIP_IGMP {IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)}, #endif /* LWIP_IGMP */ #endif /* LWIP_IPV4 */ #if LWIP_...
COARSE_TIMER_MSECS, HANDLER(dhcp_coarse_tmr)}, {DHCP_FINE_TIMER_MSECS, HANDLER(dhcp_fine_tmr)}, #endif /* LWIP_DHCP */ #if LWIP_ACD {ACD_TMR_INTERVAL, HANDLER(acd_tmr)}, #endif /* LWIP_ACD */ #if LWIP_IGMP {IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)}, #endif /* LWIP_IGMP */ ...
。 break; //对于IGMP协议 case IP_PROTO_IGMP: igmp_input(p, inp, ip4_current_dest_addr());// 对于IGMP协议,调用igmp_input()函数接收数据报。 break default: //找不到上层协议 #if LWIP_RAW if (raw_status == RAW_INPUT_DELIVERED) { MIB2_STATS_INC(mib2.ipindelivers); } else #endif...
(); #endif /* LWIP_UDP */ #if LWIP_TCP tcp_init(); #endif /* LWIP_TCP */ #if LWIP_IGMP igmp_init(); #endif /* LWIP_IGMP */ #if LWIP_DNS dns_init(); #endif /* LWIP_DNS */ #if PPP_SUPPORT ppp_init(); #endif #if LWIP_TIMERS sys_timeouts_init(); #endif /* ...
{DHCP_FINE_TIMER_MSECS, HANDLER(dhcp_fine_tmr)}, #endif /* LWIP_DHCP */ #if LWIP_ACD {ACD_TMR_INTERVAL, HANDLER(acd_tmr)}, #endif /* LWIP_ACD */ #if LWIP_IGMP {IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)}, #endif /* LWIP_IGMP */ ...
没有开启IGMP:当前网卡有效即可匹配成功。 广播包和单播包:都调用ip4_input_accept()API匹配。前面有分析。 先匹配收到该IP报文的网卡; 再遍历网卡链表。注意:如果没有环回功能或者有环回网卡,且IP报文目的IP地址是环回字段的IP地址,不能遍历网卡链表。因为环回,需要用环回接口,在前面匹配网卡就应该配上了,不会跑...
IGMPTimer = lwip_localtime;igmp_tmr();} #endif 周期性处理igmp_tmr();函数 5.UDP初始化 void ...
p, inp); //icmp报文==*> ip_input ==> igmp_input(p,inp,&(iphdr->dest)); // igmp...
接下来就是ARP报文部分,ARP也是一种协议,也有ARP首部,在ARP首部一开始的2个字节存储的是硬件类型,表示要知道目标网卡的硬件类型,其中,值为1表示以太网地址,其他还可能表示令牌环地址;接下来还有2字节的协议类型,表示硬件地址要映射的协议地址类型,其中,0x0800表示IP地址,其他还可能是ICMP/IGMP等;接下来有1个字节表...
(4)IGMP协议:用于网络组管理,可以实现多播数据的接收 (5)UDP协议:用户数据报协议 (6)TCP协议:支持TCP拥塞控制,RTT估计,快速恢复与重传等 (7)提供三种用户编程接口方式:raw/callbackAPI、sequentialAPI、BSD-stylesocketAPI (8)DNS:域名解析 (9)SNMP:简单网络管理协议 ...