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