diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2011-01-08 11:22:38 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2011-01-08 11:22:38 +0100 |
commit | dad7ee70c1711b2cbdfd86c615736fe12c0d126a (patch) | |
tree | a80bcac617403de8cf9388ab90afb5482c0053f3 /sysdep | |
parent | e7b4948cbd3e4cacf4fe0f774b44d1f74029ea6d (diff) |
Fixes interface names on BSD systems.
Diffstat (limited to 'sysdep')
-rw-r--r-- | sysdep/bsd/krt-sock.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 53b30ca4..0e96f410 100644 --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@ -412,7 +412,6 @@ krt_read_ifinfo(struct ks_msg *msg) struct sockaddr_dl *dl = NULL; unsigned int i; struct iface *iface = NULL, f; - char *ifname = "(none)"; int fl = ifm->ifm_flags; for(i = 1; i!=0; i <<= 1) @@ -434,18 +433,17 @@ krt_read_ifinfo(struct ks_msg *msg) return; } - if(dl) ifname = dl->sdl_data; - iface = if_find_by_index(ifm->ifm_index); if(!iface) { /* New interface */ if(!dl) return; /* No interface name, ignoring */ - DBG("New interface \"%s\" found", ifname); + bzero(&f, sizeof(f)); f.index = ifm->ifm_index; - strncpy(f.name, ifname, sizeof(f.name) -1); + memcpy(f.name, dl->sdl_data, MIN(sizeof(f.name)-1, dl->sdl_nlen)); + DBG("New interface '%s' found", f.name); } else { |