gif interface not passing IPv6 packets

Li, Qing qing.li at bluecoat.com
Mon Oct 3 21:33:19 UTC 2011


> 
> Just to let you know that I was doing a lot of testing off of the
> mailing list with Hiroki Sato and we basically discovered that I was
> missing an alias on my lo0 interface. He first advised me to try
> testing with adding a /126 to gif0 rather than a /128 which worked
> successfully. Then he advised me to go back to the original
> configuration but also run ifconfig lo0 2a01:348:6:45c::2/128 alias
> which added the correct routes and resolved the problem. Whilst this
> is a workaround it obviously doesn't resolve the actual root cause so
> thank you if you come up with a patch.
> 

You don't need any aliases to make this configuration work. 

Adding the interface alias triggers the code that installs the 
proper routing entry for the local end of the gif tunnel.

The suggested workaround (wrt configuring aliases and lo0 manipulation)
is no different from doing the following:

	ifconfig gif create
	ifconfig gif0 inet6 -ifdisabled 2a01:348:6:45c::2
	ifconfig gif0 inet6 2a01:348:6:45c::2 2a01:348:6:45c::1

>
> I'm still really confused though why it worked before my power failure
> and failed afterwards when as far as I'm aware nothing has changed on
> the system.
> 
> I'll await the patch and test it out when you post it.
>

The root cause is in the use of "IFA_ROUTE" and "IFA_RTSELF" flags.

For any IFF_POINTOPOINT interface, the IFA_ROUTE is an indication both
end of the tunnel has been specified and the proper route has been
installed.

IFA_RTSELF is a flag that indicates a route over the lo0 interface 
has been appropriated for the interface address. 

Please give the following patch a try and let me know how it
works out for you.

	http://people.freebsd.org/~qingli/in6.c.diff

--Qing





More information about the freebsd-net mailing list