Update of /cvsroot/leaf/src/bering-uclibc/apps/ppp In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31078
Modified Files: buildtool.cfg buildtool.mk ppp-2.4.4-ipv4zones-0.1.1.patch Added Files: ppp-2.4.4-gigawords.patch Log Message: added ppp-2.4.4-gigawords.patch provided by NiTr0 Index: ppp-2.4.4-ipv4zones-0.1.1.patch =================================================================== RCS file: /cvsroot/leaf/src/bering-uclibc/apps/ppp/ppp-2.4.4-ipv4zones-0.1.1.patch,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ppp-2.4.4-ipv4zones-0.1.1.patch 28 Jan 2009 16:55:34 -0000 1.1 --- ppp-2.4.4-ipv4zones-0.1.1.patch 6 Aug 2009 21:15:02 -0000 1.2 *************** *** 1,3 **** ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/include/linux/ppp_defs.h ppp-2.4.4/include/linux/ppp_defs.h --- ppp-2.4.4.orig/include/linux/ppp_defs.h 2002-12-06 11:49:15.000000000 +0200 +++ ppp-2.4.4/include/linux/ppp_defs.h 2008-12-03 16:21:40.000000000 +0200 --- 1,3 ---- ! diff -Naur -x Makefile ppp-2.4.4.orig/include/linux/ppp_defs.h ppp-2.4.4/include/linux/ppp_defs.h --- ppp-2.4.4.orig/include/linux/ppp_defs.h 2002-12-06 11:49:15.000000000 +0200 +++ ppp-2.4.4/include/linux/ppp_defs.h 2008-12-03 16:21:40.000000000 +0200 *************** *** 15,19 **** struct vjstat { ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/Makefile.linux ppp-2.4.4/pppd/Makefile.linux --- ppp-2.4.4.orig/pppd/Makefile.linux 2008-12-03 16:20:43.000000000 +0200 +++ ppp-2.4.4/pppd/Makefile.linux 2008-12-03 16:21:40.000000000 +0200 --- 15,47 ---- struct vjstat { ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/ipcp.c ppp-2.4.4/pppd/ipcp.c ! --- ppp-2.4.4.orig/pppd/ipcp.c 2005-08-26 02:59:34.000000000 +0300 ! +++ ppp-2.4.4/pppd/ipcp.c 2009-05-28 18:46:51.000000000 +0300 ! @@ -1834,12 +1834,14 @@ ! if (go->dnsaddr[1]) ! notice("secondary DNS address %I", go->dnsaddr[1]); ! } ! - ! + notice("Resetting link stats..."); ! reset_link_stats(f->unit); ! - ! + ! + notice("Calling np_up..."); ! np_up(f->unit, PPP_IP); ! ipcp_is_up = 1; ! ! + notice("ip_up_notifier..."); ! notify(ip_up_notifier, 0); ! if (ip_up_hook) ! ip_up_hook(); ! @@ -1848,6 +1850,7 @@ ! * Execute the ip-up script, like this: ! * /etc/ppp/ip-up interface tty speed local-IP remote-IP ! */ ! + notice("Calling ifup..."); ! if (ipcp_script_state == s_down && ipcp_script_pid == 0) { ! ipcp_script_state = s_up; ! ipcp_script(_PATH_IPUP, 0); ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/Makefile.linux ppp-2.4.4/pppd/Makefile.linux --- ppp-2.4.4.orig/pppd/Makefile.linux 2008-12-03 16:20:43.000000000 +0200 +++ ppp-2.4.4/pppd/Makefile.linux 2008-12-03 16:21:40.000000000 +0200 *************** *** 37,41 **** # EAP SRP-SHA1 ifdef USE_SRP ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary ppp-2.4.4/pppd/plugins/radius/etc/dictionary --- ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary 2002-11-09 13:24:42.000000000 +0200 +++ ppp-2.4.4/pppd/plugins/radius/etc/dictionary 2008-12-03 16:22:29.000000000 +0200 --- 65,69 ---- # EAP SRP-SHA1 ifdef USE_SRP ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary ppp-2.4.4/pppd/plugins/radius/etc/dictionary --- ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary 2002-11-09 13:24:42.000000000 +0200 +++ ppp-2.4.4/pppd/plugins/radius/etc/dictionary 2008-12-03 16:22:29.000000000 +0200 *************** *** 45,49 **** INCLUDE /etc/radiusclient/dictionary.microsoft +INCLUDE /etc/radiusclient/dictionary.pppd ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary.pppd ppp-2.4.4/pppd/plugins/radius/etc/dictionary.pppd --- ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary.pppd 1970-01-01 03:00:00.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/etc/dictionary.pppd 2008-12-03 16:21:40.000000000 +0200 --- 73,77 ---- INCLUDE /etc/radiusclient/dictionary.microsoft +INCLUDE /etc/radiusclient/dictionary.pppd ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary.pppd ppp-2.4.4/pppd/plugins/radius/etc/dictionary.pppd --- ppp-2.4.4.orig/pppd/plugins/radius/etc/dictionary.pppd 1970-01-01 03:00:00.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/etc/dictionary.pppd 2008-12-03 16:21:40.000000000 +0200 *************** *** 71,75 **** +ATTRIBUTE PPPD-Input-Packets-Zones-3 244 integer PPPD +ATTRIBUTE PPPD-Output-Packets-Zones-3 245 integer PPPD ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/plugins/radius/Makefile.linux ppp-2.4.4/pppd/plugins/radius/Makefile.linux --- ppp-2.4.4.orig/pppd/plugins/radius/Makefile.linux 2006-06-04 08:04:14.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/Makefile.linux 2008-12-03 16:21:40.000000000 +0200 --- 99,103 ---- +ATTRIBUTE PPPD-Input-Packets-Zones-3 244 integer PPPD +ATTRIBUTE PPPD-Output-Packets-Zones-3 245 integer PPPD ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/plugins/radius/Makefile.linux ppp-2.4.4/pppd/plugins/radius/Makefile.linux --- ppp-2.4.4.orig/pppd/plugins/radius/Makefile.linux 2006-06-04 08:04:14.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/Makefile.linux 2008-12-03 16:21:40.000000000 +0200 *************** *** 93,97 **** all: $(PLUGIN) ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/plugins/radius/radius.c ppp-2.4.4/pppd/plugins/radius/radius.c --- ppp-2.4.4.orig/pppd/plugins/radius/radius.c 2006-05-22 03:01:40.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/radius.c 2008-12-03 16:21:40.000000000 +0200 --- 121,125 ---- all: $(PLUGIN) ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/plugins/radius/radius.c ppp-2.4.4/pppd/plugins/radius/radius.c --- ppp-2.4.4.orig/pppd/plugins/radius/radius.c 2006-05-22 03:01:40.000000000 +0300 +++ ppp-2.4.4/pppd/plugins/radius/radius.c 2008-12-03 16:21:40.000000000 +0200 *************** *** 148,152 **** if (*remote_number) { ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/plugins/radius/radiusclient.h ppp-2.4.4/pppd/plugins/radius/radiusclient.h --- ppp-2.4.4.orig/pppd/plugins/radius/radiusclient.h 2004-11-14 09:26:26.000000000 +0200 +++ ppp-2.4.4/pppd/plugins/radius/radiusclient.h 2008-12-03 16:21:40.000000000 +0200 --- 176,180 ---- if (*remote_number) { ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/plugins/radius/radiusclient.h ppp-2.4.4/pppd/plugins/radius/radiusclient.h --- ppp-2.4.4.orig/pppd/plugins/radius/radiusclient.h 2004-11-14 09:26:26.000000000 +0200 +++ ppp-2.4.4/pppd/plugins/radius/radiusclient.h 2008-12-03 16:21:40.000000000 +0200 *************** *** 173,177 **** /* Server data structures */ ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/pppd.h ppp-2.4.4/pppd/pppd.h --- ppp-2.4.4.orig/pppd/pppd.h 2008-12-03 16:20:43.000000000 +0200 +++ ppp-2.4.4/pppd/pppd.h 2008-12-03 16:21:40.000000000 +0200 --- 201,205 ---- /* Server data structures */ ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/pppd.h ppp-2.4.4/pppd/pppd.h --- ppp-2.4.4.orig/pppd/pppd.h 2008-12-03 16:20:43.000000000 +0200 +++ ppp-2.4.4/pppd/pppd.h 2008-12-03 16:21:40.000000000 +0200 *************** *** 189,193 **** /* Used for storing a sequence of words. Usually malloced. */ ! diff -Naur --exclude='*.orig' ppp-2.4.4.orig/pppd/sys-linux.c ppp-2.4.4/pppd/sys-linux.c --- ppp-2.4.4.orig/pppd/sys-linux.c 2005-08-27 01:44:35.000000000 +0300 +++ ppp-2.4.4/pppd/sys-linux.c 2008-12-03 16:21:40.000000000 +0200 --- 217,221 ---- /* Used for storing a sequence of words. Usually malloced. */ ! diff -Naur -x Makefile ppp-2.4.4.orig/pppd/sys-linux.c ppp-2.4.4/pppd/sys-linux.c --- ppp-2.4.4.orig/pppd/sys-linux.c 2005-08-27 01:44:35.000000000 +0300 +++ ppp-2.4.4/pppd/sys-linux.c 2008-12-03 16:21:40.000000000 +0200 --- NEW FILE: ppp-2.4.4-gigawords.patch --- diff -Npru ppp-2.4.4/pppd/main.c ppp-2.4.4-new/pppd/main.c --- ppp-2.4.4/pppd/main.c 2006-06-04 06:52:50.000000000 +0300 +++ ppp-2.4.4-new/pppd/main.c 2009-05-28 22:05:53.000000000 +0300 @@ -1246,9 +1246,9 @@ update_link_stats(u) slprintf(numbuf, sizeof(numbuf), "%u", link_connect_time); script_setenv("CONNECT_TIME", numbuf, 0); - slprintf(numbuf, sizeof(numbuf), "%u", link_stats.bytes_out); + snprintf(numbuf, sizeof(numbuf), "%llu", link_stats.bytes_out); script_setenv("BYTES_SENT", numbuf, 0); - slprintf(numbuf, sizeof(numbuf), "%u", link_stats.bytes_in); + snprintf(numbuf, sizeof(numbuf), "%llu", link_stats.bytes_in); script_setenv("BYTES_RCVD", numbuf, 0); } diff -Npru ppp-2.4.4/pppd/plugins/radius/avpair.c ppp-2.4.4-new/pppd/plugins/radius/avpair.c --- ppp-2.4.4/pppd/plugins/radius/avpair.c 2004-11-14 09:26:26.000000000 +0200 +++ ppp-2.4.4-new/pppd/plugins/radius/avpair.c 2009-05-28 22:06:03.000000000 +0300 @@ -291,9 +291,19 @@ static void rc_extract_vendor_specific_a /* Set attrlen to length of data */ attrlen -= 4; for (; attrlen; attrlen -= vlen+2, ptr += vlen) { - vtype = *ptr++; - vlen = *ptr++; - vlen -= 2; + + if ( vendor_id == VENDOR_USR ) { + vlen = attrlen - 4; + vtype = (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]; + ptr += 4; + /* fixup */ + attrlen -= 2; + } else { + vtype = *ptr++; + vlen = *ptr++; + vlen -= 2; + } + if (vlen < 0 || vlen > attrlen - 2) { /* Do not log an error. We are supposed to be able to cope with arbitrary vendor-specific gunk */ diff -Npru ppp-2.4.4/pppd/plugins/radius/etc/dictionary ppp-2.4.4-new/pppd/plugins/radius/etc/dictionary --- ppp-2.4.4/pppd/plugins/radius/etc/dictionary 2008-12-03 16:22:29.000000000 +0200 +++ ppp-2.4.4-new/pppd/plugins/radius/etc/dictionary 2009-05-28 22:06:03.000000000 +0300 @@ -81,6 +81,8 @@ ATTRIBUTE Acct-Authentic 45 integer ATTRIBUTE Acct-Session-Time 46 integer ATTRIBUTE Acct-Input-Packets 47 integer ATTRIBUTE Acct-Output-Packets 48 integer +ATTRIBUTE Acct-Input-Gigawords 52 integer +ATTRIBUTE Acct-Output-Gigawords 53 integer ATTRIBUTE Acct-Terminate-Cause 49 integer ATTRIBUTE Chap-Challenge 60 string ATTRIBUTE NAS-Port-Type 61 integer diff -Npru ppp-2.4.4/pppd/plugins/radius/radius.c ppp-2.4.4-new/pppd/plugins/radius/radius.c --- ppp-2.4.4/pppd/plugins/radius/radius.c 2008-12-03 16:21:40.000000000 +0200 +++ ppp-2.4.4-new/pppd/plugins/radius/radius.c 2009-05-28 22:06:03.000000000 +0300 @@ -963,18 +963,44 @@ radius_acct_stop(void) if (link_stats_valid) { + DICT_ATTR* attr; + static char bigint[64]; + av_type = link_connect_time; rc_avpair_add(&send, PW_ACCT_SESSION_TIME, &av_type, 0, VENDOR_NONE); - av_type = link_stats.bytes_out; + if ( (attr=rc_dict_findattr("Acct-Output-Octets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.bytes_out); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } + av_type = (UINT4)link_stats.bytes_out; rc_avpair_add(&send, PW_ACCT_OUTPUT_OCTETS, &av_type, 0, VENDOR_NONE); - av_type = link_stats.bytes_in; + av_type = (UINT4)(link_stats.bytes_out >> 32); + rc_avpair_add(&send, PW_ACCT_OUTPUT_GIGAWORDS, &av_type, 0, VENDOR_NONE); + + if ( (attr=rc_dict_findattr("Acct-Input-Octets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.bytes_in); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } + av_type = (UINT4)link_stats.bytes_in; rc_avpair_add(&send, PW_ACCT_INPUT_OCTETS, &av_type, 0, VENDOR_NONE); + av_type = (UINT4)(link_stats.bytes_in >> 32); + rc_avpair_add(&send, PW_ACCT_INPUT_GIGAWORDS, &av_type, 0, VENDOR_NONE); + + if ( (attr=rc_dict_findattr("Acct-Output-Packets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.pkts_out); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } + av_type = link_stats.pkts_out; rc_avpair_add(&send, PW_ACCT_OUTPUT_PACKETS, &av_type, 0, VENDOR_NONE); - + + if ( (attr=rc_dict_findattr("Acct-Input-Packets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.pkts_in); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } av_type = link_stats.pkts_in; rc_avpair_add(&send, PW_ACCT_INPUT_PACKETS, &av_type, 0, VENDOR_NONE); @@ -1128,20 +1154,45 @@ radius_acct_interim(void *ignored) update_link_stats(0); if (link_stats_valid) { + DICT_ATTR* attr; + static char bigint[64]; + link_stats_valid = 0; /* Force later code to update */ av_type = link_connect_time; rc_avpair_add(&send, PW_ACCT_SESSION_TIME, &av_type, 0, VENDOR_NONE); - av_type = link_stats.bytes_out; + if ( (attr=rc_dict_findattr("Acct-Output-Octets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.bytes_out); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } + av_type = (UINT4)link_stats.bytes_out; rc_avpair_add(&send, PW_ACCT_OUTPUT_OCTETS, &av_type, 0, VENDOR_NONE); - av_type = link_stats.bytes_in; + av_type = (UINT4)(link_stats.bytes_out >> 32); + rc_avpair_add(&send, PW_ACCT_OUTPUT_GIGAWORDS, &av_type, 0, VENDOR_NONE); + + if ( (attr=rc_dict_findattr("Acct-Input-Octets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.bytes_in); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } + av_type = (UINT4)link_stats.bytes_in; rc_avpair_add(&send, PW_ACCT_INPUT_OCTETS, &av_type, 0, VENDOR_NONE); + av_type = (UINT4)(link_stats.bytes_in >> 32); + rc_avpair_add(&send, PW_ACCT_INPUT_GIGAWORDS, &av_type, 0, VENDOR_NONE); + + if ( (attr=rc_dict_findattr("Acct-Output-Packets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.pkts_out); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } av_type = link_stats.pkts_out; rc_avpair_add(&send, PW_ACCT_OUTPUT_PACKETS, &av_type, 0, VENDOR_NONE); + if ( (attr=rc_dict_findattr("Acct-Input-Packets-64")) ) { + snprintf(bigint,sizeof(bigint),"%llu",link_stats.pkts_in); + rc_avpair_add(&send,attr->value,bigint,0,attr->vendorcode); + } av_type = link_stats.pkts_in; rc_avpair_add(&send, PW_ACCT_INPUT_PACKETS, &av_type, 0, VENDOR_NONE); diff -Npru ppp-2.4.4/pppd/plugins/radius/radiusclient.h ppp-2.4.4-new/pppd/plugins/radius/radiusclient.h --- ppp-2.4.4/pppd/plugins/radius/radiusclient.h 2008-12-03 16:21:40.000000000 +0200 +++ ppp-2.4.4-new/pppd/plugins/radius/radiusclient.h 2009-05-28 22:08:29.000000000 +0300 @@ -167,6 +167,8 @@ typedef struct pw_auth_hdr #define PW_ACCT_TERMINATE_CAUSE 49 /* integer */ #define PW_ACCT_MULTI_SESSION_ID 50 /* string */ #define PW_ACCT_LINK_COUNT 51 /* integer */ +#define PW_ACCT_INPUT_GIGAWORDS 52 /* integer */ +#define PW_ACCT_OUTPUT_GIGAWORDS 53 /* integer */ /* From RFC 2869 */ #define PW_ACCT_INTERIM_INTERVAL 85 /* integer */ @@ -300,6 +302,7 @@ typedef struct pw_auth_hdr #define VENDOR_NONE (-1) #define VENDOR_MICROSOFT 311 #define VENDOR_PPPD 1979 +#define VENDOR_USR 429 /* Server data structures */ diff -Npru ppp-2.4.4/pppd/plugins/radius/sendserver.c ppp-2.4.4-new/pppd/plugins/radius/sendserver.c --- ppp-2.4.4/pppd/plugins/radius/sendserver.c 2004-11-14 09:26:26.000000000 +0200 +++ ppp-2.4.4-new/pppd/plugins/radius/sendserver.c 2009-05-28 22:06:03.000000000 +0300 @@ -56,6 +56,14 @@ static int rc_pack_list (VALUE_PAIR *vp, *buf++ = (((unsigned int) vp->vendorcode) >> 8) & 255; *buf++ = ((unsigned int) vp->vendorcode) & 255; + /* Stolen from freeradius's source, that USR vendor + /* attributes are to handled otherwise */ + if ( vp->vendorcode == VENDOR_USR ) { + *buf++ = (vp->attribute >> 24) & 0xff; + *buf++ = (vp->attribute >> 16) & 0xff; + *buf++ = (vp->attribute >> 8) & 0xff; + } + /* Insert vendor-type */ *buf++ = vp->attribute; @@ -64,7 +72,8 @@ static int rc_pack_list (VALUE_PAIR *vp, case PW_TYPE_STRING: length = vp->lvalue; *lenptr = length + 8; - *buf++ = length+2; + if ( vp->vendorcode != VENDOR_USR ) + *buf++ = length+2; memcpy(buf, vp->strvalue, (size_t) length); buf += length; total_length += length+8; @@ -73,7 +82,8 @@ static int rc_pack_list (VALUE_PAIR *vp, case PW_TYPE_IPADDR: length = sizeof(UINT4); *lenptr = length + 8; - *buf++ = length+2; + if ( vp->vendorcode != VENDOR_USR ) + *buf++ = length+2; lvalue = htonl(vp->lvalue); memcpy(buf, (char *) &lvalue, sizeof(UINT4)); buf += length; @@ -82,6 +92,10 @@ static int rc_pack_list (VALUE_PAIR *vp, default: break; } + if ( vp->vendorcode == VENDOR_USR ) { + *lenptr += 2; + total_length += 2; + } } else { *buf++ = vp->attribute; switch (vp->attribute) { diff -Npru ppp-2.4.4/pppd/pppd.h ppp-2.4.4-new/pppd/pppd.h --- ppp-2.4.4/pppd/pppd.h 2008-12-03 16:21:40.000000000 +0200 +++ ppp-2.4.4-new/pppd/pppd.h 2009-05-28 22:10:36.000000000 +0300 @@ -170,10 +170,10 @@ struct permitted_ip { * pppd needs. */ struct pppd_stats { - unsigned int bytes_in; - unsigned int bytes_out; - unsigned int pkts_in; - unsigned int pkts_out; + unsigned long long bytes_in; + unsigned long long bytes_out; + unsigned long long pkts_in; + unsigned long long pkts_out; #ifdef CONFIG_PPP_IPV4ZONES unsigned int pkts_out_zones[CONFIG_PPP_IPV4ZONES_COUNT]; unsigned int pkts_in_zones[CONFIG_PPP_IPV4ZONES_COUNT]; diff -Npru ppp-2.4.4/pppd/sys-linux.c ppp-2.4.4-new/pppd/sys-linux.c --- ppp-2.4.4/pppd/sys-linux.c 2008-12-03 16:21:40.000000000 +0200 +++ ppp-2.4.4-new/pppd/sys-linux.c 2009-05-28 22:19:09.000000000 +0300 @@ -1332,6 +1332,10 @@ get_idle_time(u, ip) * * get_ppp_stats - return statistics for the link. */ + +static struct ifpppstatsreq prev_stat_req; +static struct pppd_stats static_stats; + int get_ppp_stats(u, stats) int u; @@ -1351,6 +1355,20 @@ get_ppp_stats(u, stats) stats->bytes_out = req.stats.p.ppp_obytes; stats->pkts_in = req.stats.p.ppp_ipackets; stats->pkts_out = req.stats.p.ppp_opackets; + // Calculate the elapsed bytes since the last query + static_stats.bytes_in += + (req.stats.p.ppp_ibytes - prev_stat_req.stats.p.ppp_ibytes); + static_stats.bytes_out += + (req.stats.p.ppp_obytes - prev_stat_req.stats.p.ppp_obytes); + static_stats.pkts_in += + (req.stats.p.ppp_ipackets - prev_stat_req.stats.p.ppp_ipackets); + static_stats.pkts_out += + (req.stats.p.ppp_opackets - prev_stat_req.stats.p.ppp_opackets); + // Store the current state + memcpy(&prev_stat_req,&req,sizeof(prev_stat_req)); + + // Give out the statistics + memcpy(stats,&static_stats,sizeof(static_stats)); #ifdef CONFIG_PPP_IPV4ZONES memcpy(stats->pkts_out_zones, &req.stats.p.ppp_opackets_zones, sizeof(stats->pkts_out_zones)); memcpy(stats->pkts_in_zones, &req.stats.p.ppp_ipackets_zones, sizeof(stats->pkts_in_zones)); @@ -2242,6 +2260,10 @@ int sifup(int u) { struct ifreq ifr; + // Initialize the 'previous stats struct' + memset(&prev_stat_req,0,sizeof(prev_stat_req)); + // And the static statistics puffer + memset(&static_stats,0,sizeof(static_stats)); memset (&ifr, '\0', sizeof (ifr)); strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); if (ioctl(sock_fd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) { Index: buildtool.cfg =================================================================== RCS file: /cvsroot/leaf/src/bering-uclibc/apps/ppp/buildtool.cfg,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** buildtool.cfg 4 Feb 2009 08:22:48 -0000 1.17 --- buildtool.cfg 6 Aug 2009 21:15:02 -0000 1.18 *************** *** 1,4 **** <File buildtool.mk> ! Server = cvs-sourceforge Revision = HEAD Directory = ppp --- 1,4 ---- <File buildtool.mk> ! Server = local Revision = HEAD Directory = ppp *************** *** 54,61 **** <File ppp-2.4.4-ipv4zones-0.1.1.patch> ! Server = cvs-sourceforge ! Revision = HEAD ! envname = PPP_PATCH6 ! Directory = ppp </File> --- 54,68 ---- <File ppp-2.4.4-ipv4zones-0.1.1.patch> ! Server = cvs-sourceforge ! Revision = HEAD ! envname = PPP_PATCH6 ! Directory = ppp ! </File> ! ! <File ppp-2.4.4-gigawords.patch> ! Server = cvs-sourceforge ! Revision = HEAD ! envname = PPP_PATCH7 ! Directory = ppp </File> *************** *** 141,145 **** <ppp> Version = 2.4.4 ! Revision = 4 Help <<EOF --- 148,152 ---- <ppp> Version = 2.4.4 ! Revision = 5 Help <<EOF *************** *** 176,180 **** Version = 2.4.4 ! Revision = 4 Help <<EOF --- 183,187 ---- Version = 2.4.4 ! Revision = 5 Help <<EOF *************** *** 210,214 **** <pppoe> Version = 2.4.4 ! Revision = 2 Help <<EOF --- 217,221 ---- <pppoe> Version = 2.4.4 ! Revision = 5 Help <<EOF *************** *** 253,257 **** <pppoatm> Version = 2.4.4 ! Revision = 2 Help <<EOF --- 260,264 ---- <pppoatm> Version = 2.4.4 ! Revision = 5 Help <<EOF *************** *** 296,300 **** <ppp-rad> Version = 2.4.4 ! Revision = 2 Help <<EOF --- 303,307 ---- <ppp-rad> Version = 2.4.4 ! Revision = 5 Help <<EOF *************** *** 361,365 **** <pppol2tp> Version = 0.13 ! Revision = 1 Help <<EOF --- 368,372 ---- <pppol2tp> Version = 0.13 ! Revision = 5 Help <<EOF Index: buildtool.mk =================================================================== RCS file: /cvsroot/leaf/src/bering-uclibc/apps/ppp/buildtool.mk,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** buildtool.mk 28 Jan 2009 16:55:34 -0000 1.14 --- buildtool.mk 6 Aug 2009 21:15:02 -0000 1.15 *************** *** 11,16 **** cat $(PPP_PATCH3) | patch -d $(PPP_DIR) -p1 cat $(PPP_PATCH4) | patch -d $(PPP_DIR) -p1 - cat $(PPP_PATCH6) | patch -d $(PPP_DIR) -p1 zcat $(PPP_PATCH5) | patch -d $(PPP_DIR) -p1 touch $(PPP_DIR)/.source --- 11,17 ---- cat $(PPP_PATCH3) | patch -d $(PPP_DIR) -p1 cat $(PPP_PATCH4) | patch -d $(PPP_DIR) -p1 zcat $(PPP_PATCH5) | patch -d $(PPP_DIR) -p1 + cat $(PPP_PATCH6) | patch -d $(PPP_DIR) -p1 + cat $(PPP_PATCH7) | patch -d $(PPP_DIR) -p1 touch $(PPP_DIR)/.source *************** *** 62,65 **** --- 63,67 ---- cp -a $(PPP_DIR)/pppd/plugins/radius/etc/dictionary $(PPP_TARGET_DIR)/etc/radiusclient cp -a $(PPP_DIR)/pppd/plugins/radius/etc/dictionary.microsoft $(PPP_TARGET_DIR)/etc/radiusclient + cp -a $(PPP_DIR)/pppd/plugins/radius/etc/dictionary.pppd $(PPP_TARGET_DIR)/etc/radiusclient cp -a $(PPP_DIR)/pppd/plugins/radius/etc/servers $(PPP_TARGET_DIR)/etc/radiusclient cp -a $(PPP_DIR)/pppd/plugins/radius/etc/port-id-map $(PPP_TARGET_DIR)/etc/radiusclient ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ leaf-cvs-commits mailing list leaf-cvs-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/leaf-cvs-commits