Lines Matching refs:ip

64 	struct ip	*ipq_hdr;
80 struct ip *ip_hdr;
91 struct ip *ip; in sendip() local
106 ip = (struct ip *)pkt - 1; in sendip()
107 len += sizeof(*ip); in sendip()
109 bzero(ip, sizeof(*ip)); in sendip()
111 ip->ip_v = IPVERSION; /* half-char */ in sendip()
112 ip->ip_hl = sizeof(*ip) >> 2; /* half-char */ in sendip()
113 ip->ip_len = htons(len); in sendip()
114 ip->ip_p = proto; /* char */ in sendip()
115 ip->ip_ttl = IPDEFTTL; /* char */ in sendip()
116 ip->ip_src = d->myip; in sendip()
117 ip->ip_dst = d->destip; in sendip()
118 ip->ip_sum = in_cksum(ip, sizeof(*ip)); /* short, but special */ in sendip()
120 if (ip->ip_dst.s_addr == INADDR_BROADCAST || ip->ip_src.s_addr == 0 || in sendip()
121 netmask == 0 || SAMENET(ip->ip_src, ip->ip_dst, netmask)) in sendip()
122 ea = arpwhohas(d, ip->ip_dst); in sendip()
126 cc = sendether(d, ip, len, ea, ETHERTYPE_IP); in sendip()
131 return (cc - sizeof(*ip)); in sendip()
149 ip_reasm_add(struct ip_reasm *ipr, void *pkt, struct ip *ip) in ip_reasm_add() argument
157 ipq->ipq_hdr = ip; in ip_reasm_add()
162 (ntohs(ip->ip_off) & IP_OFFMASK)) { in ip_reasm_add()
186 struct ip *ip; in readipv4() local
198 ip = NULL; in readipv4()
200 n = readether(d, (void **)&ptr, (void **)&ip, tleft, &etype); in readipv4()
201 if (n == -1 || n < sizeof(*ip) + sizeof(*uh)) { in readipv4()
210 struct arphdr *ah = (void *)ip; in readipv4()
230 if (ip->ip_v != IPVERSION || /* half char */ in readipv4()
231 ip->ip_p != proto) { in readipv4()
235 ip->ip_v, ip->ip_p); in readipv4()
242 hlen = ip->ip_hl << 2; in readipv4()
243 if (hlen < sizeof(*ip) || in readipv4()
244 in_cksum(ip, hlen) != 0) { in readipv4()
252 if (n < ntohs(ip->ip_len)) { in readipv4()
256 (int)n, ntohs(ip->ip_len)); in readipv4()
261 if (d->myip.s_addr && ip->ip_dst.s_addr != d->myip.s_addr) { in readipv4()
265 printf("%s\n", inet_ntoa(ip->ip_dst)); in readipv4()
273 if ((ntohs(ip->ip_off) & IP_MF) == 0 && in readipv4()
274 (ntohs(ip->ip_off) & IP_OFFMASK) == 0) { in readipv4()
275 uh = (struct udphdr *)((uintptr_t)ip + sizeof (*ip)); in readipv4()
277 if (hlen != sizeof(*ip)) { in readipv4()
278 bcopy(((u_char *)ip) + hlen, uh, uh->uh_ulen - hlen); in readipv4()
279 ip->ip_len = htons(sizeof(*ip)); in readipv4()
280 n -= hlen - sizeof(*ip); in readipv4()
283 n = (n > (ntohs(ip->ip_len) - sizeof(*ip))) ? in readipv4()
284 ntohs(ip->ip_len) - sizeof(*ip) : n; in readipv4()
286 *payload = (void *)((uintptr_t)ip + sizeof(*ip)); in readipv4()
291 if (ipr->ip_src.s_addr == ip->ip_src.s_addr && in readipv4()
292 ipr->ip_dst.s_addr == ip->ip_dst.s_addr && in readipv4()
293 ipr->ip_id == ip->ip_id && in readipv4()
294 ipr->ip_proto == ip->ip_p) in readipv4()
305 ipr->ip_src = ip->ip_src; in readipv4()
306 ipr->ip_dst = ip->ip_dst; in readipv4()
307 ipr->ip_id = ip->ip_id; in readipv4()
308 ipr->ip_proto = ip->ip_p; in readipv4()
314 if (ip_reasm_add(ipr, ptr, ip) != 0) { in readipv4()
321 if ((ntohs(ip->ip_off) & IP_MF) == 0) { in readipv4()
322 ipr->ip_total_size = (8 * (ntohs(ip->ip_off) & IP_OFFMASK)); in readipv4()
323 ipr->ip_total_size += n + sizeof (*ip); in readipv4()
370 ipr->ip_hdr = (struct ip *)((uintptr_t)eh + sizeof (*eh)); in readipv4()