PERFORCE change 137096 for review

Paolo Pisati piso at FreeBSD.org
Fri Mar 7 17:41:24 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=137096

Change 137096 by piso at 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 {


More information about the p4-projects mailing list