diff options
author | Eivind Næss <eivnaes@yahoo.com> | 2022-05-29 22:14:08 -0700 |
---|---|---|
committer | Eivind Næss <eivnaes@yahoo.com> | 2022-07-15 15:25:39 -0700 |
commit | 199e97bae9c03f5cec5202a511b5c436aff05af9 (patch) | |
tree | aae67baaaf1116f72c7139201589bcde3f72af1a /pppstats | |
parent | 1d3327b87170d5d8db4a5ad06b465925cff4488a (diff) | |
download | ppp-199e97bae9c03f5cec5202a511b5c436aff05af9.tar.gz |
For Linux, use the Linux / Glibc based defines instead of included headers
This is to ensure compatibility with the OS you are compiling against and that
headers are maintained in upstream projects.
- Moved PPP_EAP and PPP_ECP into respective header files in lieu of not currently
existing in the linux/ppp_defs.h
- Unchained the top-level ${topsrc_dir}/include, this folder is included for
prosterity and may continue to exist on github, but in the future eliminated from
distribution
- Bogus upstream file in glibc for <net/if_ppp.h>, its content should be replaced
with a simple include to <linux/ppp-ioctl.h>. The lack of an appropriate ifreq
structure with ppp_stats or ppp_comp_stats, implementet that inline (and tested).
- Updated instances where PPP_FCS() macro would expand the fcstab, while PPP_GOODFCS
and PPP_INITFCS is provided in <linux/ppp_defs.h>, the latter is tied to a lookup
table. It's used in two places, so add the PPP_FCS macro where applicable.
Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
Diffstat (limited to 'pppstats')
-rw-r--r-- | pppstats/Makefile.am | 4 | ||||
-rw-r--r-- | pppstats/pppstats.c | 56 |
2 files changed, 23 insertions, 37 deletions
diff --git a/pppstats/Makefile.am b/pppstats/Makefile.am index d7d74e0..4c8b83f 100644 --- a/pppstats/Makefile.am +++ b/pppstats/Makefile.am @@ -5,10 +5,6 @@ pppstats_SOURCES = pppstats.c pppstats_CFLAGS = pppstats_CPPFLAGS = -if LINUX -pppstats_CFLAGS += -I${top_srcdir}/include -endif - if SUNOS pppstats_CPPFLAGS += -DSTREAMS endif diff --git a/pppstats/pppstats.c b/pppstats/pppstats.c index cbea00b..44a254d 100644 --- a/pppstats/pppstats.c +++ b/pppstats/pppstats.c @@ -62,7 +62,6 @@ static const char rcsid[] = "$Id: pppstats.c,v 1.29 2002/10/27 12:56:26 fcusack #ifndef __linux__ #include <net/if.h> #include <net/ppp_defs.h> -#include <net/if_ppp.h> #else /* Linux */ #if __GLIBC__ >= 2 @@ -74,6 +73,7 @@ static const char rcsid[] = "$Id: pppstats.c,v 1.29 2002/10/27 12:56:26 fcusack #endif #include <linux/ppp_defs.h> #include <linux/if_ppp.h> + #endif /* __linux__ */ #else /* STREAMS */ @@ -137,15 +137,11 @@ catchalarm(int arg) static void get_ppp_stats(struct ppp_stats *curp) { - struct ifpppstatsreq req; + struct ifreq req; memset (&req, 0, sizeof (req)); -#ifdef __linux__ - req.stats_ptr = (caddr_t) &req.stats; -#undef ifr_name -#define ifr_name ifr__name -#endif + req.ifr_data = (caddr_t) curp; strncpy(req.ifr_name, interface, IFNAMSIZ); req.ifr_name[IFNAMSIZ - 1] = 0; @@ -157,25 +153,21 @@ get_ppp_stats(struct ppp_stats *curp) perror("couldn't get PPP statistics"); exit(1); } - *curp = req.stats; } static void get_ppp_cstats(struct ppp_comp_stats *csp) { - struct ifpppcstatsreq creq; + struct ifreq req; + struct ppp_comp_stats stats; - memset (&creq, 0, sizeof (creq)); + memset (&req, 0, sizeof (req)); -#ifdef __linux__ - creq.stats_ptr = (caddr_t) &creq.stats; -#undef ifr_name -#define ifr_name ifr__name -#endif + req.ifr_data = (caddr_t) &stats; - strncpy(creq.ifr_name, interface, IFNAMSIZ); - creq.ifr_name[IFNAMSIZ - 1] = 0; - if (ioctl(s, SIOCGPPPCSTATS, &creq) < 0) { + strncpy(req.ifr_name, interface, IFNAMSIZ); + req.ifr_name[IFNAMSIZ - 1] = 0; + if (ioctl(s, SIOCGPPPCSTATS, &req) < 0) { fprintf(stderr, "%s: ", progname); if (errno == ENOTTY) { fprintf(stderr, "no kernel compression support\n"); @@ -189,28 +181,26 @@ get_ppp_cstats(struct ppp_comp_stats *csp) } #ifdef __linux__ - if (creq.stats.c.bytes_out == 0) { - creq.stats.c.bytes_out = creq.stats.c.comp_bytes + creq.stats.c.inc_bytes; - creq.stats.c.in_count = creq.stats.c.unc_bytes; + if (stats.c.bytes_out == 0) { + stats.c.bytes_out = stats.c.comp_bytes + stats.c.inc_bytes; + stats.c.in_count = stats.c.unc_bytes; } - if (creq.stats.c.bytes_out == 0) - creq.stats.c.ratio = 0.0; + if (stats.c.bytes_out == 0) + stats.c.ratio = 0.0; else - creq.stats.c.ratio = 256.0 * creq.stats.c.in_count / - creq.stats.c.bytes_out; + stats.c.ratio = 256.0 * stats.c.in_count / stats.c.bytes_out; - if (creq.stats.d.bytes_out == 0) { - creq.stats.d.bytes_out = creq.stats.d.comp_bytes + creq.stats.d.inc_bytes; - creq.stats.d.in_count = creq.stats.d.unc_bytes; + if (stats.d.bytes_out == 0) { + stats.d.bytes_out = stats.d.comp_bytes + stats.d.inc_bytes; + stats.d.in_count = stats.d.unc_bytes; } - if (creq.stats.d.bytes_out == 0) - creq.stats.d.ratio = 0.0; + if (stats.d.bytes_out == 0) + stats.d.ratio = 0.0; else - creq.stats.d.ratio = 256.0 * creq.stats.d.in_count / - creq.stats.d.bytes_out; + stats.d.ratio = 256.0 * stats.d.in_count / stats.d.bytes_out; #endif - *csp = creq.stats; + *csp = stats; } #else /* STREAMS */ |