svn commit: r186086 - head/sys/netinet

Bjoern A. Zeeb bz at FreeBSD.org
Sun Dec 14 17:47:34 UTC 2008


Author: bz
Date: Sun Dec 14 17:47:33 2008
New Revision: 186086
URL: http://svn.freebsd.org/changeset/base/186086

Log:
  Add a check, that is currently under discussion for 8 but that we need
  to keep for 7-STABLE when MFCing in_pcbladdr() to not change the
  behaviour there.
  
  With this a destination route via a loopback interface is treated as
  a valid and reachable thing for IPv4 source address selection, even
  though nothing of that network is ever directly reachable, but it is
  more like a blackhole route.
  With this the source address will be selected and IPsec can grab the
  packets before we would discard them at a later point, encapsulate them
  and send them out from a different tunnel endpoint IP.
  
  Discussed on:	net
  Reported by:	Frank Behrens <frank at harz.behrens.de>
  Tested by:	Frank Behrens <frank at harz.behrens.de>
  MFC after:	4 weeks (just so that I get the mail)

Modified:
  head/sys/netinet/in_pcb.c

Modified: head/sys/netinet/in_pcb.c
==============================================================================
--- head/sys/netinet/in_pcb.c	Sun Dec 14 16:56:47 2008	(r186085)
+++ head/sys/netinet/in_pcb.c	Sun Dec 14 17:47:33 2008	(r186086)
@@ -695,6 +695,10 @@ in_pcbladdr(struct inpcb *inp, struct in
 			ia = ifatoia(ifa_ifwithnet(sintosa(&sain)));
 
 		if (cred == NULL || !jailed(cred)) {
+#if __FreeBSD_version < 800000
+			if (ia == NULL)
+				ia = (struct in_ifaddr *)sro.ro_rt->rt_ifa;
+#endif
 			if (ia == NULL) {
 				error = ENETUNREACH;
 				goto done;


More information about the svn-src-all mailing list