summaryrefslogtreecommitdiff
path: root/libnet/src/libnet_raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnet/src/libnet_raw.c')
-rw-r--r--libnet/src/libnet_raw.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libnet/src/libnet_raw.c b/libnet/src/libnet_raw.c
index f370139..93e4958 100644
--- a/libnet/src/libnet_raw.c
+++ b/libnet/src/libnet_raw.c
@@ -218,7 +218,7 @@ libnet_open_raw6(libnet_t *l)
return (-1);
}
- l->fd = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW);
+ l->fd = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
if (l->fd == -1)
{
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
@@ -235,6 +235,13 @@ libnet_open_raw6(libnet_t *l)
strerror(errno));
goto bad;
}
+ if(l->device != NULL)
+ if(setsockopt(l->fd, SOL_SOCKET, SO_BINDTODEVICE, l->device, strlen(l->device)) == -1) {
+ snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
+ "%s(): set SO_BINDTODEVICE failed: %s\n", __func__, strerror(errno));
+ goto bad;
+ }
+
#endif /* __linux__ */
return (l->fd);