List Info

Thread: SIOCALIFADDR + IPv6 = surprise




SIOCALIFADDR + IPv6 = surprise
user name
2006-09-21 01:12:17
Last night I was trying to add addresses to a point-to-point
IPv6
interface with SIOCALIFADDR, and I was astonished when the
ioctl returned
0, indicating success, but no addresses had been added!  I
consider this
a serious bug.

Reading the code, it looks like the call path is this,

ifioctl(,SIOCALIFADDR,) ->
in6_control(,SIOCALIFADDR,) ->
in6_lifaddr_ioctl(,SIOCALIFADDR,) ->
in6_control(,SIOCAIFADDR_IN6,) ->
in6_update_ifa()

in6_lifaddr_ioctl converts its if_laddrreq argument into an
in6_aliasreq,
however, it does not initialize the ifra_lifetime members
ia6t_vltime
and ia6t_pltime.  It calls in6_control(,SIOCAIFADDR_IN6,) to
add an
IPv6 address with 0 lifetime; in6_control() obliges by
adding *no*
address at all.

Seems to me that in6_lifaddr_ioctl ought to initialize
both the ifra_lifetime members ia6t_vltime and ia6t_pltime
to
ND6_INFINITE_LIFETIME.  I am testing a patch that does just
that, and
now the point-to-point addresses "take".  I'm
going to check my patch
in the next day or two, if nobody squeals.

Dave

-- 
David Young             OJC Technologies
dyoungojctech.com      Urbana, IL * (217) 278-3933
Index: sys/netinet6/in6.c
============================================================
=======
RCS file: /cvsroot/src/sys/netinet6/in6.c,v
retrieving revision 1.110
diff -p -u -u -p -r1.110 in6.c
--- sys/netinet6/in6.c	25 Aug 2006 18:29:17 -0000	1.110
+++ sys/netinet6/in6.c	21 Sep 2006 01:11:14 -0000
 -1559,7
+1556,8  in6_lifaddr_ioctl(so, cmd, data, ifp, l)
 
 		ifra.ifra_prefixmask.sin6_len = sizeof(struct
sockaddr_in6);
 		in6_prefixlen2mask(&ifra.ifra_prefixmask.sin6_addr,
prefixlen);
-
+		ifra.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
+		ifra.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
 		ifra.ifra_flags = iflr->flags & ~IFLR_PREFIX;
 		return in6_control(so, SIOCAIFADDR_IN6,
(caddr_t)&ifra, ifp, l);
 	    }
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )