bin/56341: ifconfig(8) does not display tunnel endpoints for gre(4)
Bruce M Simpson
bms at spc.org
Tue Sep 2 17:30:21 PDT 2003
>Number: 56341
>Category: bin
>Synopsis: ifconfig(8) does not display tunnel endpoints for gre(4)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Sep 02 17:30:14 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Bruce M Simpson
>Release: FreeBSD 5.1-RELEASE i386
>Organization:
>Environment:
System: FreeBSD saboteur.dek.spc.org 5.1-RELEASE FreeBSD 5.1-RELEASE #4: Wed Aug 20 07:43:54 BST 2003 root at saboteur.dek.spc.org:/usr/src/sys/i386/compile/SABOTEUR i386
>Description:
ifconfig(8) does NOT display the tunnel physical endpoints correctly
for a GRE interface under certain conditions.
>How-To-Repeat:
When the system is compiled with INET6 support, then any instance of
a tunnel clone interface must have an AF_INET6 address configured on
it for the tunnel source/destination to be displayed.
Run ifconfig -a with a configured gre interface in a world which has
both options INET and options INET6 in the kernel and has been
built in sync with such a kernel.
The notion of a tunnel interface having more than one address family
is a bit silly (possible, by any means, but it screws up the behaviour
of the SIOCGIFPSRCADDR ioctls.
>Fix:
Patching the gre driver to return an empty address in the case of
IPV6 will NOT work. this is an ifconfig bug. basically the ifconfig
tunnel_status code tries to be too smart for its own good. it asks for
an AF_INET6 datagram socket. this always succeeds when INET6 is enabled
and active in the system.
The lame fix is to always return an AF_INET address even for the
IN6 suffixed ifioctls, in a tunnel driver which doesn't support INET6
payloads.
This is not the way to fix the problem, though, as it relies on
ifconfig making the assumption that all tunnel drivers in the system
support SIOCGIFPSRCADDR_IN6 et al even if ip6 makes no sense for the
given encapsulation.
It also requires that an INET6 define be visible if the module is
compiled in its own module directory.
The behaviour of ifconfig(8) is attributable to the KAME import;
the other tunnel clonable drivers in the system are KAME derived and
for these other drivers, ifconfig(8) behaves correctly.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list