Check if BindToDevice and PriorityInheritance are supported.
authorGuus Sliepen <guus@tinc-vpn.org>
Fri, 1 Mar 2002 15:14:29 +0000 (15:14 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Fri, 1 Mar 2002 15:14:29 +0000 (15:14 +0000)
po/nl.po
src/net_packet.c
src/net_setup.c
src/net_socket.c

index 65d4425..64e6452 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,8 +5,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0-cvs\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0-cvs\n"
-"POT-Creation-Date: 2002-03-01 15:22+0100\n"
-"PO-Revision-Date: 2002-03-01 14:19+0100\n"
+"POT-Creation-Date: 2002-03-01 16:10+0100\n"
+"PO-Revision-Date: 2002-03-01 16:10+0100\n"
 "Last-Translator: Guus Sliepen <guus@sliepen.warande.net>\n"
 "Language-Team: Dutch <vertaling@nl.linux.org>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: Guus Sliepen <guus@sliepen.warande.net>\n"
 "Language-Team: Dutch <vertaling@nl.linux.org>\n"
 "MIME-Version: 1.0\n"
@@ -196,7 +196,7 @@ msgstr "%s (%s) antwoordde niet op ping"
 msgid "Timeout from %s (%s) during authentication"
 msgstr "Timeout van %s (%s) tijdens authenticatie"
 
 msgid "Timeout from %s (%s) during authentication"
 msgstr "Timeout van %s (%s) tijdens authenticatie"
 
-#: src/net.c:314 src/net_socket.c:246
+#: src/net.c:314 src/net_socket.c:254
 #, c-format
 msgid "Error while connecting to %s (%s): %s"
 msgstr "Fout tijdens schrijven naar %s (%s): %s"
 #, c-format
 msgid "Error while connecting to %s (%s): %s"
 msgstr "Fout tijdens schrijven naar %s (%s): %s"
@@ -253,69 +253,69 @@ msgstr ""
 msgid "Error while compressing packet to %s (%s)"
 msgstr "Fout tijdens comprimeren pakket naar %s (%s)"
 
 msgid "Error while compressing packet to %s (%s)"
 msgstr "Fout tijdens comprimeren pakket naar %s (%s)"
 
-#: src/net_packet.c:268
+#: src/net_packet.c:269
 #, c-format
 msgid "Setting outgoing packet priority to %d"
 msgstr "Instellen prioriteit uitgaand pakket op %d"
 
 #. SO_PRIORITY doesn't seem to work
 #, c-format
 msgid "Setting outgoing packet priority to %d"
 msgstr "Instellen prioriteit uitgaand pakket op %d"
 
 #. SO_PRIORITY doesn't seem to work
-#: src/net_packet.c:270 src/net_setup.c:479 src/net_socket.c:99
-#: src/net_socket.c:138 src/net_socket.c:165 src/process.c:258
+#: src/net_packet.c:271 src/net_setup.c:483 src/net_socket.c:99
+#: src/net_socket.c:145 src/net_socket.c:172 src/process.c:258
 #: src/process.c:293
 #, c-format
 msgid "System call `%s' failed: %s"
 msgstr "Systeemaanroep `%s' mislukte: %s"
 
 #: src/process.c:293
 #, c-format
 msgid "System call `%s' failed: %s"
 msgstr "Systeemaanroep `%s' mislukte: %s"
 
-#: src/net_packet.c:275
+#: src/net_packet.c:277
 #, c-format
 msgid "Error sending packet to %s (%s): %s"
 msgstr "Fout tijdens verzenden pakket naar %s (%s): %s"
 
 #, c-format
 msgid "Error sending packet to %s (%s): %s"
 msgstr "Fout tijdens verzenden pakket naar %s (%s): %s"
 
-#: src/net_packet.c:292
+#: src/net_packet.c:294
 #, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Verzending pakket van %d bytes naar %s (%s)"
 
 #, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Verzending pakket van %d bytes naar %s (%s)"
 
-#: src/net_packet.c:299
+#: src/net_packet.c:301
 msgid "Packet is looping back to us!"
 msgstr "Pakket komt terug naar ons!"
 
 msgid "Packet is looping back to us!"
 msgstr "Pakket komt terug naar ons!"
 
-#: src/net_packet.c:308
+#: src/net_packet.c:310
 #, c-format
 msgid "Node %s (%s) is not reachable"
 msgstr "Node %s (%s) is niet bereikbaar"
 
 #, c-format
 msgid "Node %s (%s) is not reachable"
 msgstr "Node %s (%s) is niet bereikbaar"
 
-#: src/net_packet.c:316
+#: src/net_packet.c:318
 #, c-format
 msgid "Sending packet to %s via %s (%s)"
 msgstr "Verzending pakket naar %s via %s (%s)"
 
 #, c-format
 msgid "Sending packet to %s via %s (%s)"
 msgstr "Verzending pakket naar %s via %s (%s)"
 
-#: src/net_packet.c:336
+#: src/net_packet.c:338
 #, c-format
 msgid "Broadcasting packet of %d bytes from %s (%s)"
 msgstr "Verspreiding pakket van %d bytes van %s (%s)"
 
 #, c-format
 msgid "Broadcasting packet of %d bytes from %s (%s)"
 msgstr "Verspreiding pakket van %d bytes van %s (%s)"
 
-#: src/net_packet.c:353
+#: src/net_packet.c:355
 #, c-format
 msgid "Flushing queue for %s (%s)"
 msgstr "Legen van wachtrij voor %s (%s)"
 
 #, c-format
 msgid "Flushing queue for %s (%s)"
 msgstr "Legen van wachtrij voor %s (%s)"
 
-#: src/net_packet.c:375
+#: src/net_packet.c:377
 #, c-format
 msgid "This is a bug: %s:%d: %d:%s"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%s"
 
 #, c-format
 msgid "This is a bug: %s:%d: %d:%s"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%s"
 
-#: src/net_packet.c:382
+#: src/net_packet.c:384
 #, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Fout op socket voor inkomend verkeer: %s"
 
 #, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Fout op socket voor inkomend verkeer: %s"
 
-#: src/net_packet.c:388
+#: src/net_packet.c:390
 #, c-format
 msgid "Receiving packet failed: %s"
 msgstr "Ontvangst pakket mislukt: %s"
 
 #, c-format
 msgid "Receiving packet failed: %s"
 msgstr "Ontvangst pakket mislukt: %s"
 
-#: src/net_packet.c:397
+#: src/net_packet.c:399
 #, c-format
 msgid "Received UDP packet from unknown source %s"
 msgstr "Ontvangst UDP pakket van onbekende oorsprong %s"
 #, c-format
 msgid "Received UDP packet from unknown source %s"
 msgstr "Ontvangst UDP pakket van onbekende oorsprong %s"
@@ -369,44 +369,48 @@ msgstr "Ongeldig publiek/priv
 msgid "Invalid routing mode!"
 msgstr "Ongeldige routing modus!"
 
 msgid "Invalid routing mode!"
 msgstr "Ongeldige routing modus!"
 
-#: src/net_setup.c:338
+#: src/net_setup.c:332
+msgid "PriorityInheritance not supported on this platform"
+msgstr "PriorityInheritance wordt niet ondersteund op dit platform"
+
+#: src/net_setup.c:342
 msgid "Bogus maximum timeout!"
 msgstr "Onzinnige maximum timeout!"
 
 msgid "Bogus maximum timeout!"
 msgstr "Onzinnige maximum timeout!"
 
-#: src/net_setup.c:355
+#: src/net_setup.c:359
 msgid "Invalid address family!"
 msgstr "Ongeldige adresfamilie!"
 
 msgid "Invalid address family!"
 msgstr "Ongeldige adresfamilie!"
 
-#: src/net_setup.c:377
+#: src/net_setup.c:381
 msgid "Unrecognized cipher type!"
 msgstr "Onbekend cipher type!"
 
 msgid "Unrecognized cipher type!"
 msgstr "Onbekend cipher type!"
 
-#: src/net_setup.c:412
+#: src/net_setup.c:416
 msgid "Unrecognized digest type!"
 msgstr "Onbekend digest type!"
 
 msgid "Unrecognized digest type!"
 msgstr "Onbekend digest type!"
 
-#: src/net_setup.c:428
+#: src/net_setup.c:432
 msgid "MAC length exceeds size of digest!"
 msgstr "MAC lengte is groter dan dat van digest!"
 
 msgid "MAC length exceeds size of digest!"
 msgstr "MAC lengte is groter dan dat van digest!"
 
-#: src/net_setup.c:433
+#: src/net_setup.c:437
 msgid "Bogus MAC length!"
 msgstr "Onzinnige MAC lengte!"
 
 msgid "Bogus MAC length!"
 msgstr "Onzinnige MAC lengte!"
 
-#: src/net_setup.c:449
+#: src/net_setup.c:453
 msgid "Bogus compression level!"
 msgstr "Onzinnig compressieniveau!"
 
 msgid "Bogus compression level!"
 msgstr "Onzinnig compressieniveau!"
 
-#: src/net_setup.c:494
+#: src/net_setup.c:498
 #, c-format
 msgid "Listening on %s"
 msgstr "Luisterend op %s"
 
 #, c-format
 msgid "Listening on %s"
 msgstr "Luisterend op %s"
 
-#: src/net_setup.c:504
+#: src/net_setup.c:508
 msgid "Ready"
 msgstr "Gereed"
 
 msgid "Ready"
 msgstr "Gereed"
 
-#: src/net_setup.c:507
+#: src/net_setup.c:511
 msgid "Unable to create any listening socket!"
 msgstr "Kon geen enkele luistersocket aanmaken!"
 
 msgid "Unable to create any listening socket!"
 msgstr "Kon geen enkele luistersocket aanmaken!"
 
@@ -415,82 +419,86 @@ msgstr "Kon geen enkele luistersocket aanmaken!"
 msgid "Creating metasocket failed: %s"
 msgstr "Aanmaak van metasocket mislukt: %s"
 
 msgid "Creating metasocket failed: %s"
 msgstr "Aanmaak van metasocket mislukt: %s"
 
-#: src/net_socket.c:120 src/net_socket.c:179
+#: src/net_socket.c:125 src/net_socket.c:187
 #, c-format
 msgid "Can't bind to interface %s: %s"
 msgstr "Kan niet aan interface %s binden: %s"
 
 #, c-format
 msgid "Can't bind to interface %s: %s"
 msgstr "Kan niet aan interface %s binden: %s"
 
-#: src/net_socket.c:130
+#: src/net_socket.c:129
+msgid "BindToDevice not supported on this platform"
+msgstr "BindToDevice wordt niet ondersteund op dit platform"
+
+#: src/net_socket.c:137
 #, c-format
 msgid "Can't bind to %s/tcp: %s"
 msgstr "Kan niet aan %s/tcp binden: %s"
 
 #, c-format
 msgid "Can't bind to %s/tcp: %s"
 msgstr "Kan niet aan %s/tcp binden: %s"
 
-#: src/net_socket.c:157
+#: src/net_socket.c:164
 #, c-format
 msgid "Creating UDP socket failed: %s"
 msgstr "Aanmaak UDP socket mislukte: %s"
 
 #, c-format
 msgid "Creating UDP socket failed: %s"
 msgstr "Aanmaak UDP socket mislukte: %s"
 
-#: src/net_socket.c:189
+#: src/net_socket.c:197
 #, c-format
 msgid "Can't bind to %s/udp: %s"
 msgstr "Kan niet aan %s/udp binden: %s"
 
 #, c-format
 msgid "Can't bind to %s/udp: %s"
 msgstr "Kan niet aan %s/udp binden: %s"
 
-#: src/net_socket.c:212
+#: src/net_socket.c:220
 #, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden"
 
 #, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden"
 
-#: src/net_socket.c:221 src/net_socket.c:316
+#: src/net_socket.c:229 src/net_socket.c:324
 #, c-format
 msgid "Trying to connect to %s (%s)"
 msgstr "Poging tot verbinden met %s (%s)"
 
 #, c-format
 msgid "Trying to connect to %s (%s)"
 msgstr "Poging tot verbinden met %s (%s)"
 
-#: src/net_socket.c:227 src/net_socket.c:323
+#: src/net_socket.c:235 src/net_socket.c:331
 #, c-format
 msgid "Creating socket for %s failed: %s"
 msgstr "Aanmaken socket voor %s mislukt: %s"
 
 #, c-format
 msgid "Creating socket for %s failed: %s"
 msgstr "Aanmaken socket voor %s mislukt: %s"
 
-#: src/net_socket.c:251 src/net_socket.c:261
+#: src/net_socket.c:259 src/net_socket.c:269
 #, c-format
 msgid "Connected to %s (%s)"
 msgstr "Verbonden met %s (%s)"
 
 #, c-format
 msgid "Connected to %s (%s)"
 msgstr "Verbonden met %s (%s)"
 
-#: src/net_socket.c:280
+#: src/net_socket.c:288
 #, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "Kon geen metaverbinding aangaan met %s"
 
 #, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "Kon geen metaverbinding aangaan met %s"
 
-#: src/net_socket.c:344
+#: src/net_socket.c:352
 #, c-format
 msgid "fcntl for %s: %s"
 msgstr "fcntl voor %s: %s"
 
 #, c-format
 msgid "fcntl for %s: %s"
 msgstr "fcntl voor %s: %s"
 
-#: src/net_socket.c:362
+#: src/net_socket.c:370
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: src/net_socket.c:383
+#: src/net_socket.c:391
 #, c-format
 msgid "Already connected to %s"
 msgstr "Reeds verbonden met %s"
 
 #, c-format
 msgid "Already connected to %s"
 msgstr "Reeds verbonden met %s"
 
-#: src/net_socket.c:402
+#: src/net_socket.c:410
 #, c-format
 msgid "No address specified for %s"
 msgstr "Geen adres gespecificeerd voor %s"
 
 #, c-format
 msgid "No address specified for %s"
 msgstr "Geen adres gespecificeerd voor %s"
 
-#: src/net_socket.c:429
+#: src/net_socket.c:437
 #, c-format
 msgid "Accepting a new connection failed: %s"
 msgstr "Aanname van nieuwe verbinding is mislukt: %s"
 
 #, c-format
 msgid "Accepting a new connection failed: %s"
 msgstr "Aanname van nieuwe verbinding is mislukt: %s"
 
-#: src/net_socket.c:445
+#: src/net_socket.c:453
 #, c-format
 msgid "Connection from %s"
 msgstr "Verbinding van %s"
 
 #, c-format
 msgid "Connection from %s"
 msgstr "Verbinding van %s"
 
-#: src/net_socket.c:467
+#: src/net_socket.c:475
 #, c-format
 msgid "Invalid name for outgoing connection in %s line %d"
 msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d"
 #, c-format
 msgid "Invalid name for outgoing connection in %s line %d"
 msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d"
@@ -1033,17 +1041,17 @@ msgstr "Installeren van signaal afhandelaar voor signaal %d (%s) faalde: %s\n"
 msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"
 msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd"
 
 msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"
 msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd"
 
-#: src/route.c:104
+#: src/route.c:105
 #, c-format
 msgid "MAC address %hx:%hx:%hx:%hx:%hx:%hx expired"
 msgstr "MAC adres %hx:%hx:%hx:%hx:%hx:%hx verlopen"
 
 #, c-format
 msgid "MAC address %hx:%hx:%hx:%hx:%hx:%hx expired"
 msgstr "MAC adres %hx:%hx:%hx:%hx:%hx:%hx verlopen"
 
-#: src/route.c:149
+#: src/route.c:150
 #, c-format
 msgid "Cannot route packet: unknown IPv4 destination address %d.%d.%d.%d"
 msgstr "Kan pakket niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d"
 
 #, c-format
 msgid "Cannot route packet: unknown IPv4 destination address %d.%d.%d.%d"
 msgstr "Kan pakket niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d"
 
-#: src/route.c:169
+#: src/route.c:170
 #, c-format
 msgid ""
 "Cannot route packet: unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%"
 #, c-format
 msgid ""
 "Cannot route packet: unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%"
@@ -1052,16 +1060,16 @@ msgstr ""
 "Kan pakket niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%hx:%hx:%hx:%"
 "hx:%hx"
 
 "Kan pakket niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%hx:%hx:%hx:%"
 "hx:%hx"
 
-#: src/route.c:213
+#: src/route.c:214
 msgid "Cannot route packet: received unknown type ARP request"
 msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek"
 
 msgid "Cannot route packet: received unknown type ARP request"
 msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek"
 
-#: src/route.c:226
+#: src/route.c:227
 #, c-format
 msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d"
 msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d"
 
 #, c-format
 msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d"
 msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d"
 
-#: src/route.c:278
+#: src/route.c:279
 #, c-format
 msgid "Cannot route packet: unknown type %hx"
 msgstr "Kan pakket niet routeren: onbekend type %hx"
 #, c-format
 msgid "Cannot route packet: unknown type %hx"
 msgstr "Kan pakket niet routeren: onbekend type %hx"
index bffe4a7..48c429a 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net_packet.c,v 1.1.2.7 2002/03/01 14:09:31 guus Exp $
+    $Id: net_packet.c,v 1.1.2.8 2002/03/01 15:14:29 guus Exp $
 */
 
 #include "config.h"
 */
 
 #include "config.h"
@@ -261,6 +261,7 @@ cp
 
   /* Send the packet */
 
 
   /* Send the packet */
 
+#if defined(SOL_IP) && defined(IP_TOS)
   if(priorityinheritance && origpriority != priority)
     {
       priority = origpriority;
   if(priorityinheritance && origpriority != priority)
     {
       priority = origpriority;
@@ -269,6 +270,7 @@ cp
       if(setsockopt(udp_socket[0], SOL_IP, IP_TOS, &priority, sizeof(priority))) /* SO_PRIORITY doesn't seem to work */
        syslog(LOG_ERR, _("System call `%s' failed: %s"), "setsockopt", strerror(errno));
     }
       if(setsockopt(udp_socket[0], SOL_IP, IP_TOS, &priority, sizeof(priority))) /* SO_PRIORITY doesn't seem to work */
        syslog(LOG_ERR, _("System call `%s' failed: %s"), "setsockopt", strerror(errno));
     }
+#endif
 
   if((sendto(udp_socket[0], (char *)&inpkt->seqno, inpkt->len, 0, &(n->address.sa), SALEN(n->address.sa))) < 0)
     {
 
   if((sendto(udp_socket[0], (char *)&inpkt->seqno, inpkt->len, 0, &(n->address.sa), SALEN(n->address.sa))) < 0)
     {
index f8a8b99..77e7a7c 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net_setup.c,v 1.1.2.8 2002/03/01 14:09:31 guus Exp $
+    $Id: net_setup.c,v 1.1.2.9 2002/03/01 15:14:29 guus Exp $
 */
 
 #include "config.h"
 */
 
 #include "config.h"
@@ -327,6 +327,10 @@ cp
     routing_mode = RMODE_ROUTER;
 
   get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance);
     routing_mode = RMODE_ROUTER;
 
   get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance);
+#if !defined(SOL_IP) || !defined(IP_TOS)
+  if(priorityinheritance)
+    syslog(LOG_WARNING, _("PriorityInheritance not supported on this platform"));
+#endif
 
   if(!get_config_int(lookup_config(config_tree, "MACExpire"), &macexpire))
     macexpire= 600;
 
   if(!get_config_int(lookup_config(config_tree, "MACExpire"), &macexpire))
     macexpire= 600;
index 63760af..cc79926 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net_socket.c,v 1.1.2.7 2002/03/01 14:09:31 guus Exp $
+    $Id: net_socket.c,v 1.1.2.8 2002/03/01 15:14:29 guus Exp $
 */
 
 #include "config.h"
 */
 
 #include "config.h"
@@ -81,7 +81,7 @@ int setup_listen_socket(sockaddr_t *sa)
   int nfd, flags;
   char *addrstr;
   int option;
   int nfd, flags;
   char *addrstr;
   int option;
-#ifdef HAVE_LINUX
+#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
   char *interface;
   struct ifreq ifr;
 #endif
   char *interface;
   struct ifreq ifr;
 #endif
@@ -104,14 +104,19 @@ cp
 
   option = 1;
   setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
   option = 1;
   setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
-#ifdef HAVE_LINUX
+
+#if defined(SOL_TCP) && defined(TCP_NODELAY)
   setsockopt(nfd, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
   setsockopt(nfd, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
+#endif
 
 
+#if defined(SOL_IP) && defined(IP_TOS) && defined(IPTOS_LOWDELAY)
   option = IPTOS_LOWDELAY;
   setsockopt(nfd, SOL_IP, IP_TOS, &option, sizeof(option));
   option = IPTOS_LOWDELAY;
   setsockopt(nfd, SOL_IP, IP_TOS, &option, sizeof(option));
+#endif
 
   if(get_config_string(lookup_config(config_tree, "BindToInterface"), &interface))
     {
 
   if(get_config_string(lookup_config(config_tree, "BindToInterface"), &interface))
     {
+#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
       memset(&ifr, 0, sizeof(ifr));
       strncpy(ifr.ifr_ifrn.ifrn_name, interface, IFNAMSIZ);
       if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)))
       memset(&ifr, 0, sizeof(ifr));
       strncpy(ifr.ifr_ifrn.ifrn_name, interface, IFNAMSIZ);
       if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)))
