diff options
author | Sam Roberts <vieuxtech@gmail.com> | 2010-03-31 16:52:12 -0700 |
---|---|---|
committer | Sam Roberts <vieuxtech@gmail.com> | 2010-03-31 16:52:12 -0700 |
commit | 27282bb5a1ab78210245e226c4c82605b00a12bb (patch) | |
tree | 8f3a3441cab229aff740da5283fae4f843863282 | |
parent | 3f502a1eb0d6e77e3be03183f1577d66f6bbe45a (diff) | |
download | libnet-27282bb5a1ab78210245e226c4c82605b00a12bb.tar.gz |
Make libnet_get_hwaddr work in the last few releases of OpenBSD (stu@spacehopper.org)
-rw-r--r-- | libnet/src/libnet_link_bpf.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libnet/src/libnet_link_bpf.c b/libnet/src/libnet_link_bpf.c index 8963a39..93231ec 100644 --- a/libnet/src/libnet_link_bpf.c +++ b/libnet/src/libnet_link_bpf.c @@ -43,8 +43,10 @@ #include <sys/sysctl.h> #include <net/route.h> #include <net/if_dl.h> +#include <net/if_types.h> #include "../include/gnuc.h" -#include "../include/bpf.h" + +#include <bpf.h> #ifdef HAVE_OS_PROTO_H #include "../include/os-proto.h" @@ -308,9 +310,13 @@ libnet_get_hwaddr(libnet_t *l) for (next = buf ; next < end ; next += ifm->ifm_msglen) { ifm = (struct if_msghdr *)next; + if (ifm->ifm_version != RTM_VERSION) + continue; if (ifm->ifm_type == RTM_IFINFO) { sdl = (struct sockaddr_dl *)(ifm + 1); + if (sdl->sdl_type != IFT_ETHER) + continue; if (strncmp(&sdl->sdl_data[0], l->device, sdl->sdl_nlen) == 0) { if (!(ea = malloc(sizeof(struct libnet_ether_addr)))) |