Lines Matching refs:ip

96 #include <netinet/ip.h>
156 static struct ifaddr *in_selectsrcif(struct ip *, struct route *, unsigned int);
158 int ip_optcopy(struct ip *, struct ip *);
268 struct ip *ip;
271 int hlen = sizeof (struct ip);
384 mtod(m, struct ip *)->ip_p);
428 ip = mtod(m, struct ip *);
429 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
430 pkt_dst = ip->ip_dst;
482 ip = mtod(m, struct ip *);
493 pkt_dst = args.fwa_next_hop ? args.fwa_next_hop->sin_addr : ip->ip_dst;
495 pkt_dst = ip->ip_dst;
511 ip->ip_vhl = IP_MAKE_VHL(IPVERSION, hlen >> 2);
512 ip->ip_off &= IP_DF;
514 ip->ip_id = ip_randomid();
516 ip->ip_id = htons(ip_id++);
520 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
526 ((ip->ip_tos & IPTOS_ECN_MASK) == IPTOS_ECN_ECT1 ||
527 (ip->ip_tos & IPTOS_ECN_MASK) == IPTOS_ECN_ECT0)) {
528 ip->ip_tos = (ip->ip_tos & ~IPTOS_ECN_MASK) | IPTOS_ECN_CE;
533 KERNEL_DEBUG(DBG_LAYER_BEG, ip->ip_dst.s_addr,
534 ip->ip_src.s_addr, ip->ip_p, ip->ip_off, ip->ip_len);
549 (ip->ip_src.s_addr != INADDR_ANY)) {
550 src_ia = ifa_foraddr(ip->ip_src.s_addr);
599 ip->ip_ttl = 1;
623 if (select_srcif && ip->ip_src.s_addr != INADDR_ANY &&
630 ifa = in_selectsrcif(ip, ro, ifscope);
677 !(IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr))));
798 ip->ip_ttl = ttl;
804 ip->ip_src.s_addr == INADDR_ANY))
805 ip->ip_src.s_addr = ip_mcast_src(vif);
809 ip->ip_ttl = ttl;
825 if (ip->ip_src.s_addr == INADDR_ANY) {
831 ip->ip_src = IA_SIN(ia1)->sin_addr;
838 if (ip->ip_src.s_addr == INADDR_ANY) {
869 HTONS(ip->ip_len);
870 HTONS(ip->ip_off);
894 ip = mtod(m, struct ip *);
897 NTOHS(ip->ip_len);
898 NTOHS(ip->ip_off);
929 if (ip_mforward(ip, ifp, m, imo) != 0) {
949 if (ip->ip_ttl == 0 || ifp->if_flags & IFF_LOOPBACK) {
960 if (ip->ip_src.s_addr == INADDR_ANY) {
962 ip->ip_src = IA_SIN(ia)->sin_addr;
989 if ((u_short)ip->ip_len > ifp->if_mtu) {
1038 ip = mtod(m, struct ip *);
1039 pkt_dst = ip->ip_dst;
1040 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
1046 if (IN_LINKLOCAL(ntohl(ip->ip_src.s_addr)) || IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr))) {
1048 if (ip->ip_ttl != MAXTTL) {
1050 ip->ip_ttl = MAXTTL;
1073 HTONS(ip->ip_len);
1074 HTONS(ip->ip_off);
1096 ip = mtod(m, struct ip *);
1099 NTOHS(ip->ip_len);
1100 NTOHS(ip->ip_off);
1167 ip->ip_sum = 0;
1180 HTONS(ip->ip_len);
1181 HTONS(ip->ip_off);
1185 struct ip *, ip, struct ifnet *, ifp,
1186 struct ip *, ip, struct ip6_hdr *, NULL);
1231 ip = mtod(m, struct ip *);
1234 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
1236 hlen = ip->ip_hl << 2;
1240 if ((src_ia = ifa_foraddr(ip->ip_src.s_addr)) == NULL &&
1279 NTOHS(ip->ip_len);
1280 NTOHS(ip->ip_off);
1305 HTONS(ip->ip_len);
1306 HTONS(ip->ip_off);
1325 ip = mtod(m, struct ip *);
1328 NTOHS(ip->ip_len);
1329 NTOHS(ip->ip_off);
1373 ip = mtod(m, struct ip *);
1420 HTONS(ip->ip_len);
1421 HTONS(ip->ip_off);
1430 ip = mtod(m, struct ip *);
1454 printf("IPFIREWALL_FORWARD: New dst ip: ");
1521 ip->ip_sum = in_cksum(m, hlen);
1525 HTONS(ip->ip_len);
1526 HTONS(ip->ip_off);
1583 * If we added a default src ip earlier,
1590 ip->ip_src = IA_SIN(ia_fw)->sin_addr;
1612 ((ntohl(ip->ip_src.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET ||
1613 (ntohl(ip->ip_dst.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET)) {
1640 && (ip->ip_len > 50) && (ip->ip_len <= ifp->if_mtu)) {
1642 u_short offset = (IP_VHL_HL(ip->ip_vhl) << 2) +14 ; /* IP+Enet header length */
1674 if ((u_short)ip->ip_len <= ifp->if_mtu || tso ||
1681 HTONS(ip->ip_len);
1682 HTONS(ip->ip_off);
1685 ip->ip_sum = 0;
1687 ip->ip_sum = in_cksum(m, hlen);
1740 if (ip->ip_off & IP_DF || (m->m_pkthdr.csum_flags & CSUM_TSO_IPV4) ||
1772 KERNEL_DEBUG(DBG_LAYER_END, ip->ip_dst.s_addr,
1773 ip->ip_src.s_addr, ip->ip_p, ip->ip_off, ip->ip_len);
1831 struct ip *ip, *mhip;
1836 ip = mtod(m, struct ip *);
1838 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
1840 hlen = ip->ip_hl << 2;
1864 mhlen = sizeof (struct ip);
1865 for (off = hlen + len; off < (u_short)ip->ip_len; off += len) {
1874 mhip = mtod(m, struct ip *);
1875 *mhip = *ip;
1876 if (hlen > sizeof (struct ip)) {
1877 mhlen = ip_optcopy(ip, mhip) + sizeof (struct ip);
1881 mhip->ip_off = ((off - hlen) >> 3) + (ip->ip_off & ~IP_MF);
1882 if (ip->ip_off & IP_MF)
1884 if (off + len >= (u_short)ip->ip_len)
1885 len = (u_short)ip->ip_len - off;
1932 m_adj(m, hlen + firstlen - (u_short)ip->ip_len);
1934 ip->ip_len = htons((u_short)m->m_pkthdr.len);
1935 ip->ip_off |= IP_MF;
1938 HTONS(ip->ip_off);
1941 ip->ip_sum = 0;
1943 ip->ip_sum = in_cksum(m, hlen);
1971 struct ip *ip;
1972 unsigned char buf[sizeof(struct ip)];
1993 if ((ip_offset + sizeof(struct ip) > m->m_len) ||
1999 m_copydata(m, ip_offset, sizeof(struct ip), (caddr_t) buf);
2001 ip = (struct ip *)(void *)buf;
2003 ip = (struct ip*)(void *)(m->m_data + ip_offset);
2012 offset = IP_VHL_HL(ip->ip_vhl) << 2 ;
2023 ip_len = ip->ip_len;
2028 "doesn't match actual length %d\n", ip->ip_len,
2037 ip_out_cksum_stats(ip->ip_p, ip_len - offset);
2060 m->m_len, offset + ip_offset, ip->ip_p);
2080 struct ip* ip = NULL;
2082 unsigned char buf[sizeof(struct ip)];
2103 if ((ip_offset + sizeof(struct ip) > m->m_len) ||
2109 m_copydata(m, ip_offset, sizeof(struct ip), (caddr_t) buf);
2111 ip = (struct ip *)(void *)buf;
2112 ip->ip_sum = 0;
2113 m_copyback(m, ip_offset + offsetof(struct ip, ip_sum), 2,
2114 (caddr_t)&ip->ip_sum);
2116 ip = (struct ip*)(void *)(m->m_data + ip_offset);
2117 ip->ip_sum = 0;
2127 hlen = IP_VHL_HL(ip->ip_vhl) << 2;
2129 hlen = ip->ip_hl << 2;
2140 if (ntohs(ip->ip_len) != (m0->m_pkthdr.len - ip_offset_copy)) {
2141 ip->ip_len = SWAP16(ip->ip_len);
2143 if (ntohs(ip->ip_len) != (m0->m_pkthdr.len - ip_offset_copy)) {
2144 ip->ip_len = SWAP16(ip->ip_len);
2147 ip->ip_len, SWAP16(ip->ip_len),
2153 ip->ip_sum = 0;
2154 ip->ip_sum = in_cksum(m, hlen);
2156 ip->ip_len = SWAP16(ip->ip_len);
2171 if (ip_offset + sizeof(struct ip) > m->m_len) {
2177 ip_offset + offsetof(struct ip, ip_sum), ip->ip_p);
2179 *(u_short *)(void *)tmp = ip->ip_sum;
2180 m_copyback(m, ip_offset + offsetof(struct ip, ip_sum), 2, tmp);
2182 bcopy(&ip->ip_sum,
2183 (m->m_data + ip_offset + offsetof(struct ip, ip_sum)),
2203 register struct ip *ip = mtod(m, struct ip *);
2207 if (optlen + (u_short)ip->ip_len > IP_MAXPACKET)
2210 ip->ip_dst = p->ipopt_dst;
2220 m->m_len -= sizeof(struct ip);
2221 m->m_data += sizeof(struct ip);
2224 m->m_len = optlen + sizeof(struct ip);
2226 (void)memcpy(mtod(m, void *), ip, sizeof(struct ip));
2231 ovbcopy((caddr_t)ip, mtod(m, caddr_t), sizeof(struct ip));
2233 ip = mtod(m, struct ip *);
2234 bcopy(p->ipopt_list, ip + 1, optlen);
2235 *phlen = sizeof(struct ip) + optlen;
2236 ip->ip_vhl = IP_MAKE_VHL(IPVERSION, *phlen >> 2);
2237 ip->ip_len += optlen;
2242 * Copy options from ip to jp,
2246 ip_optcopy(ip, jp)
2247 struct ip *ip, *jp;
2252 cp = (u_char *)(ip + 1);
2254 cnt = (IP_VHL_HL(ip->ip_vhl) << 2) - sizeof (struct ip);
2995 register struct ip *ip;
3010 ip = mtod(copym, struct ip *);
3013 HTONS(ip->ip_len);
3014 HTONS(ip->ip_off);
3017 ip->ip_sum = 0;
3018 ip->ip_sum = in_cksum(copym, hlen);
3056 NTOHS(ip->ip_len);
3062 HTONS(ip->ip_len);
3101 in_selectsrcif(struct ip *ip, struct route *ro, unsigned int ifscope)
3104 struct in_addr src = ip->ip_src;
3105 struct in_addr dst = ip->ip_dst;
3147 if (ifa == NULL && ip->ip_p != IPPROTO_UDP &&
3148 ip->ip_p != IPPROTO_TCP && ipforwarding) {