summaryrefslogtreecommitdiff
path: root/pppstats
diff options
context:
space:
mode:
authorEivind Næss <eivnaes@yahoo.com>2022-05-29 22:14:08 -0700
committerEivind Næss <eivnaes@yahoo.com>2022-07-15 15:25:39 -0700
commit199e97bae9c03f5cec5202a511b5c436aff05af9 (patch)
treeaae67baaaf1116f72c7139201589bcde3f72af1a /pppstats
parent1d3327b87170d5d8db4a5ad06b465925cff4488a (diff)
downloadppp-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.am4
-rw-r--r--pppstats/pppstats.c56
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 */