@@ -120,8 +125,10 @@ cp
           syslog(LOG_ERR, _("Can't bind to interface %s: %s"), interface, strerror(errno));
           return -1;
        }
           syslog(LOG_ERR, _("Can't bind to interface %s: %s"), interface, strerror(errno));
           return -1;
        }
-    }
+#else
+      syslog(LOG_WARNING, _("BindToDevice not supported on this platform"));
 #endif
 #endif
+    }
 
   if(bind(nfd, &sa->sa, SALEN(sa->sa)))
     {
 
   if(bind(nfd, &sa->sa, SALEN(sa->sa)))
     {
@@ -147,7 +154,7 @@ int setup_vpn_in_socket(sockaddr_t *sa)
   int nfd, flags;
   char *addrstr;
   int option;
   int nfd, flags;
   char *addrstr;
   int option;
-#ifdef HAVE_LINUX
+#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
   char *interface;
   struct ifreq ifr;
 #endif
   char *interface;
   struct ifreq ifr;
 #endif
@@ -168,7 +175,8 @@ cp
 
   option = 1;
   setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
   option = 1;
   setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
-#ifdef HAVE_LINUX
+
+#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
   if(get_config_string(lookup_config(config_tree, "BindToInterface"), &interface))
     {
       memset(&ifr, 0, sizeof(ifr));
   if(get_config_string(lookup_config(config_tree, "BindToInterface"), &interface))
     {
       memset(&ifr, 0, sizeof(ifr));