* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#define RCSID "$Id: main.c,v 1.137 2004/10/24 23:13:16 paulus Exp $"
+#define RCSID "$Id: main.c,v 1.138 2004/10/28 00:32:32 paulus Exp $"
#include <stdio.h>
#include <ctype.h>
static struct timeval start_time; /* Time when link was started. */
+static struct pppd_stats old_link_stats;
struct pppd_stats link_stats;
unsigned link_connect_time;
int link_stats_valid;
#endif
static void handle_events __P((void));
-static void print_link_stats __P((void));
+void print_link_stats __P((void));
extern char *ttyname __P((int));
extern char *getlogin __P((void));
die(status)
int status;
{
- print_link_stats();
+ print_link_stats();
cleanup();
notify(exitnotify, status);
syslog(LOG_INFO, "Exit.");
}
}
+/*
+ * reset_link_stats - "reset" stats when link goes up.
+ */
+void
+reset_link_stats(u)
+ int u;
+{
+ if (!get_ppp_stats(u, &old_link_stats))
+ return;
+ gettimeofday(&start_time, NULL);
+}
+
/*
* update_link_stats - get stats at link termination.
*/
link_connect_time = now.tv_sec - start_time.tv_sec;
link_stats_valid = 1;
+ link_stats.bytes_in -= old_link_stats.bytes_in;
+ link_stats.bytes_out -= old_link_stats.bytes_out;
+ link_stats.pkts_in -= old_link_stats.pkts_in;
+ link_stats.pkts_out -= old_link_stats.pkts_out;
+
slprintf(numbuf, sizeof(numbuf), "%u", link_connect_time);
script_setenv("CONNECT_TIME", numbuf, 0);
slprintf(numbuf, sizeof(numbuf), "%u", link_stats.bytes_out);