xref: /freebsd/usr.sbin/ppp/throughput.h (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
1  /*-
2   * SPDX-License-Identifier: BSD-2-Clause
3   *
4   * Copyright (c) 1997 Brian Somers <brian@Awfulhak.org>
5   * All rights reserved.
6   *
7   * Redistribution and use in source and binary forms, with or without
8   * modification, are permitted provided that the following conditions
9   * are met:
10   * 1. Redistributions of source code must retain the above copyright
11   *    notice, this list of conditions and the following disclaimer.
12   * 2. Redistributions in binary form must reproduce the above copyright
13   *    notice, this list of conditions and the following disclaimer in the
14   *    documentation and/or other materials provided with the distribution.
15   *
16   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26   * SUCH DAMAGE.
27   */
28  
29  #define SAMPLE_PERIOD 5		/* Default sample period */
30  
31  #define THROUGHPUT_OVERALL 0x0001
32  #define THROUGHPUT_CURRENT 0x0002
33  #define THROUGHPUT_PEAK    0x0004
34  #define THROUGHPUT_ALL     0x0007
35  
36  struct pppThroughput {
37    time_t uptime, downtime;
38    unsigned long long OctetsIn;
39    unsigned long long OctetsOut;
40    unsigned long long PacketsIn;
41    unsigned long long PacketsOut;
42    int SamplePeriod;
43    struct {
44      unsigned long long *SampleOctets;
45      unsigned long long OctetsPerSecond;
46    } in, out;
47    unsigned long long BestOctetsPerSecond;
48    time_t BestOctetsPerSecondTime;
49    int nSample;
50    unsigned rolling : 1;
51    struct pppTimer Timer;
52    struct {
53      void *data;
54      void (*fn)(void *v);
55    } callback;
56  };
57  
58  extern void throughput_init(struct pppThroughput *, int);
59  extern void throughput_destroy(struct pppThroughput *);
60  extern void throughput_disp(struct pppThroughput *, struct prompt *);
61  extern void throughput_log(struct pppThroughput *, int, const char *);
62  extern void throughput_start(struct pppThroughput *, const char *, int);
63  extern void throughput_restart(struct pppThroughput *, const char *, int);
64  extern void throughput_stop(struct pppThroughput *);
65  extern void throughput_addin(struct pppThroughput *, long long);
66  extern void throughput_addout(struct pppThroughput *, long long);
67  extern void throughput_clear(struct pppThroughput *, int, struct prompt *);
68  extern void throughput_callback(struct pppThroughput *, void (*)(void *),
69                                  void *);
70  extern int throughput_uptime(struct pppThroughput *);
71