bw_meter
struct bw_meter *x = rt->mfc_bw_meter;
struct bw_meter *x;
struct bw_meter *x;
free_bw_list(struct bw_meter *list)
struct bw_meter *x = list;
struct bw_meter *x;
struct bw_meter *list;
struct bw_meter *prev;
bw_meter_receive_packet(struct bw_meter *x, int plen, struct timeval *nowp)
static void free_bw_list(struct bw_meter *);
static void bw_meter_receive_packet(struct bw_meter *, int , struct timeval *);
static void bw_meter_prepare_upcall(struct bw_meter *, struct timeval *);
static void schedule_bw_meter(struct bw_meter *, struct timeval *);
static void unschedule_bw_meter(struct bw_meter *);
bw_meter_prepare_upcall(struct bw_meter *x, struct timeval *nowp)
#define BW_METER_TIMEHASH(bw_meter, hash) \
struct timeval next_timeval = (bw_meter)->bm_start_time; \
BW_TIMEVALADD(&next_timeval, &(bw_meter)->bm_threshold.b_time); \
schedule_bw_meter(struct bw_meter *x, struct timeval *nowp)
unschedule_bw_meter(struct bw_meter *x)
struct bw_meter *prev, *tmp;
struct bw_meter *x, *tmp_list;
static struct bw_meter *bw_meter_timers[BW_METER_BUCKETS];
struct bw_meter *mfc_bw_meter; /* list of bandwidth meters */
struct bw_meter *bm_mfc_next; /* next bw meter (same mfc) */
struct bw_meter *bm_time_next; /* next bw meter (same time) */
static void print_bw_meter(struct bw_meter *, int *);
struct bw_meter bw_meter, *bwm;
(char *)&bw_meter,
sizeof bw_meter);
print_bw_meter(&bw_meter,
bwm = bw_meter.bm_mfc_next;
print_bw_meter(struct bw_meter *bw_meter, int *banner_printed)
if (bw_meter->bm_flags & BW_METER_UNIT_PACKETS)
(unsigned long long)bw_meter->bm_measured.b_packets);
if (bw_meter->bm_flags & BW_METER_UNIT_BYTES)
(unsigned long long)bw_meter->bm_measured.b_bytes);
(long long)bw_meter->bm_start_time.tv_sec,
(long)bw_meter->bm_start_time.tv_usec,
if (bw_meter->bm_flags & BW_METER_GEQ)
else if (bw_meter->bm_flags & BW_METER_LEQ)
if (bw_meter->bm_flags & BW_METER_UNIT_PACKETS)
(unsigned long long)bw_meter->bm_threshold.b_packets);
if (bw_meter->bm_flags & BW_METER_UNIT_BYTES)
(unsigned long long)bw_meter->bm_threshold.b_bytes);
(long long)bw_meter->bm_threshold.b_time.tv_sec,
(long)bw_meter->bm_threshold.b_time.tv_usec,
timeradd(&bw_meter->bm_start_time,
&bw_meter->bm_threshold.b_time, &end);