Lines Matching refs:pip
273 struct ip *pip, u_char ip_p, u_short *ip_sum);
274 static int ProtoAliasOut(struct libalias *la, struct ip *pip,
289 IcmpAliasIn1(struct libalias *la, struct ip *pip) in IcmpAliasIn1() argument
295 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn1()
298 lnk = FindIcmpIn(la, pip->ip_src, pip->ip_dst, ic->icmp_id, 1); in IcmpAliasIn1()
318 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn1()
319 &original_address, &pip->ip_dst, 2); in IcmpAliasIn1()
320 pip->ip_dst = original_address; in IcmpAliasIn1()
333 IcmpAliasIn2(struct libalias *la, struct ip *pip) in IcmpAliasIn2() argument
342 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn2()
386 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn2()
387 &original_address, &pip->ip_dst, 2); in IcmpAliasIn2()
388 pip->ip_dst = original_address; in IcmpAliasIn2()
415 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn2()
416 &original_address, &pip->ip_dst, 2); in IcmpAliasIn2()
417 pip->ip_dst = original_address; in IcmpAliasIn2()
430 IcmpAliasIn(struct libalias *la, struct ip *pip) in IcmpAliasIn() argument
438 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in IcmpAliasIn()
446 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn()
453 iresult = IcmpAliasIn1(la, pip); in IcmpAliasIn()
463 iresult = IcmpAliasIn2(la, pip); in IcmpAliasIn()
467 iresult = IcmpAliasIn1(la, pip); in IcmpAliasIn()
478 IcmpAliasOut1(struct libalias *la, struct ip *pip, int create) in IcmpAliasOut1() argument
484 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut1()
487 lnk = FindIcmpOut(la, pip->ip_src, pip->ip_dst, ic->icmp_id, create); in IcmpAliasOut1()
507 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut1()
508 &alias_address, &pip->ip_src, 2); in IcmpAliasOut1()
509 pip->ip_src = alias_address; in IcmpAliasOut1()
522 IcmpAliasOut2(struct libalias *la, struct ip *pip) in IcmpAliasOut2() argument
531 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut2()
574 if (pip->ip_src.s_addr == ip->ip_dst.s_addr) { in IcmpAliasOut2()
575 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut2()
576 &alias_address, &pip->ip_src, 2); in IcmpAliasOut2()
577 pip->ip_src = alias_address; in IcmpAliasOut2()
602 if (pip->ip_src.s_addr == ip->ip_dst.s_addr) { in IcmpAliasOut2()
603 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut2()
604 &alias_address, &pip->ip_src, 2); in IcmpAliasOut2()
605 pip->ip_src = alias_address; in IcmpAliasOut2()
618 IcmpAliasOut(struct libalias *la, struct ip *pip, int create) in IcmpAliasOut() argument
630 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut()
637 iresult = IcmpAliasOut1(la, pip, create); in IcmpAliasOut()
644 iresult = IcmpAliasOut2(la, pip); in IcmpAliasOut()
648 iresult = IcmpAliasOut1(la, pip, create); in IcmpAliasOut()
661 struct ip *pip, u_char ip_p, u_short *ip_sum) in ProtoAliasIn() argument
670 lnk = FindProtoIn(la, ip_src, pip->ip_dst, ip_p); in ProtoAliasIn()
678 &original_address, &pip->ip_dst, 2); in ProtoAliasIn()
679 pip->ip_dst = original_address; in ProtoAliasIn()
692 ProtoAliasOut(struct libalias *la, struct ip *pip, in ProtoAliasOut() argument
706 lnk = FindProtoOut(la, pip->ip_src, ip_dst, ip_p); in ProtoAliasOut()
714 &alias_address, &pip->ip_src, 2); in ProtoAliasOut()
715 pip->ip_src = alias_address; in ProtoAliasOut()
726 ValidateUdpLength(struct ip *pip) in ValidateUdpLength() argument
732 KASSERT(!FRAG_NO_HDR(pip), ("header-less fragment isn't expected here")); in ValidateUdpLength()
734 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in ValidateUdpLength()
737 ud = (struct udphdr *)ip_next(pip); in ValidateUdpLength()
738 if (!MF_ISSET(pip) && dlen < ntohs(ud->uh_ulen)) in ValidateUdpLength()
744 UdpAliasIn(struct libalias *la, struct ip *pip) in UdpAliasIn() argument
751 ud = ValidateUdpLength(pip); in UdpAliasIn()
755 lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst, in UdpAliasIn()
784 error = find_handler(IN, UDP, la, pip, &ad); in UdpAliasIn()
806 accumulate += twowords(&pip->ip_src); in UdpAliasIn()
819 DifferentialChecksum(&pip->ip_sum, in UdpAliasIn()
820 &proxy_address, &pip->ip_src, 2); in UdpAliasIn()
821 pip->ip_src = proxy_address; in UdpAliasIn()
825 DifferentialChecksum(&pip->ip_sum, in UdpAliasIn()
826 &original_address, &pip->ip_dst, 2); in UdpAliasIn()
827 pip->ip_dst = original_address; in UdpAliasIn()
835 UdpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create) in UdpAliasOut() argument
847 ud = ValidateUdpLength(pip); in UdpAliasOut()
853 pip->ip_src, pip->ip_dst, ud->uh_dport, pip->ip_p); in UdpAliasOut()
860 dest_address = pip->ip_dst; in UdpAliasOut()
865 accumulate = twowords(&pip->ip_dst); in UdpAliasOut()
868 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in UdpAliasOut()
871 accumulate = twowords(&pip->ip_dst); in UdpAliasOut()
877 pip->ip_dst = proxy_server_address; in UdpAliasOut()
880 lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst, in UdpAliasOut()
902 ProxyModify(la, lnk, pip, maxpacketsize, proxy_type); in UdpAliasOut()
903 ud = (struct udphdr *)ip_next(pip); in UdpAliasOut()
910 find_handler(OUT, UDP, la, pip, &ad); in UdpAliasOut()
919 accumulate += twowords(&pip->ip_src); in UdpAliasOut()
927 DifferentialChecksum(&pip->ip_sum, in UdpAliasOut()
928 &alias_address, &pip->ip_src, 2); in UdpAliasOut()
929 pip->ip_src = alias_address; in UdpAliasOut()
937 TcpAliasIn(struct libalias *la, struct ip *pip) in TcpAliasIn() argument
945 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in TcpAliasIn()
948 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
950 lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst, in TcpAliasIn()
979 find_handler(IN, TCP, la, pip, &ad); in TcpAliasIn()
1005 error = find_handler(la, pip, &ad); in TcpAliasIn()
1023 accumulate += twowords(&pip->ip_src); in TcpAliasIn()
1030 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
1041 accumulate = twowords(&pip->ip_dst); in TcpAliasIn()
1042 pip->ip_dst = original_address; in TcpAliasIn()
1043 accumulate -= twowords(&pip->ip_dst); in TcpAliasIn()
1048 accumulate += twowords(&pip->ip_src); in TcpAliasIn()
1049 pip->ip_src = proxy_address; in TcpAliasIn()
1050 accumulate -= twowords(&pip->ip_src); in TcpAliasIn()
1052 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasIn()
1055 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
1064 TcpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create) in TcpAliasOut() argument
1077 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in TcpAliasOut()
1080 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1084 &proxy_server_port, pip->ip_src, pip->ip_dst, in TcpAliasOut()
1085 tc->th_dport, pip->ip_p); in TcpAliasOut()
1095 dest_address = pip->ip_dst; in TcpAliasOut()
1102 accumulate += twowords(&pip->ip_dst); in TcpAliasOut()
1106 accumulate = twowords(&pip->ip_dst); in TcpAliasOut()
1107 pip->ip_dst = proxy_server_address; in TcpAliasOut()
1108 accumulate -= twowords(&pip->ip_dst); in TcpAliasOut()
1109 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasOut()
1111 lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst, in TcpAliasOut()
1136 ProxyModify(la, lnk, pip, maxpacketsize, proxy_type); in TcpAliasOut()
1137 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1144 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1148 find_handler(OUT, TCP, la, pip, &ad); in TcpAliasOut()
1155 accumulate += twowords(&pip->ip_src); in TcpAliasOut()
1162 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1173 accumulate = twowords(&pip->ip_src); in TcpAliasOut()
1174 pip->ip_src = alias_address; in TcpAliasOut()
1175 accumulate -= twowords(&pip->ip_src); in TcpAliasOut()
1176 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasOut()
1198 struct ip *pip, u_short ip_id, u_short *ip_sum);
1199 static int FragmentOut(struct libalias *, struct ip *pip,
1203 FragmentIn(struct libalias *la, struct in_addr ip_src, struct ip *pip, in FragmentIn() argument
1209 lnk = FindFragmentIn2(la, ip_src, pip->ip_dst, ip_id); in FragmentIn()
1215 &original_address, &pip->ip_dst, 2); in FragmentIn()
1216 pip->ip_dst = original_address; in FragmentIn()
1224 FragmentOut(struct libalias *la, struct ip *pip, u_short *ip_sum) in FragmentOut() argument
1229 alias_address = FindAliasAddress(la, pip->ip_src); in FragmentOut()
1231 &alias_address, &pip->ip_src, 2); in FragmentOut()
1232 pip->ip_src = alias_address; in FragmentOut()
1254 struct ip *pip; in LibAliasSaveFragment() local
1257 pip = (struct ip *)ptr; in LibAliasSaveFragment()
1258 lnk = AddFragmentPtrLink(la, pip->ip_src, pip->ip_id); in LibAliasSaveFragment()
1273 struct ip *pip; in LibAliasGetFragment() local
1276 pip = (struct ip *)ptr; in LibAliasGetFragment()
1277 lnk = FindFragmentPtr(la, pip->ip_src, pip->ip_id); in LibAliasGetFragment()
1295 struct ip *pip; in LibAliasFragmentIn() local
1300 pip = (struct ip *)ptr; in LibAliasFragmentIn()
1304 &pip->ip_dst, &fpip->ip_dst, 2); in LibAliasFragmentIn()
1305 fpip->ip_dst = pip->ip_dst; in LibAliasFragmentIn()
1311 LibAliasOutLocked(struct libalias *la, struct ip *pip,
1314 LibAliasInLocked(struct libalias *la, struct ip *pip,
1329 LibAliasInLocked(struct libalias *la, struct ip *pip, int maxpacketsize) in LibAliasInLocked() argument
1336 iresult = LibAliasOutLocked(la, pip, maxpacketsize, 1); in LibAliasInLocked()
1341 alias_addr = pip->ip_dst; in LibAliasInLocked()
1344 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasInLocked()
1345 || (pip->ip_hl << 2) > maxpacketsize) { in LibAliasInLocked()
1350 if (FRAG_NO_HDR(pip)) { in LibAliasInLocked()
1351 iresult = FragmentIn(la, pip->ip_src, pip, pip->ip_id, in LibAliasInLocked()
1352 &pip->ip_sum); in LibAliasInLocked()
1357 switch (pip->ip_p) { in LibAliasInLocked()
1359 iresult = IcmpAliasIn(la, pip); in LibAliasInLocked()
1362 iresult = UdpAliasIn(la, pip); in LibAliasInLocked()
1365 iresult = TcpAliasIn(la, pip); in LibAliasInLocked()
1369 iresult = SctpAlias(la, pip, SN_TO_LOCAL); in LibAliasInLocked()
1385 error = find_handler(IN, IP, la, pip, &ad); in LibAliasInLocked()
1389 iresult = ProtoAliasIn(la, pip->ip_src, in LibAliasInLocked()
1390 pip, pip->ip_p, &pip->ip_sum); in LibAliasInLocked()
1394 iresult = ProtoAliasIn(la, pip->ip_src, pip, in LibAliasInLocked()
1395 pip->ip_p, &pip->ip_sum); in LibAliasInLocked()
1399 if (MF_ISSET(pip)) { in LibAliasInLocked()
1402 lnk = FindFragmentIn1(la, pip->ip_src, alias_addr, pip->ip_id); in LibAliasInLocked()
1405 SetFragmentAddr(lnk, pip->ip_dst); in LibAliasInLocked()
1457 struct ip *pip, /* valid IP packet */ in LibAliasOutLocked() argument
1467 iresult = LibAliasInLocked(la, pip, maxpacketsize); in LibAliasOutLocked()
1474 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasOutLocked()
1475 || (pip->ip_hl << 2) > maxpacketsize) { in LibAliasOutLocked()
1487 addr = ntohl(pip->ip_src.s_addr); in LibAliasOutLocked()
1499 SetDefaultAliasAddress(la, pip->ip_src); in LibAliasOutLocked()
1502 SetDefaultAliasAddress(la, pip->ip_src); in LibAliasOutLocked()
1505 if (FRAG_NO_HDR(pip)) { in LibAliasOutLocked()
1506 iresult = FragmentOut(la, pip, &pip->ip_sum); in LibAliasOutLocked()
1511 switch (pip->ip_p) { in LibAliasOutLocked()
1513 iresult = IcmpAliasOut(la, pip, create); in LibAliasOutLocked()
1516 iresult = UdpAliasOut(la, pip, maxpacketsize, create); in LibAliasOutLocked()
1519 iresult = TcpAliasOut(la, pip, maxpacketsize, create); in LibAliasOutLocked()
1523 iresult = SctpAlias(la, pip, SN_TO_GLOBAL); in LibAliasOutLocked()
1538 error = find_handler(OUT, IP, la, pip, &ad); in LibAliasOutLocked()
1542 iresult = ProtoAliasOut(la, pip, in LibAliasOutLocked()
1543 pip->ip_dst, pip->ip_p, &pip->ip_sum, create); in LibAliasOutLocked()
1547 iresult = ProtoAliasOut(la, pip, in LibAliasOutLocked()
1548 pip->ip_dst, pip->ip_p, &pip->ip_sum, create); in LibAliasOutLocked()
1564 struct ip *pip; in LibAliasUnaliasOut() local
1572 pip = (struct ip *)ptr; in LibAliasUnaliasOut()
1575 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasUnaliasOut()
1576 || (pip->ip_hl << 2) > maxpacketsize) in LibAliasUnaliasOut()
1579 ud = (struct udphdr *)ip_next(pip); in LibAliasUnaliasOut()
1580 tc = (struct tcphdr *)ip_next(pip); in LibAliasUnaliasOut()
1581 ic = (struct icmp *)ip_next(pip); in LibAliasUnaliasOut()
1584 if (pip->ip_p == IPPROTO_UDP) in LibAliasUnaliasOut()
1585 lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src, in LibAliasUnaliasOut()
1588 else if (pip->ip_p == IPPROTO_TCP) in LibAliasUnaliasOut()
1589 lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src, in LibAliasUnaliasOut()
1592 else if (pip->ip_p == IPPROTO_ICMP) in LibAliasUnaliasOut()
1593 lnk = FindIcmpIn(la, pip->ip_dst, pip->ip_src, ic->icmp_id, 0); in LibAliasUnaliasOut()
1599 if (pip->ip_p == IPPROTO_UDP || pip->ip_p == IPPROTO_TCP) { in LibAliasUnaliasOut()
1608 accumulate = twowords(&pip->ip_src); in LibAliasUnaliasOut()
1611 if (pip->ip_p == IPPROTO_UDP) { in LibAliasUnaliasOut()
1622 DifferentialChecksum(&pip->ip_sum, in LibAliasUnaliasOut()
1623 &original_address, &pip->ip_src, 2); in LibAliasUnaliasOut()
1626 pip->ip_src = original_address; in LibAliasUnaliasOut()
1627 if (pip->ip_p == IPPROTO_UDP) in LibAliasUnaliasOut()
1633 } else if (pip->ip_p == IPPROTO_ICMP) { in LibAliasUnaliasOut()
1642 accumulate = twowords(&pip->ip_src); in LibAliasUnaliasOut()
1649 DifferentialChecksum(&pip->ip_sum, in LibAliasUnaliasOut()
1650 &original_address, &pip->ip_src, 2); in LibAliasUnaliasOut()
1653 pip->ip_src = original_address; in LibAliasUnaliasOut()