Lines Matching refs:ip

863 static struct ip_udp_hdr *__net_defragment(struct ip_udp_hdr *ip, int *lenp)  in __net_defragment()  argument
869 uchar *indata = (uchar *)ip; in __net_defragment()
871 u16 ip_off = ntohs(ip->ip_off); in __net_defragment()
878 len = ntohs(ip->ip_len) - IP_HDR_SIZE; in __net_defragment()
883 if (!total_len || localip->ip_id != ip->ip_id) { in __net_defragment()
891 memcpy(localip, ip, IP_HDR_SIZE); in __net_defragment()
983 static inline struct ip_udp_hdr *net_defragment(struct ip_udp_hdr *ip, in net_defragment() argument
986 u16 ip_off = ntohs(ip->ip_off); in net_defragment()
988 return ip; /* not a fragment */ in net_defragment()
989 return __net_defragment(ip, lenp); in net_defragment()
994 static inline struct ip_udp_hdr *net_defragment(struct ip_udp_hdr *ip, in net_defragment() argument
997 u16 ip_off = ntohs(ip->ip_off); in net_defragment()
999 return ip; /* not a fragment */ in net_defragment()
1010 static void receive_icmp(struct ip_udp_hdr *ip, int len, in receive_icmp() argument
1013 struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src; in receive_icmp()
1024 ping_receive(et, ip, len); in receive_icmp()
1029 ntohs(ip->udp_dst), src_ip, in receive_icmp()
1030 ntohs(ip->udp_src), icmph->un.data, in receive_icmp()
1031 ntohs(ip->udp_len)); in receive_icmp()
1040 struct ip_udp_hdr *ip; in net_process_received_packet() local
1088 ip = (struct ip_udp_hdr *)(in_packet + E802_HDR_SIZE); in net_process_received_packet()
1092 ip = (struct ip_udp_hdr *)(in_packet + ETHER_HDR_SIZE); in net_process_received_packet()
1117 ip = (struct ip_udp_hdr *)(in_packet + VLAN_ETHER_HDR_SIZE); in net_process_received_packet()
1125 cdp_receive((uchar *)ip, len); in net_process_received_packet()
1140 arp_receive(et, ip, len); in net_process_received_packet()
1145 rarp_receive(ip, len); in net_process_received_packet()
1157 if (len < ntohs(ip->ip_len)) { in net_process_received_packet()
1158 debug("len bad %d < %d\n", len, ntohs(ip->ip_len)); in net_process_received_packet()
1161 len = ntohs(ip->ip_len); in net_process_received_packet()
1163 len, ip->ip_hl_v & 0xff); in net_process_received_packet()
1166 if ((ip->ip_hl_v & 0xf0) != 0x40) in net_process_received_packet()
1169 if ((ip->ip_hl_v & 0x0f) > 0x05) in net_process_received_packet()
1172 if (!ip_checksum_ok((uchar *)ip, IP_HDR_SIZE)) { in net_process_received_packet()
1177 dst_ip = net_read_ip(&ip->ip_dst); in net_process_received_packet()
1186 src_ip = net_read_ip(&ip->ip_src); in net_process_received_packet()
1192 ip = net_defragment(ip, &len); in net_process_received_packet()
1193 if (!ip) in net_process_received_packet()
1216 if (ip->ip_p == IPPROTO_ICMP) { in net_process_received_packet()
1217 receive_icmp(ip, len, src_ip, et); in net_process_received_packet()
1219 } else if (ip->ip_p != IPPROTO_UDP) { /* Only UDP packets */ in net_process_received_packet()
1228 if (ip->udp_xsum != 0) { in net_process_received_packet()
1233 xsum = ip->ip_p; in net_process_received_packet()
1234 xsum += (ntohs(ip->udp_len)); in net_process_received_packet()
1235 xsum += (ntohl(ip->ip_src.s_addr) >> 16) & 0x0000ffff; in net_process_received_packet()
1236 xsum += (ntohl(ip->ip_src.s_addr) >> 0) & 0x0000ffff; in net_process_received_packet()
1237 xsum += (ntohl(ip->ip_dst.s_addr) >> 16) & 0x0000ffff; in net_process_received_packet()
1238 xsum += (ntohl(ip->ip_dst.s_addr) >> 0) & 0x0000ffff; in net_process_received_packet()
1240 sumlen = ntohs(ip->udp_len); in net_process_received_packet()
1241 sumptr = (ushort *)&(ip->udp_src); in net_process_received_packet()
1263 xsum, ntohs(ip->udp_xsum)); in net_process_received_packet()
1270 nc_input_packet((uchar *)ip + IP_UDP_HDR_SIZE, in net_process_received_packet()
1272 ntohs(ip->udp_dst), in net_process_received_packet()
1273 ntohs(ip->udp_src), in net_process_received_packet()
1274 ntohs(ip->udp_len) - UDP_HDR_SIZE); in net_process_received_packet()
1279 (*udp_packet_handler)((uchar *)ip + IP_UDP_HDR_SIZE, in net_process_received_packet()
1280 ntohs(ip->udp_dst), in net_process_received_packet()
1282 ntohs(ip->udp_src), in net_process_received_packet()
1283 ntohs(ip->udp_len) - UDP_HDR_SIZE); in net_process_received_packet()
1440 struct ip_udp_hdr *ip = (struct ip_udp_hdr *)pkt; in net_set_ip_header() local
1446 ip->ip_hl_v = 0x45; in net_set_ip_header()
1447 ip->ip_tos = 0; in net_set_ip_header()
1448 ip->ip_len = htons(IP_HDR_SIZE); in net_set_ip_header()
1449 ip->ip_id = htons(net_ip_id++); in net_set_ip_header()
1450 ip->ip_off = htons(IP_FLAGS_DFRAG); /* Don't fragment */ in net_set_ip_header()
1451 ip->ip_ttl = 255; in net_set_ip_header()
1452 ip->ip_sum = 0; in net_set_ip_header()
1454 net_copy_ip((void *)&ip->ip_src, &source); in net_set_ip_header()
1456 net_copy_ip((void *)&ip->ip_dst, &dest); in net_set_ip_header()
1462 struct ip_udp_hdr *ip = (struct ip_udp_hdr *)pkt; in net_set_udp_header() local
1473 ip->ip_len = htons(IP_UDP_HDR_SIZE + len); in net_set_udp_header()
1474 ip->ip_p = IPPROTO_UDP; in net_set_udp_header()
1475 ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE); in net_set_udp_header()
1477 ip->udp_src = htons(sport); in net_set_udp_header()
1478 ip->udp_dst = htons(dport); in net_set_udp_header()
1479 ip->udp_len = htons(UDP_HDR_SIZE + len); in net_set_udp_header()
1480 ip->udp_xsum = 0; in net_set_udp_header()