diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-11 14:54:10 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-11 14:54:10 +0200 |
commit | 7186be0424ba65942a13b7706017c6ef4338f219 (patch) | |
tree | 70970e85d60ffffe9c19ef3a58730703a026fcf6 /sys/src/9/ip | |
parent | 3a0d5f41a8253b4a3fbb6ae4b6ca77789fd6ae83 (diff) |
devip: make sure ifc is bound in add6 ctl command
Diffstat (limited to 'sys/src/9/ip')
-rw-r--r-- | sys/src/9/ip/ipifc.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/9/ip/ipifc.c b/sys/src/9/ip/ipifc.c index ac0da6bd9..66ae8333b 100644 --- a/sys/src/9/ip/ipifc.c +++ b/sys/src/9/ip/ipifc.c @@ -1576,13 +1576,14 @@ ipifcregisterproxy(Fs *f, Ipifc *ifc, uchar *ip, int add) } char* -ipifcadd6(Ipifc *ifc, char**argv, int argc) +ipifcadd6(Ipifc *ifc, char **argv, int argc) { int plen = 64; char addr[40], preflen[6]; char *params[3]; uchar prefix[IPaddrlen]; Iplifc lifc; + Medium *m; lifc.onlink = 1; lifc.autoflag = 1; @@ -1616,9 +1617,10 @@ ipifcadd6(Ipifc *ifc, char**argv, int argc) return Ebadarg; /* 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; - (*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(preflen, "/%d", plen); |