in.c autoadding prefix route

Ruslan Ermilov ru at freebsd.org
Fri Nov 12 00:30:43 PST 2004


Hi Max,

On Thu, Nov 11, 2004 at 09:24:05PM +0100, Max Laier wrote:
> I know I have sent this a couple of times before, but never got anywhere. This 
> time I am set to commit!
> 
Hey, you did it!  ;)

> The attached patch (http://people.freebsd.org/~mlaier/in.c.patch) derived from 
> WIDE via OpenBSD in.c, rev 1.21 improves the handling of automatic prefix 
> routes.
> 
> Right now you can't have two legs into the same network. If you want to, you 
> must give on of the interfaces a host address only (netmask /32). This way it 
> is not possible to hand over the route if one of the interfaces is 
> "removed" (however this is done in the special case).
> 
> The patch allows to add more than on IPv4 address with the same prefix. In the 
> case that there is a route already, we leave it alone and add the new address 
> without the IFA_ROUTE flag. When we remove an address later on, that has a 
> route associated, we try to find an alternative address to use for the route 
> and hand it over.
> 
I cannot give your patch a thorough review at the moment, but I like the
algorithm, and I don't see how it can hurt anything.

> --- ../dist/sys/netinet/in.c	Sat Nov  6 21:01:08 2004
> +++ sys/netinet/in.c	Mon Nov  8 02:05:17 2004
> @@ -654,14 +684,7 @@
>  	register struct ifnet *ifp;
>  	register struct in_ifaddr *ia;
>  {
> -
> -	if ((ia->ia_flags & IFA_ROUTE) == 0)
> -		return;
> -	if (ifp->if_flags & (IFF_LOOPBACK|IFF_POINTOPOINT))
> -		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, RTF_HOST);
> -	else
> -		rtinit(&(ia->ia_ifa), (int)RTM_DELETE, 0);
> -	ia->ia_flags &= ~IFA_ROUTE;
> +	in_scrubprefix(ia);
>  }
>  
Looks like "ifp" argument is no longer needed for in_ifscrub(),
perhaps it should be killed then.

Also, there are a lot of style bugs (besides those that others
have already mentioned), the most annoying is comments -- they
should be written as per style(9) (make them look like the real
sentences).


Cheers,
-- 
Ruslan Ermilov
ru at FreeBSD.org
FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20041112/db6dc058/attachment.bin


More information about the freebsd-net mailing list