Lines Matching refs:iphdr
198 * @param iphdr the IP header of the input packet
202 ip_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp)
239 IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1);
241 if (IPH_TTL(iphdr) == 0) {
245 if (IPH_PROTO(iphdr) != IP_PROTO_ICMP) {
253 if (IPH_CHKSUM(iphdr) >= PP_HTONS(0xffffU - 0x100)) {
254 IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + PP_HTONS(0x100) + 1);
256 IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + PP_HTONS(0x100));
270 if ((IPH_OFFSET(iphdr) & PP_NTOHS(IP_DF)) == 0) {
307 struct ip_hdr *iphdr;
319 iphdr = (struct ip_hdr *)p->payload;
320 if (IPH_V(iphdr) != 4) {
321 LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr)));
338 iphdr_hlen = IPH_HL(iphdr);
342 iphdr_len = ntohs(IPH_LEN(iphdr));
366 if (inet_chksum(iphdr, iphdr_hlen) != 0) {
369 ("Checksum (0x%"X16_F") failed, IP packet dropped.\n", inet_chksum(iphdr, iphdr_hlen)));
384 ip_addr_copy(current_iphdr_dest, iphdr->dest);
385 ip_addr_copy(current_iphdr_src, iphdr->src);
404 LWIP_DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%"X32_F" netif->ip_addr 0x%"X32_F" (0x%"X32_F", 0x%"X32_F", 0x%"X32_F")\n",
405 ip4_addr_get_u32(&iphdr->dest), ip4_addr_get_u32(&netif->ip_addr),
406 ip4_addr_get_u32(&iphdr->dest) & ip4_addr_get_u32(&netif->netmask),
408 ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask)));
457 if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {
458 struct udp_hdr *udphdr = (struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen);
496 ip_forward(p, iphdr, inp);
507 if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) {
510 ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & PP_HTONS(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8));
517 iphdr = (struct ip_hdr *)p->payload;
521 ntohs(IPH_OFFSET(iphdr))));
534 if((iphdr_hlen > IP_HLEN) && (IPH_PROTO(iphdr) != IP_PROTO_IGMP)) {
554 current_header = iphdr;
561 switch (IPH_PROTO(iphdr)) {
593 p->payload = iphdr;
599 LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr)));
660 struct ip_hdr *iphdr;
712 iphdr = (struct ip_hdr *)p->payload;
716 IPH_TTL_SET(iphdr, ttl);
717 IPH_PROTO_SET(iphdr, proto);
723 ip_addr_copy(iphdr->dest, *dest);
725 chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF;
726 chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16;
729 IPH_VHL_SET(iphdr, 4, ip_hlen / 4);
730 IPH_TOS_SET(iphdr, tos);
732 chk_sum += LWIP_MAKE_U16(tos, iphdr->_v_hl);
734 IPH_LEN_SET(iphdr, htons(p->tot_len));
736 chk_sum += iphdr->_len;
738 IPH_OFFSET_SET(iphdr, 0);
739 IPH_ID_SET(iphdr, htons(ip_id));
741 chk_sum += iphdr->_id;
746 ip_addr_copy(iphdr->src, netif->ip_addr);
749 ip_addr_copy(iphdr->src, *src);
753 chk_sum += ip4_addr_get_u32(&iphdr->src) & 0xFFFF;
754 chk_sum += ip4_addr_get_u32(&iphdr->src) >> 16;
758 iphdr->_chksum = chk_sum; /* network order */
760 IPH_CHKSUM_SET(iphdr, 0);
762 IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, ip_hlen));
767 iphdr = (struct ip_hdr *)p->payload;
768 ip_addr_copy(dest_addr, iphdr->dest);
889 struct ip_hdr *iphdr = (struct ip_hdr *)p->payload;
894 IPH_V(iphdr),
895 IPH_HL(iphdr),
896 IPH_TOS(iphdr),
897 ntohs(IPH_LEN(iphdr))));
900 ntohs(IPH_ID(iphdr)),
901 ntohs(IPH_OFFSET(iphdr)) >> 15 & 1,
902 ntohs(IPH_OFFSET(iphdr)) >> 14 & 1,
903 ntohs(IPH_OFFSET(iphdr)) >> 13 & 1,
904 ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK));
907 IPH_TTL(iphdr),
908 IPH_PROTO(iphdr),
909 ntohs(IPH_CHKSUM(iphdr))));
912 ip4_addr1_16(&iphdr->src),
913 ip4_addr2_16(&iphdr->src),
914 ip4_addr3_16(&iphdr->src),
915 ip4_addr4_16(&iphdr->src)));
918 ip4_addr1_16(&iphdr->dest),
919 ip4_addr2_16(&iphdr->dest),
920 ip4_addr3_16(&iphdr->dest),
921 ip4_addr4_16(&iphdr->dest)));