summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Roberts <vieuxtech@gmail.com>2013-07-08 19:07:23 -0700
committerSam Roberts <vieuxtech@gmail.com>2013-07-08 19:07:23 -0700
commitd5d7b1f92659094172f5e2f9dec3996db5720b6d (patch)
tree92fc1b73e2e34f5fe5a75ace9ec1f91d0aadb815
parent305e58689d14f8f758ac675167428718c6b6a203 (diff)
parent408fa2266a4af402152cc0f1e9a40b56477b995a (diff)
downloadlibnet-d5d7b1f92659094172f5e2f9dec3996db5720b6d.tar.gz
Merge pull request #32 from ThomasHabets/get-vlan-mac
Make libnet_get_hwaddr() work with 802.1q interfaces in bpf (BSD).
-rw-r--r--libnet/src/libnet_link_bpf.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libnet/src/libnet_link_bpf.c b/libnet/src/libnet_link_bpf.c
index 875a8e4..ec88546 100644
--- a/libnet/src/libnet_link_bpf.c
+++ b/libnet/src/libnet_link_bpf.c
@@ -314,7 +314,11 @@ libnet_get_hwaddr(libnet_t *l)
if (ifm->ifm_type == RTM_IFINFO)
{
sdl = (struct sockaddr_dl *)(ifm + 1);
- if (sdl->sdl_type != IFT_ETHER)
+ if (sdl->sdl_type != IFT_ETHER
+ && sdl->sdl_type != IFT_FASTETHER
+ && sdl->sdl_type != IFT_FASTETHERFX
+ && sdl->sdl_type != IFT_GIGABITETHERNET
+ && sdl->sdl_type != IFT_L2VLAN)
continue;
if (strncmp(&sdl->sdl_data[0], l->device, sdl->sdl_nlen) == 0)
{
@@ -324,6 +328,12 @@ libnet_get_hwaddr(libnet_t *l)
}
}
free(buf);
+ if (next == end) {
+ snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
+ "%s(): interface %s of known type not found.",
+ __func__, l->device);
+ return NULL;
+ }
return (&ea);
}