OSDN Git Service

Fix pppd to build with both old and uapi headers. kitkat-x86 android-x86-4.4-r2 android-x86-4.4-r3
authorElliott Hughes <enh@google.com>
Tue, 12 Nov 2013 19:11:06 +0000 (11:11 -0800)
committerChristopher Ferris <cferris@google.com>
Tue, 17 Dec 2013 19:02:02 +0000 (11:02 -0800)
Bug: 11559337

(cherry picked from commit 5e0738a2d8667ec1ea629649edc4fc5ae453f4a1)

Change-Id: I7a25195e22b3b244e75c9f615c1233e34d92dc4d

pppd/include/net/ppp_defs.h
pppd/sys-linux.c

index b06eda5..a21afdb 100644 (file)
 #ifndef _PPP_DEFS_H_
 #define _PPP_DEFS_H_
 
+#if defined(PPP_ADDRESS)
+#define USING_UAPI
+#endif
+
 /*
  * The basic PPP frame.
  */
 #define PPP_MAXMRU     65000   /* Largest MRU we allow */
 #define PPP_MINMRU     128
 
+#if !defined(USING_UAPI)
 #define PPP_ADDRESS(p) (((u_char *)(p))[0])
 #define PPP_CONTROL(p) (((u_char *)(p))[1])
 #define PPP_PROTOCOL(p)        ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3])
+#endif
 
 /*
  * Significant octet values.
@@ -124,6 +130,15 @@ typedef u_int32_t  ext_accm[8];
 /*
  * What to do with network protocol (NP) packets.
  */
+#if defined(USING_UAPI)
+/* This stuff isn't in uapi. TODO: is there a newer pppd that doesn't use this? */
+#define ifr__name b.ifr_ifrn.ifrn_name
+#define stats_ptr b.ifr_ifru.ifru_data
+struct ifpppstatsreq {
+   struct ifreq b;
+   struct ppp_stats stats;
+};
+#else
 enum NPmode {
     NPMODE_PASS,               /* pass the packet through */
     NPMODE_DROP,               /* silently drop the packet */
@@ -183,6 +198,8 @@ struct ppp_idle {
     time_t recv_idle;          /* time since last NP packet received */
 };
 
+#endif
+
 #ifndef __P
 #ifdef __STDC__
 #define __P(x) x
index 0d2645a..8736534 100644 (file)
 #include <netinet/if_ether.h>
 #else
 #include <linux/types.h>
+#include <linux/tty.h>
 #include <linux/if.h>
 #include <linux/if_arp.h>
 #include <linux/route.h>