[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Linux + IPv6 + KDC ?

Arkadiusz Miskiewicz <misiek@pld.org.pl> writes:
> > The problem is that the KDC cannot figure out the v6 addresses
> > assigned on an interface on Linux, since SIOCGIFCONF does not return
> > these.
> - and probably never will do this (because inet6 sockaddr doesn't
>   fit into ifreq structure). 

You mean `struct sockaddr' here, right?

struct sockaddr {
        sa_family_t     sa_family;      /* address family, AF_xxx       */
        char            sa_data[14];    /* 14 bytes of protocol address */

Yeah, that doesn't fit.  A larger problem is that there's no length
field so you don't know how much data of unknown type to skip over.

But, are these definitions set into stone?  Why can't we change either
a `struct sockaddr' or introduce another type for use in SIOCGIFCONF
(and of course, keep the old one for backwards compatability)?

>   There was discussion about this on netdev or ipv6-ports-devel
>   mailing list.

When I tried asking questions about this on netdev (I believe), I
basically got the reply back that there was no interest what-so-ever
in fixing this problem.

I don't have especially much fondness for SIOCGIFCONF, it's a rather
ugly interface, but it's there and it basically works on all kinds of
Unices and address families.  And instead of doing different hacks for
every combination of OS * af, we should then define a new interface
that works on them.

> > c) add code to find_all_addresses to use whatever other means there
> > are for finding the configured v6 addresses.
> I think that code for getting v6 addresses via /proc should
> be included (and of course compiled only on Linux)

If nobody is interested in fixing the real problem, sure, we would
have to have a kludge here.  And nobody has sent me any patches for
doing it this way.  Anyone?