[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ipfilter
Subject:    Re: block return-rst + IPv6 problem (patch)
From:       Peter Postma <peter () pointless ! nl>
Date:       2003-03-25 17:35:05
[Download RAW message or body]

According to ipfstat, it seems that fastroute fails.

The attached patch should fix the problem (only tested on FreeBSD).
Please correct me, if I made errors.

BTW, I don't understand one thing: where is the variable 'fdp' in
ipfr_fastroute6() used for? It seems like a useless variable to me.

Regards,
Peter

["fastroute6.patch" (text/plain)]

--- ip_fil.c.orig	Fri Dec  6 12:45:45 2002
+++ ip_fil.c	Tue Mar 25 17:05:09 2003
@@ -1937,24 +1937,24 @@
 	struct route_in6 ip6route;
 	struct sockaddr_in6 *dst6;
 	struct route_in6 *ro;
-	struct ifnet *ifp;
+	struct ifnet *ifp = (fdp != NULL) ? fdp->fd_ifp : fin->fin_ifp;
 	frentry_t *fr;
 #if defined(OpenBSD) && (OpenBSD >= 200211)
 	struct route_in6 *ro_pmtu = NULL;
 	struct in6_addr finaldst;
-	ip6_t *ip6;
 #endif
+	ip6_t *ip6;
 	u_long mtu;
 	int error;
 
-	ifp = NULL;
 	ro = &ip6route;
+	ip6 = mtod(m0, struct ip6_t *);
 	fr = fin->fin_fr;
 	bzero((caddr_t)ro, sizeof(*ro));
 	dst6 = (struct sockaddr_in6 *)&ro->ro_dst;
 	dst6->sin6_family = AF_INET6;
 	dst6->sin6_len = sizeof(struct sockaddr_in6);
-	dst6->sin6_addr = fin->fin_fi.fi_src.in6;
+	dst6->sin6_addr = ip6->ip6_dst;
 
 	if (fdp != NULL)
 		ifp = fdp->fd_ifp;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic