PERFORCE change 113712 for review

Paolo Pisati piso at FreeBSD.org
Tue Jan 30 17:01:24 UTC 2007


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

Change 113712 by piso at piso_newluxor on 2007/01/30 17:00:51

	Switch second argument of IcmpAliasOut*(), UdpAliasOut() or ProtoAliasOut()
	from 'struct ip *' to 'void *' in case libalias run in kernel land.

Affected files ...

.. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#43 edit

Differences ...

==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#43 (text+ko) ====

@@ -260,15 +260,15 @@
 static int	IcmpAliasIn2(struct libalias *, void *);
 static int	IcmpAliasIn(struct libalias *, void *);
 
-static int	IcmpAliasOut1(struct libalias *, struct ip *, int create);
-static int	IcmpAliasOut2(struct libalias *, struct ip *);
-static int	IcmpAliasOut(struct libalias *, struct ip *, int create);
+static int	IcmpAliasOut1(struct libalias *, void *, int create);
+static int	IcmpAliasOut2(struct libalias *, void *);
+static int	IcmpAliasOut(struct libalias *, void *, int create);
 
 static int	ProtoAliasIn(struct libalias *, void *);
-static int	ProtoAliasOut(struct libalias *, struct ip *, int create);
+static int	ProtoAliasOut(struct libalias *, void *, int create);
 
 static int	UdpAliasIn(struct libalias *, void *);
-static int	UdpAliasOut(struct libalias *, struct ip *, int create);
+static int	UdpAliasOut(struct libalias *, void *, int create);
 
 static int	TcpAliasIn(struct libalias *, void *);
 static int	TcpAliasOut(struct libalias *, struct ip *, int, int create);
@@ -477,14 +477,21 @@
 
 
 static int
-IcmpAliasOut1(struct libalias *la, struct ip *pip, int create)
+IcmpAliasOut1(struct libalias *la, void *ptr, int create)
 {
 /*
     Alias outgoing echo and timestamp requests.
     De-alias outgoing echo and timestamp replies.
 */
 	struct alias_link *lnk;
+	struct ip *pip;
 	struct icmp *ic;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 	ic = (struct icmp *)ip_next(pip);
@@ -522,17 +529,23 @@
 
 
 static int
-IcmpAliasOut2(struct libalias *la, struct ip *pip)
+IcmpAliasOut2(struct libalias *la, void *ptr)
 {
 /*
     Alias outgoing ICMP error messages containing
     IP header and first 64 bits of datagram.
 */
-	struct ip *ip;
+	struct ip *ip, *pip;
 	struct icmp *ic, *ic2;
 	struct udphdr *ud;
 	struct tcphdr *tc;
 	struct alias_link *lnk;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 	ic = (struct icmp *)ip_next(pip);
@@ -623,10 +636,17 @@
 
 
 static int
-IcmpAliasOut(struct libalias *la, struct ip *pip, int create)
+IcmpAliasOut(struct libalias *la, void *ptr, int create)
 {
 	int iresult;
 	struct icmp *ic;
+	struct ip *pip;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 	(void)create;
@@ -642,18 +662,18 @@
 	case ICMP_ECHO:
 	case ICMP_TSTAMP:
 		if (ic->icmp_code == 0) {
-			iresult = IcmpAliasOut1(la, pip, create);
+			iresult = IcmpAliasOut1(la, ptr, create);
 		}
 		break;
 	case ICMP_UNREACH:
 	case ICMP_SOURCEQUENCH:
 	case ICMP_TIMXCEED:
 	case ICMP_PARAMPROB:
-		iresult = IcmpAliasOut2(la, pip);
+		iresult = IcmpAliasOut2(la, ptr);
 		break;
 	case ICMP_ECHOREPLY:
 	case ICMP_TSTAMPREPLY:
-		iresult = IcmpAliasOut1(la, pip, create);
+		iresult = IcmpAliasOut1(la, ptr, create);
 	}
 	return (iresult);
 }
@@ -701,7 +721,7 @@
 
 
 static int
-ProtoAliasOut(struct libalias *la, struct ip *pip, int create)
+ProtoAliasOut(struct libalias *la, void *ptr, int create)
 {
 /*
   Handle outgoing IP packets. The
@@ -709,6 +729,13 @@
   the source IP address of the packet.
 */
 	struct alias_link *lnk;
+	struct ip *pip;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 	(void)create;
@@ -807,11 +834,18 @@
 }
 
 static int
-UdpAliasOut(struct libalias *la, struct ip *pip, int create)
+UdpAliasOut(struct libalias *la, void *ptr, int create)
 {
+	struct ip *pip;
 	struct udphdr *ud;
 	struct alias_link *lnk;
 	int error;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 /* Return if proxy-only mode is enabled */
@@ -1127,7 +1161,7 @@
 
 /* Local prototypes */
 static int	FragmentIn(struct libalias *, void *);
-static int	FragmentOut(struct libalias *, struct ip *);
+static int	FragmentOut(struct libalias *, void *);
 
 
 static int
@@ -1159,9 +1193,16 @@
 
 
 static int
-FragmentOut(struct libalias *la, struct ip *pip)
+FragmentOut(struct libalias *la, void *ptr)
 {
+	struct ip *pip;
 	struct in_addr alias_address;
+#ifdef _KERNEL
+	// XXX m_pullup()
+	pip = ptr;
+#else
+	pip = ptr;
+#endif
 
 	LIBALIAS_LOCK_ASSERT(la);
 	alias_address = FindAliasAddress(la, pip->ip_src);


More information about the p4-projects mailing list