summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2011-01-08 11:22:38 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2011-01-08 11:22:38 +0100
commitdad7ee70c1711b2cbdfd86c615736fe12c0d126a (patch)
treea80bcac617403de8cf9388ab90afb5482c0053f3
parente7b4948cbd3e4cacf4fe0f774b44d1f74029ea6d (diff)
downloadbird-dad7ee70c1711b2cbdfd86c615736fe12c0d126a.tar
bird-dad7ee70c1711b2cbdfd86c615736fe12c0d126a.zip
Fixes interface names on BSD systems.
-rw-r--r--sysdep/bsd/krt-sock.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 53b30ca..0e96f41 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
{