]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/ipcp.c
Do not strip installed binaries (#186)
[ppp.git] / pppd / ipcp.c
index 80a18f8c80c6f47b82b632c43f8f2856d8de3929..f8942a9645592ad7961b2555f8c8fd0393f23c1d 100644 (file)
@@ -53,6 +53,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <net/if.h>
 
 #include "pppd.h"
 #include "fsm.h"
@@ -1741,6 +1742,7 @@ ipcp_up(fsm *f)
     ipcp_options *ho = &ipcp_hisoptions[f->unit];
     ipcp_options *go = &ipcp_gotoptions[f->unit];
     ipcp_options *wo = &ipcp_wantoptions[f->unit];
+    int ifindex;
 
     IPCPDEBUG(("ipcp: up"));
 
@@ -1854,9 +1856,18 @@ ipcp_up(fsm *f)
        }
 #endif
 
+       ifindex = if_nametoindex(ifname);
+
        /* run the pre-up script, if any, and wait for it to finish */
        ipcp_script(_PATH_IPPREUP, 1);
 
+       /* check if preup script renamed the interface */
+       if (!if_indextoname(ifindex, ifname)) {
+            error("Interface index %d failed to get renamed by a pre-up script", ifindex);
+           ipcp_close(f->unit, "Interface configuration failed");
+           return;
+       }
+
        /* bring the interface up for IP */
        if (!sifup(f->unit)) {
            if (debug)
@@ -1911,7 +1922,7 @@ ipcp_up(fsm *f)
      */
     if (ipcp_script_state == s_down && ipcp_script_pid == 0) {
        ipcp_script_state = s_up;
-       ipcp_script(_PATH_IPUP, 0);
+       ipcp_script(path_ipup, 0);
     }
 }
 
@@ -1960,7 +1971,7 @@ ipcp_down(fsm *f)
     /* Execute the ip-down script */
     if (ipcp_script_state == s_up && ipcp_script_pid == 0) {
        ipcp_script_state = s_down;
-       ipcp_script(_PATH_IPDOWN, 0);
+       ipcp_script(path_ipdown, 0);
     }
 }
 
@@ -2009,13 +2020,13 @@ ipcp_script_done(void *arg)
     case s_up:
        if (ipcp_fsm[0].state != OPENED) {
            ipcp_script_state = s_down;
-           ipcp_script(_PATH_IPDOWN, 0);
+           ipcp_script(path_ipdown, 0);
        }
        break;
     case s_down:
        if (ipcp_fsm[0].state == OPENED) {
            ipcp_script_state = s_up;
-           ipcp_script(_PATH_IPUP, 0);
+           ipcp_script(path_ipup, 0);
        }
        break;
     }