]> tinc-vpn.org Git - tinc/commitdiff
Run ip link up before adding addresses and routes
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 7 Apr 2024 13:41:04 +0000 (15:41 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 7 Apr 2024 13:41:04 +0000 (15:41 +0200)
On Linux, some iproute2 commands to set addresses and add routes don't work
or have no effect if the link is not up, so make sure we set the link up
first.

src/ifconfig.c

index d4f13865a0b686c74351118b13bb8b0c6b42b50b..9913b81562703c24e9da5dae3c99e34d84590abd 100644 (file)
@@ -28,6 +28,9 @@ static long start;
 #ifndef HAVE_WINDOWS
 void ifconfig_header(FILE *out) {
        fprintf(out, "#!/bin/sh\n");
+#ifdef HAVE_LINUX
+       fprintf(out, "ip link set \"$INTERFACE\" up\n");
+#endif
        start = ftell(out);
 }
 
@@ -50,12 +53,17 @@ void ifconfig_slaac(FILE *out) {
 
 bool ifconfig_footer(FILE *out) {
        if(ftell(out) == start) {
-               fprintf(out, "echo 'Unconfigured tinc-up script, please edit '$0'!'\n\n#ifconfig $INTERFACE <your vpn IP address> netmask <netmask of whole VPN>\n");
-               return false;
-       } else {
+               fprintf(out,
 #ifdef HAVE_LINUX
-               fprintf(out, "ip link set \"$INTERFACE\" up\n");
+                       "#ip addr add <your vpn IP address>/<prefix of whole VPN> dev $INTERFACE\n"
 #else
+                       "#ifconfig $INTERFACE <your vpn IP address>/<prefix of whole VPN>\n"
+#endif
+                       "\n"
+                       "echo \"Unconfigured tinc-up script, please edit '$0'!\" >&2\n");
+               return false;
+       } else {
+#ifndef HAVE_LINUX
                fprintf(out, "ifconfig \"$INTERFACE\" up\n");
 #endif
                return true;