devip: make sure ifc is bound in add6 ctl command

This commit is contained in:
cinap_lenrek 2019-05-11 14:54:10 +02:00
parent 3a0d5f41a8
commit 7186be0424

View file

@ -1576,13 +1576,14 @@ ipifcregisterproxy(Fs *f, Ipifc *ifc, uchar *ip, int add)
} }
char* char*
ipifcadd6(Ipifc *ifc, char**argv, int argc) ipifcadd6(Ipifc *ifc, char **argv, int argc)
{ {
int plen = 64; int plen = 64;
char addr[40], preflen[6]; char addr[40], preflen[6];
char *params[3]; char *params[3];
uchar prefix[IPaddrlen]; uchar prefix[IPaddrlen];
Iplifc lifc; Iplifc lifc;
Medium *m;
lifc.onlink = 1; lifc.onlink = 1;
lifc.autoflag = 1; lifc.autoflag = 1;
@ -1616,9 +1617,10 @@ ipifcadd6(Ipifc *ifc, char**argv, int argc)
return Ebadarg; return Ebadarg;
/* issue "add" ctl msg for v6 link-local addr and prefix len */ /* issue "add" ctl msg for v6 link-local addr and prefix len */
if(ifc->m->pref2addr == nil) m = ifc->m;
if(m == nil || m->pref2addr == nil)
return Ebadarg; return Ebadarg;
(*ifc->m->pref2addr)(prefix, ifc->mac); /* mac → v6 link-local addr */ (*m->pref2addr)(prefix, ifc->mac); /* mac → v6 link-local addr */
sprint(addr, "%I", prefix); sprint(addr, "%I", prefix);
sprint(preflen, "/%d", plen); sprint(preflen, "/%d", plen);