Date: Fri, 7 Mar 2008 17:41:23 GMT From: Paolo Pisati <piso@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 137096 for review Message-ID: <200803071741.m27HfNVj073775@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=137096 Change 137096 by piso@piso_ferret on 2008/03/07 17:40:24 Don't pass the entire packet to ProtoAliasIn & ProtoAliasOut. Affected files ... .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#66 edit Differences ... ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#66 (text+ko) ==== @@ -264,8 +264,11 @@ static int IcmpAliasOut2(struct libalias *, struct ip *); static int IcmpAliasOut(struct libalias *, struct ip *, int create); -static int ProtoAliasIn(struct libalias *, struct ip *); -static int ProtoAliasOut(struct libalias *, struct ip *, int create); +static int ProtoAliasIn(struct libalias *la, struct in_addr ip_src, + struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum); +static int ProtoAliasOut(struct libalias *la, struct in_addr *ip_src, + struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, + int create); static int UdpAliasIn(struct libalias *, struct ip *); static int UdpAliasOut(struct libalias *, struct ip *, int create); @@ -642,7 +645,8 @@ // XXX ip free static int -ProtoAliasIn(struct libalias *la, struct ip *pip) +ProtoAliasIn(struct libalias *la, struct in_addr ip_src, + struct in_addr *ip_dst, u_char ip_p, u_short *ip_sum) { /* Handle incoming IP packets. The @@ -657,16 +661,16 @@ if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) return (PKT_ALIAS_OK); - lnk = FindProtoIn(la, pip->ip_src, pip->ip_dst, pip->ip_p); + lnk = FindProtoIn(la, ip_src, *ip_dst, ip_p); if (lnk != NULL) { struct in_addr original_address; original_address = GetOriginalAddress(lnk); /* Restore original IP address */ - DifferentialChecksum(&pip->ip_sum, - &original_address, &pip->ip_dst, 2); - pip->ip_dst = original_address; + DifferentialChecksum(ip_sum, + &original_address, ip_dst, 2); + *ip_dst = original_address; return (PKT_ALIAS_OK); } @@ -675,7 +679,8 @@ // XXX ip free static int -ProtoAliasOut(struct libalias *la, struct ip *pip, int create) +ProtoAliasOut(struct libalias *la, struct in_addr *ip_src, + struct in_addr ip_dst, u_char ip_p, u_short *ip_sum, int create) { /* Handle outgoing IP packets. The @@ -691,16 +696,16 @@ if (la->packetAliasMode & PKT_ALIAS_PROXY_ONLY) return (PKT_ALIAS_OK); - lnk = FindProtoOut(la, pip->ip_src, pip->ip_dst, pip->ip_p); + lnk = FindProtoOut(la, *ip_src, ip_dst, ip_p); if (lnk != NULL) { struct in_addr alias_address; alias_address = GetAliasAddress(lnk); /* Change source address */ - DifferentialChecksum(&pip->ip_sum, - &alias_address, &pip->ip_src, 2); - pip->ip_src = alias_address; + DifferentialChecksum(ip_sum, + &alias_address, ip_src, 2); + *ip_src = alias_address; return (PKT_ALIAS_OK); } @@ -1283,11 +1288,13 @@ if (error == 0) iresult = PKT_ALIAS_OK; else - iresult = ProtoAliasIn(la, pip); + iresult = ProtoAliasIn(la, pip->ip_src, + &pip->ip_dst, pip->ip_p, &pip->ip_sum); } break; default: - iresult = ProtoAliasIn(la, pip); + iresult = ProtoAliasIn(la, pip->ip_src, &pip->ip_dst, + pip->ip_p, &pip->ip_sum); break; } @@ -1424,11 +1431,13 @@ if (error == 0) iresult = PKT_ALIAS_OK; else - iresult = ProtoAliasOut(la, pip, create); + iresult = ProtoAliasOut(la, &pip->ip_src, + pip->ip_dst, pip->ip_p, &pip->ip_sum, create); } break; default: - iresult = ProtoAliasOut(la, pip, create); + iresult = ProtoAliasOut(la, &pip->ip_src, + pip->ip_dst, pip->ip_p, &pip->ip_sum, create); break; } } else {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803071741.m27HfNVj073775>