summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Roberts <vieuxtech@gmail.com>2010-03-31 16:52:12 -0700
committerSam Roberts <vieuxtech@gmail.com>2010-03-31 16:52:12 -0700
commit27282bb5a1ab78210245e226c4c82605b00a12bb (patch)
tree8f3a3441cab229aff740da5283fae4f843863282
parent3f502a1eb0d6e77e3be03183f1577d66f6bbe45a (diff)
downloadlibnet-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.c8
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))))