diff options
author | Henning Brauer <henning@cvs.openbsd.org> | 2003-01-24 11:11:18 +0000 |
---|---|---|
committer | Henning Brauer <henning@cvs.openbsd.org> | 2003-01-24 11:11:18 +0000 |
commit | 873d85cbe0ff9ef3979abe4731a0bd7b718cc88f (patch) | |
tree | 2ebbef04b7238f3c70f0d513ce2ed0a3c53230af | |
parent | 72a97cedb7be026e1b83c4728d7199b7ae9df7ca (diff) |
let pfctl -vvsq loop and display measured bandwidth and packets/s per queue.
cbq only for now.
-rw-r--r-- | sbin/pfctl/pfctl.c | 7 | ||||
-rw-r--r-- | sbin/pfctl/pfctl.h | 4 | ||||
-rw-r--r-- | sbin/pfctl/pfctl_qstats.c | 25 |
3 files changed, 29 insertions, 7 deletions
diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 1bd82c67048..de7e271b5fa 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pfctl.c,v 1.139 2003/01/21 19:12:08 camield Exp $ */ +/* $OpenBSD: pfctl.c,v 1.140 2003/01/24 11:11:17 henning Exp $ */ /* * Copyright (c) 2001 Daniel Hartmeier @@ -1479,7 +1479,8 @@ main(int argc, char *argv[]) pfctl_show_nat(dev, opts); break; case 'q': - pfctl_show_altq(dev, opts & PF_OPT_VERBOSE); + pfctl_show_altq(dev, opts & PF_OPT_VERBOSE, + opts & PF_OPT_VERBOSE2); break; case 's': pfctl_show_states(dev, 0, opts); @@ -1496,7 +1497,7 @@ main(int argc, char *argv[]) case 'a': pfctl_show_rules(dev, opts, 0); pfctl_show_nat(dev, opts); - pfctl_show_altq(dev, opts & PF_OPT_VERBOSE); + pfctl_show_altq(dev, opts & PF_OPT_VERBOSE, 0); pfctl_show_states(dev, 0, opts); pfctl_show_status(dev); pfctl_show_rules(dev, opts, 1); diff --git a/sbin/pfctl/pfctl.h b/sbin/pfctl/pfctl.h index 2ac1ef54de4..4ad60ff3f07 100644 --- a/sbin/pfctl/pfctl.h +++ b/sbin/pfctl/pfctl.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pfctl.h,v 1.8 2003/01/24 10:53:32 henning Exp $ */ +/* $OpenBSD: pfctl.h,v 1.9 2003/01/24 11:11:17 henning Exp $ */ /* * Copyright (c) 2001 Daniel Hartmeier @@ -58,7 +58,7 @@ int pfr_ina_define(struct pfr_table *, struct pfr_addr *, int, int *, int pfctl_clear_tables(int); int pfctl_show_tables(int); int pfctl_command_tables(int, char *[], char *, char *, char *, int); -int pfctl_show_altq(int, int); +int pfctl_show_altq(int, int, int); #ifndef DEFAULT_PRIORITY #define DEFAULT_PRIORITY 1 diff --git a/sbin/pfctl/pfctl_qstats.c b/sbin/pfctl/pfctl_qstats.c index 5e24097e0ac..96542ea977e 100644 --- a/sbin/pfctl/pfctl_qstats.c +++ b/sbin/pfctl/pfctl_qstats.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pfctl_qstats.c,v 1.9 2003/01/24 10:22:11 henning Exp $ */ +/* $OpenBSD: pfctl_qstats.c,v 1.10 2003/01/24 11:11:17 henning Exp $ */ /* * Copyright (c) 2003 Henning Brauer @@ -91,7 +91,7 @@ double calc_rate(u_int64_t, u_int64_t, double); double calc_pps(u_int64_t, u_int64_t, double); int -pfctl_show_altq(int dev, int verbose) +pfctl_show_altq(int dev, int verbose, int verbose2) { struct pf_altq_node *root = NULL, *node; @@ -100,6 +100,15 @@ pfctl_show_altq(int dev, int verbose) for (node = root; node != NULL; node = node->next) pfctl_print_altq_node(dev, node, 0, verbose); + + while (verbose2) { + printf("\n"); + sleep(5); + if (pfctl_update_qstats(dev, &root)) + return (-1); + for (node = root; node != NULL; node = node->next) + pfctl_print_altq_node(dev, node, 0, verbose); + } pfctl_free_altq_node(root); return (0); } @@ -260,6 +269,8 @@ pfctl_print_altq_nodestat(int dev, const struct pf_altq_node *a) void print_cbqstats(struct queue_stats cur, struct queue_stats last) { + double interval; + printf("[ pkts: %10llu bytes: %10llu " "dropped pkts: %6llu bytes: %6llu ]\n", cur.data.cbq_stats.xmit_cnt.packets, @@ -269,6 +280,16 @@ print_cbqstats(struct queue_stats cur, struct queue_stats last) printf("[ qlength: %3d/%3d borrows: %6u suspends: %6u ]\n", cur.data.cbq_stats.qcnt, cur.data.cbq_stats.qmax, cur.data.cbq_stats.borrows, cur.data.cbq_stats.delays); + + if (!last.valid) + return; + + interval = calc_interval(&cur.timestamp, &last.timestamp); + printf("[ measured: %7.1f packets/s, %s/s ]\n", + calc_pps(cur.data.cbq_stats.xmit_cnt.packets, + last.data.cbq_stats.xmit_cnt.packets, interval), + rate2str(calc_rate(cur.data.cbq_stats.xmit_cnt.bytes, + last.data.cbq_stats.xmit_cnt.bytes, interval))); } void |