Lines Matching refs:pip

277 		    struct ip *pip, u_char ip_p, u_short *ip_sum);
278 static int ProtoAliasOut(struct libalias *la, struct ip *pip,
289 IcmpAliasIn1(struct libalias *la, struct ip *pip) in IcmpAliasIn1() argument
300 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn1()
303 lnk = FindIcmpIn(la, pip->ip_src, pip->ip_dst, ic->icmp_id, 1); in IcmpAliasIn1()
323 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn1()
324 &original_address, &pip->ip_dst, 2); in IcmpAliasIn1()
325 pip->ip_dst = original_address; in IcmpAliasIn1()
334 IcmpAliasIn2(struct libalias *la, struct ip *pip) in IcmpAliasIn2() argument
348 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn2()
392 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn2()
393 &original_address, &pip->ip_dst, 2); in IcmpAliasIn2()
394 pip->ip_dst = original_address; in IcmpAliasIn2()
420 DifferentialChecksum(&pip->ip_sum, in IcmpAliasIn2()
421 &original_address, &pip->ip_dst, 2); in IcmpAliasIn2()
422 pip->ip_dst = original_address; in IcmpAliasIn2()
435 IcmpAliasIn(struct libalias *la, struct ip *pip) in IcmpAliasIn() argument
443 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in IcmpAliasIn()
451 ic = (struct icmp *)ip_next(pip); in IcmpAliasIn()
458 iresult = IcmpAliasIn1(la, pip); in IcmpAliasIn()
468 iresult = IcmpAliasIn2(la, pip); in IcmpAliasIn()
472 iresult = IcmpAliasIn1(la, pip); in IcmpAliasIn()
479 IcmpAliasOut1(struct libalias *la, struct ip *pip, int create) in IcmpAliasOut1() argument
489 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut1()
492 lnk = FindIcmpOut(la, pip->ip_src, pip->ip_dst, ic->icmp_id, create); in IcmpAliasOut1()
512 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut1()
513 &alias_address, &pip->ip_src, 2); in IcmpAliasOut1()
514 pip->ip_src = alias_address; in IcmpAliasOut1()
523 IcmpAliasOut2(struct libalias *la, struct ip *pip) in IcmpAliasOut2() argument
536 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut2()
579 if (pip->ip_src.s_addr == ip->ip_dst.s_addr) { in IcmpAliasOut2()
580 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut2()
581 &alias_address, &pip->ip_src, 2); in IcmpAliasOut2()
582 pip->ip_src = alias_address; in IcmpAliasOut2()
607 if (pip->ip_src.s_addr == ip->ip_dst.s_addr) { in IcmpAliasOut2()
608 DifferentialChecksum(&pip->ip_sum, in IcmpAliasOut2()
609 &alias_address, &pip->ip_src, 2); in IcmpAliasOut2()
610 pip->ip_src = alias_address; in IcmpAliasOut2()
623 IcmpAliasOut(struct libalias *la, struct ip *pip, int create) in IcmpAliasOut() argument
635 ic = (struct icmp *)ip_next(pip); in IcmpAliasOut()
642 iresult = IcmpAliasOut1(la, pip, create); in IcmpAliasOut()
649 iresult = IcmpAliasOut2(la, pip); in IcmpAliasOut()
653 iresult = IcmpAliasOut1(la, pip, create); in IcmpAliasOut()
660 struct ip *pip, u_char ip_p, u_short *ip_sum) in ProtoAliasIn() argument
675 lnk = FindProtoIn(la, ip_src, pip->ip_dst, ip_p); in ProtoAliasIn()
683 &original_address, &pip->ip_dst, 2); in ProtoAliasIn()
684 pip->ip_dst = original_address; in ProtoAliasIn()
692 ProtoAliasOut(struct libalias *la, struct ip *pip, in ProtoAliasOut() argument
711 lnk = FindProtoOut(la, pip->ip_src, ip_dst, ip_p); in ProtoAliasOut()
719 &alias_address, &pip->ip_src, 2); in ProtoAliasOut()
720 pip->ip_src = alias_address; in ProtoAliasOut()
728 UdpAliasIn(struct libalias *la, struct ip *pip) in UdpAliasIn() argument
736 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in UdpAliasIn()
740 ud = (struct udphdr *)ip_next(pip); in UdpAliasIn()
744 lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst, in UdpAliasIn()
773 error = find_handler(IN, UDP, la, pip, &ad); in UdpAliasIn()
793 accumulate += twowords(&pip->ip_src); in UdpAliasIn()
806 DifferentialChecksum(&pip->ip_sum, in UdpAliasIn()
807 &proxy_address, &pip->ip_src, 2); in UdpAliasIn()
808 pip->ip_src = proxy_address; in UdpAliasIn()
812 DifferentialChecksum(&pip->ip_sum, in UdpAliasIn()
813 &original_address, &pip->ip_dst, 2); in UdpAliasIn()
814 pip->ip_dst = original_address; in UdpAliasIn()
822 UdpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create) in UdpAliasOut() argument
837 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in UdpAliasOut()
841 ud = (struct udphdr *)ip_next(pip); in UdpAliasOut()
846 &proxy_server_port, pip->ip_src, pip->ip_dst, in UdpAliasOut()
847 ud->uh_dport, pip->ip_p); in UdpAliasOut()
854 dest_address = pip->ip_dst; in UdpAliasOut()
859 accumulate = twowords(&pip->ip_dst); in UdpAliasOut()
862 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in UdpAliasOut()
865 accumulate = twowords(&pip->ip_dst); in UdpAliasOut()
871 pip->ip_dst = proxy_server_address; in UdpAliasOut()
874 lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst, in UdpAliasOut()
896 ProxyModify(la, lnk, pip, maxpacketsize, proxy_type); in UdpAliasOut()
897 ud = (struct udphdr *)ip_next(pip); in UdpAliasOut()
904 error = find_handler(OUT, UDP, la, pip, &ad); in UdpAliasOut()
913 accumulate += twowords(&pip->ip_src); in UdpAliasOut()
921 DifferentialChecksum(&pip->ip_sum, in UdpAliasOut()
922 &alias_address, &pip->ip_src, 2); in UdpAliasOut()
923 pip->ip_src = alias_address; in UdpAliasOut()
931 TcpAliasIn(struct libalias *la, struct ip *pip) in TcpAliasIn() argument
939 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in TcpAliasIn()
942 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
944 lnk = FindUdpTcpIn(la, pip->ip_src, pip->ip_dst, in TcpAliasIn()
973 error = find_handler(IN, TCP, la, pip, &ad); in TcpAliasIn()
999 error = find_handler(la, pip, &ad); in TcpAliasIn()
1017 accumulate += twowords(&pip->ip_src); in TcpAliasIn()
1024 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
1035 accumulate = twowords(&pip->ip_dst); in TcpAliasIn()
1036 pip->ip_dst = original_address; in TcpAliasIn()
1037 accumulate -= twowords(&pip->ip_dst); in TcpAliasIn()
1042 accumulate += twowords(&pip->ip_src); in TcpAliasIn()
1043 pip->ip_src = proxy_address; in TcpAliasIn()
1044 accumulate -= twowords(&pip->ip_src); in TcpAliasIn()
1046 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasIn()
1049 tc = (struct tcphdr *)ip_next(pip); in TcpAliasIn()
1058 TcpAliasOut(struct libalias *la, struct ip *pip, int maxpacketsize, int create) in TcpAliasOut() argument
1071 dlen = ntohs(pip->ip_len) - (pip->ip_hl << 2); in TcpAliasOut()
1074 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1078 &proxy_server_port, pip->ip_src, pip->ip_dst, in TcpAliasOut()
1079 tc->th_dport, pip->ip_p); in TcpAliasOut()
1089 dest_address = pip->ip_dst; in TcpAliasOut()
1096 accumulate += twowords(&pip->ip_dst); in TcpAliasOut()
1100 accumulate = twowords(&pip->ip_dst); in TcpAliasOut()
1101 pip->ip_dst = proxy_server_address; in TcpAliasOut()
1102 accumulate -= twowords(&pip->ip_dst); in TcpAliasOut()
1103 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasOut()
1105 lnk = FindUdpTcpOut(la, pip->ip_src, pip->ip_dst, in TcpAliasOut()
1130 ProxyModify(la, lnk, pip, maxpacketsize, proxy_type); in TcpAliasOut()
1131 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1138 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1142 error = find_handler(OUT, TCP, la, pip, &ad); in TcpAliasOut()
1149 accumulate += twowords(&pip->ip_src); in TcpAliasOut()
1156 tc = (struct tcphdr *)ip_next(pip); in TcpAliasOut()
1167 accumulate = twowords(&pip->ip_src); in TcpAliasOut()
1168 pip->ip_src = alias_address; in TcpAliasOut()
1169 accumulate -= twowords(&pip->ip_src); in TcpAliasOut()
1170 ADJUST_CHECKSUM(accumulate, pip->ip_sum); in TcpAliasOut()
1192 struct ip *pip, u_short ip_id, u_short *ip_sum);
1193 static int FragmentOut(struct libalias *, struct ip *pip,
1197 FragmentIn(struct libalias *la, struct in_addr ip_src, struct ip *pip, in FragmentIn() argument
1203 lnk = FindFragmentIn2(la, ip_src, pip->ip_dst, ip_id); in FragmentIn()
1209 &original_address, &pip->ip_dst, 2); in FragmentIn()
1210 pip->ip_dst = original_address; in FragmentIn()
1218 FragmentOut(struct libalias *la, struct ip *pip, u_short *ip_sum) in FragmentOut() argument
1223 alias_address = FindAliasAddress(la, pip->ip_src); in FragmentOut()
1225 &alias_address, &pip->ip_src, 2); in FragmentOut()
1226 pip->ip_src = alias_address; in FragmentOut()
1248 struct ip *pip; in LibAliasSaveFragment() local
1251 pip = (struct ip *)ptr; in LibAliasSaveFragment()
1252 lnk = AddFragmentPtrLink(la, pip->ip_src, pip->ip_id); in LibAliasSaveFragment()
1267 struct ip *pip; in LibAliasGetFragment() local
1270 pip = (struct ip *)ptr; in LibAliasGetFragment()
1271 lnk = FindFragmentPtr(la, pip->ip_src, pip->ip_id); in LibAliasGetFragment()
1291 struct ip *pip; in LibAliasFragmentIn() local
1296 pip = (struct ip *)ptr; in LibAliasFragmentIn()
1300 &pip->ip_dst, &fpip->ip_dst, 2); in LibAliasFragmentIn()
1301 fpip->ip_dst = pip->ip_dst; in LibAliasFragmentIn()
1307 LibAliasOutLocked(struct libalias *la, struct ip *pip,
1310 LibAliasInLocked(struct libalias *la, struct ip *pip,
1325 LibAliasInLocked(struct libalias *la, struct ip *pip, int maxpacketsize) in LibAliasInLocked() argument
1332 iresult = LibAliasOutLocked(la, pip, maxpacketsize, 1); in LibAliasInLocked()
1338 alias_addr = pip->ip_dst; in LibAliasInLocked()
1341 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasInLocked()
1342 || (pip->ip_hl << 2) > maxpacketsize) { in LibAliasInLocked()
1348 if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0) { in LibAliasInLocked()
1349 switch (pip->ip_p) { in LibAliasInLocked()
1351 iresult = IcmpAliasIn(la, pip); in LibAliasInLocked()
1354 iresult = UdpAliasIn(la, pip); in LibAliasInLocked()
1357 iresult = TcpAliasIn(la, pip); in LibAliasInLocked()
1361 iresult = SctpAlias(la, pip, SN_TO_LOCAL); in LibAliasInLocked()
1377 error = find_handler(IN, IP, la, pip, &ad); in LibAliasInLocked()
1381 iresult = ProtoAliasIn(la, pip->ip_src, in LibAliasInLocked()
1382 pip, pip->ip_p, &pip->ip_sum); in LibAliasInLocked()
1386 iresult = ProtoAliasIn(la, pip->ip_src, pip, in LibAliasInLocked()
1387 pip->ip_p, &pip->ip_sum); in LibAliasInLocked()
1391 if (ntohs(pip->ip_off) & IP_MF) { in LibAliasInLocked()
1394 lnk = FindFragmentIn1(la, pip->ip_src, alias_addr, pip->ip_id); in LibAliasInLocked()
1397 SetFragmentAddr(lnk, pip->ip_dst); in LibAliasInLocked()
1403 iresult = FragmentIn(la, pip->ip_src, pip, pip->ip_id, in LibAliasInLocked()
1404 &pip->ip_sum); in LibAliasInLocked()
1452 LibAliasOutLocked(struct libalias *la, struct ip *pip, /* valid IP packet */ in LibAliasOutLocked() argument
1463 iresult = LibAliasInLocked(la, pip, maxpacketsize); in LibAliasOutLocked()
1471 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasOutLocked()
1472 || (pip->ip_hl << 2) > maxpacketsize) { in LibAliasOutLocked()
1484 addr = ntohl(pip->ip_src.s_addr); in LibAliasOutLocked()
1496 SetDefaultAliasAddress(la, pip->ip_src); in LibAliasOutLocked()
1499 SetDefaultAliasAddress(la, pip->ip_src); in LibAliasOutLocked()
1502 if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0) { in LibAliasOutLocked()
1503 switch (pip->ip_p) { in LibAliasOutLocked()
1505 iresult = IcmpAliasOut(la, pip, create); in LibAliasOutLocked()
1508 iresult = UdpAliasOut(la, pip, maxpacketsize, create); in LibAliasOutLocked()
1511 iresult = TcpAliasOut(la, pip, maxpacketsize, create); in LibAliasOutLocked()
1515 iresult = SctpAlias(la, pip, SN_TO_GLOBAL); in LibAliasOutLocked()
1530 error = find_handler(OUT, IP, la, pip, &ad); in LibAliasOutLocked()
1534 iresult = ProtoAliasOut(la, pip, in LibAliasOutLocked()
1535 pip->ip_dst, pip->ip_p, &pip->ip_sum, create); in LibAliasOutLocked()
1539 iresult = ProtoAliasOut(la, pip, in LibAliasOutLocked()
1540 pip->ip_dst, pip->ip_p, &pip->ip_sum, create); in LibAliasOutLocked()
1544 iresult = FragmentOut(la, pip, &pip->ip_sum); in LibAliasOutLocked()
1557 struct ip *pip; in LibAliasUnaliasOut() local
1565 pip = (struct ip *)ptr; in LibAliasUnaliasOut()
1568 if (ntohs(pip->ip_len) > maxpacketsize in LibAliasUnaliasOut()
1569 || (pip->ip_hl << 2) > maxpacketsize) in LibAliasUnaliasOut()
1572 ud = (struct udphdr *)ip_next(pip); in LibAliasUnaliasOut()
1573 tc = (struct tcphdr *)ip_next(pip); in LibAliasUnaliasOut()
1574 ic = (struct icmp *)ip_next(pip); in LibAliasUnaliasOut()
1577 if (pip->ip_p == IPPROTO_UDP) in LibAliasUnaliasOut()
1578 lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src, in LibAliasUnaliasOut()
1581 else if (pip->ip_p == IPPROTO_TCP) in LibAliasUnaliasOut()
1582 lnk = FindUdpTcpIn(la, pip->ip_dst, pip->ip_src, in LibAliasUnaliasOut()
1585 else if (pip->ip_p == IPPROTO_ICMP) in LibAliasUnaliasOut()
1586 lnk = FindIcmpIn(la, pip->ip_dst, pip->ip_src, ic->icmp_id, 0); in LibAliasUnaliasOut()
1592 if (pip->ip_p == IPPROTO_UDP || pip->ip_p == IPPROTO_TCP) { in LibAliasUnaliasOut()
1601 accumulate = twowords(&pip->ip_src); in LibAliasUnaliasOut()
1604 if (pip->ip_p == IPPROTO_UDP) { in LibAliasUnaliasOut()
1615 DifferentialChecksum(&pip->ip_sum, in LibAliasUnaliasOut()
1616 &original_address, &pip->ip_src, 2); in LibAliasUnaliasOut()
1619 pip->ip_src = original_address; in LibAliasUnaliasOut()
1620 if (pip->ip_p == IPPROTO_UDP) in LibAliasUnaliasOut()
1627 } else if (pip->ip_p == IPPROTO_ICMP) { in LibAliasUnaliasOut()
1636 accumulate = twowords(&pip->ip_src); in LibAliasUnaliasOut()
1643 DifferentialChecksum(&pip->ip_sum, in LibAliasUnaliasOut()
1644 &original_address, &pip->ip_src, 2); in LibAliasUnaliasOut()
1647 pip->ip_src = original_address; in LibAliasUnaliasOut()