Lines Matching refs:ip

85 	struct ip *ip;  in debugnet_handle_ip()  local
91 if (m->m_pkthdr.len < sizeof(struct ip)) { in debugnet_handle_ip()
95 if (m->m_len < sizeof(struct ip)) { in debugnet_handle_ip()
96 m = m_pullup(m, sizeof(struct ip)); in debugnet_handle_ip()
103 ip = mtod(m, struct ip *); in debugnet_handle_ip()
106 if (ip->ip_v != IPVERSION) { in debugnet_handle_ip()
107 DNETDEBUG("bad IP version %d\n", ip->ip_v); in debugnet_handle_ip()
112 hlen = ip->ip_hl << 2; in debugnet_handle_ip()
113 if (hlen < sizeof(struct ip)) { in debugnet_handle_ip()
124 ip = mtod(m, struct ip *); in debugnet_handle_ip()
127 if (hlen > sizeof(struct ip)) { in debugnet_handle_ip()
133 if ((IN_LOOPBACK(ntohl(ip->ip_dst.s_addr)) || in debugnet_handle_ip()
134 IN_LOOPBACK(ntohl(ip->ip_src.s_addr))) && in debugnet_handle_ip()
152 ip->ip_len = ntohs(ip->ip_len); in debugnet_handle_ip()
153 if (ip->ip_len < hlen) { in debugnet_handle_ip()
155 ip->ip_len, hlen); in debugnet_handle_ip()
158 if (m->m_pkthdr.len < ip->ip_len) { in debugnet_handle_ip()
160 ip->ip_len, m->m_pkthdr.len); in debugnet_handle_ip()
163 if (m->m_pkthdr.len > ip->ip_len) { in debugnet_handle_ip()
166 m->m_len = ip->ip_len; in debugnet_handle_ip()
167 m->m_pkthdr.len = ip->ip_len; in debugnet_handle_ip()
169 m_adj(m, ip->ip_len - m->m_pkthdr.len); in debugnet_handle_ip()
172 ip->ip_off = ntohs(ip->ip_off); in debugnet_handle_ip()
175 if (ip->ip_src.s_addr != pcb->dp_server) { in debugnet_handle_ip()
177 ip->ip_src.s_addr); in debugnet_handle_ip()
182 if (ip->ip_dst.s_addr != pcb->dp_client) { in debugnet_handle_ip()
187 if (ip->ip_p != IPPROTO_UDP) { in debugnet_handle_ip()
193 if ((ip->ip_off & (IP_MF | IP_OFFMASK)) != 0) { in debugnet_handle_ip()
208 ip->ip_len -= hlen; in debugnet_handle_ip()
449 struct ip *ip; in debugnet_ip_output() local
455 M_PREPEND(m, sizeof(*ip), M_NOWAIT); in debugnet_ip_output()
468 ip = mtod(m, void *); in debugnet_ip_output()
469 udp = (void *)(ip + 1); in debugnet_ip_output()
471 memset(ip, 0, offsetof(struct ip, ip_p)); in debugnet_ip_output()
472 ip->ip_p = IPPROTO_UDP; in debugnet_ip_output()
473 ip->ip_sum = udp->uh_ulen; in debugnet_ip_output()
474 ip->ip_src = (struct in_addr) { pcb->dp_client }; in debugnet_ip_output()
475 ip->ip_dst = (struct in_addr) { pcb->dp_server }; in debugnet_ip_output()
482 ip->ip_v = IPVERSION; in debugnet_ip_output()
483 ip->ip_hl = sizeof(*ip) >> 2; in debugnet_ip_output()
484 ip->ip_tos = 0; in debugnet_ip_output()
485 ip->ip_len = htons(m->m_pkthdr.len); in debugnet_ip_output()
486 ip->ip_id = 0; in debugnet_ip_output()
487 ip->ip_off = htons(IP_DF); in debugnet_ip_output()
488 ip->ip_ttl = 255; in debugnet_ip_output()
489 ip->ip_sum = 0; in debugnet_ip_output()
490 ip->ip_sum = in_cksum(m, sizeof(struct ip)); in debugnet_ip_output()