From owner-p4-projects@FreeBSD.ORG Fri Mar 7 17:41:24 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 433361065683; Fri, 7 Mar 2008 17:41:24 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 034FF1065681 for ; Fri, 7 Mar 2008 17:41:24 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E53688FC20 for ; Fri, 7 Mar 2008 17:41:23 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m27HfNb0073777 for ; Fri, 7 Mar 2008 17:41:23 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m27HfNVj073775 for perforce@freebsd.org; Fri, 7 Mar 2008 17:41:23 GMT (envelope-from piso@freebsd.org) Date: Fri, 7 Mar 2008 17:41:23 GMT Message-Id: <200803071741.m27HfNVj073775@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 137096 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Mar 2008 17:41:24 -0000 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 {