]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/sys-linux.c
patch to proxyarp stuff from Michael Callahan
[ppp.git] / pppd / sys-linux.c
index cbf05589ef37a1a2b2b26b4bbbf32f4851a21e7b..708323314bb564688a3f478e09a6b8a3d30cf0f4 100644 (file)
@@ -40,7 +40,7 @@
 #include <linux/route.h>
 #include <linux/if_ether.h>
 #include <netinet/in.h>
-#include <net/if_ppp.h>
+#include <signal.h>
 
 #include "pppd.h"
 #include "ppp.h"
@@ -94,6 +94,12 @@ int set_kdebugflag (int requested_level)
 void establish_ppp (void)
 {
     int pppdisc = N_PPP;
+    int sig    = SIGIO;
+
+    if (ioctl(fd, PPPIOCSINPSIG, &sig) == -1) {
+       syslog(LOG_ERR, "ioctl(PPPIOCSINPSIG): %m");
+       die(1);
+    }
 
     if (ioctl(fd, TIOCEXCL, 0) < 0) {
        syslog (LOG_WARNING, "ioctl(TIOCEXCL): %m");
@@ -769,16 +775,16 @@ int get_ether_addr (u_long ipaddr, struct sockaddr *hwaddr)
     }
 
     hwaddr->sa_family = ARPHRD_ETHER;
-    memcpy (&hwaddr->sa_data, &ifr->ifr_hwaddr, ETH_ALEN);
+    memcpy (&hwaddr->sa_data, &ifreq.ifr_hwaddr, ETH_ALEN);
 
     MAINDEBUG ((LOG_DEBUG,
                "proxy arp: found hwaddr %02x:%02x:%02x:%02x:%02x:%02x",
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[0],
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[1],
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[2],
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[3],
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[4],
-               (int) ((unsigned char *) &ifr->ifr_hwaddr)[5]));
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[0],
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[1],
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[2],
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[3],
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[4],
+               (int) ((unsigned char *) &ifreq.ifr_hwaddr)[5]));
     return 1;
 }