set IP_PKTINFO on controlfd for recvfromto
authorBrendan O'Dea <bod@optus.net>
Wed, 5 Apr 2006 01:50:33 +0000 (01:50 +0000)
committerBrendan O'Dea <bod@optus.net>
Wed, 5 Apr 2006 01:50:33 +0000 (01:50 +0000)
l2tpns.c

index 27a5821..ac38302 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -4,7 +4,7 @@
 // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
 // vim: sw=8 ts=8
 
 // Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
 // vim: sw=8 ts=8
 
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.157 2006-04-05 01:45:57 bodea Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.158 2006-04-05 01:50:33 bodea Exp $";
 
 #include <arpa/inet.h>
 #include <assert.h>
 
 #include <arpa/inet.h>
 #include <assert.h>
@@ -634,6 +634,7 @@ static void initudp(void)
        addr.sin_port = htons(NSCTL_PORT);
        controlfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        setsockopt(controlfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
        addr.sin_port = htons(NSCTL_PORT);
        controlfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        setsockopt(controlfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+       setsockopt(controlfd, SOL_IP, IP_PKTINFO, &on, sizeof(on)); // recvfromto
        if (bind(controlfd, (void *) &addr, sizeof(addr)) < 0)
        {
                LOG(0, 0, 0, "Error in control bind: %s\n", strerror(errno));
        if (bind(controlfd, (void *) &addr, sizeof(addr)) < 0)
        {
                LOG(0, 0, 0, "Error in control bind: %s\n", strerror(errno));