Module Name: src Committed By: ozaki-r Date: Wed Jul 14 08:32:13 UTC 2021
Modified Files: src/usr.sbin/altq/altqd: altq.conf.5 src/usr.sbin/altq/libaltq: qop_cbq.c qop_cbq.h Log Message: libaltq, cbq: add two options to interface - no-control: don't create a control class automatically - no-tbr: don't install TBR To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/altq/altqd/altq.conf.5 cvs rdiff -u -r1.10 -r1.11 src/usr.sbin/altq/libaltq/qop_cbq.c cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/altq/libaltq/qop_cbq.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/altq/altqd/altq.conf.5 diff -u src/usr.sbin/altq/altqd/altq.conf.5:1.18 src/usr.sbin/altq/altqd/altq.conf.5:1.19 --- src/usr.sbin/altq/altqd/altq.conf.5:1.18 Tue Apr 9 19:10:21 2019 +++ src/usr.sbin/altq/altqd/altq.conf.5 Wed Jul 14 08:32:13 2021 @@ -1,4 +1,4 @@ -.\" $NetBSD: altq.conf.5,v 1.18 2019/04/09 19:10:21 sevan Exp $ +.\" $NetBSD: altq.conf.5,v 1.19 2021/07/14 08:32:13 ozaki-r Exp $ .\" $KAME: altq.conf.5,v 1.15 2002/11/17 02:51:49 kjc Exp $ .\" .\" Copyright (C) 2000 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 9, 2019 +.Dd July 14, 2021 .Dt ALTQ.CONF 5 .Os .\" @@ -281,6 +281,8 @@ excess bandwidth is available. .Op Cm tbrsize Ar bytes .Op Ar sched_type .Op Cm efficient +.Op Cm no-control +.Op Cm no-tbr .El .Bl -tag -width 8n -offset indent .It Ar if_name @@ -310,6 +312,13 @@ By default, this mode is turned off. By adding the keyword .Cm efficient to the interface specification line, enables this mode. +.It Cm no-control +By default, the control class is automatically created when default class is +created and one doesn't exist yet. +This option suppresses the behavior on the interface. +.It Cm no-tbr +By default, a token bucket regulator is automatically created on each interface. +This option suppresses the behavior on the interface. .El .Bl -tag -width class -offset indent .It Cm class Index: src/usr.sbin/altq/libaltq/qop_cbq.c diff -u src/usr.sbin/altq/libaltq/qop_cbq.c:1.10 src/usr.sbin/altq/libaltq/qop_cbq.c:1.11 --- src/usr.sbin/altq/libaltq/qop_cbq.c:1.10 Sat Oct 19 17:16:37 2013 +++ src/usr.sbin/altq/libaltq/qop_cbq.c Wed Jul 14 08:32:13 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: qop_cbq.c,v 1.10 2013/10/19 17:16:37 christos Exp $ */ +/* $NetBSD: qop_cbq.c,v 1.11 2021/07/14 08:32:13 ozaki-r Exp $ */ /* $KAME: qop_cbq.c,v 1.7 2002/05/31 06:03:35 kjc Exp $ */ /* * Copyright (c) Sun Microsystems, Inc. 1993-1998 All rights reserved. @@ -112,6 +112,8 @@ cbq_interface_parser(const char *ifname, u_int tbrsize = 0; u_int is_efficient = 0; u_int is_wrr = 1; /* weighted round-robin is default */ + bool no_control = false; + bool no_tbr = false; /* * process options @@ -133,6 +135,10 @@ cbq_interface_parser(const char *ifname, is_wrr = 1; } else if (EQUAL(*argv, "cbq-prr")) { is_wrr = 0; + } else if (EQUAL(*argv, "no-tbr")) { + no_tbr = true; + } else if (EQUAL(*argv, "no-control")) { + no_control = true; } else { LOG(LOG_ERR, 0, "Unknown keyword '%s'", *argv); return (0); @@ -140,12 +146,15 @@ cbq_interface_parser(const char *ifname, argc--; argv++; } - if (qcmd_tbr_register(ifname, bandwidth, tbrsize) != 0) - return (0); + if (!no_tbr) { + if (qcmd_tbr_register(ifname, bandwidth, tbrsize) != 0) + return (0); + } if (qcmd_cbq_add_if(ifname, bandwidth, - is_wrr, is_efficient) != 0) + is_wrr, is_efficient, no_control) != 0) return (0); + return (1); } @@ -296,11 +305,13 @@ cbq_class_parser(const char *ifname, con * qcmd api */ int -qcmd_cbq_add_if(const char *ifname, u_int bandwidth, int is_wrr, int efficient) +qcmd_cbq_add_if(const char *ifname, u_int bandwidth, int is_wrr, int efficient, + bool no_control) { int error; - error = qop_cbq_add_if(NULL, ifname, bandwidth, is_wrr, efficient); + error = qop_cbq_add_if(NULL, ifname, bandwidth, is_wrr, efficient, + no_control); if (error != 0) LOG(LOG_ERR, errno, "%s: can't add cbq on interface '%s'", qoperror(error), ifname); @@ -333,7 +344,7 @@ qcmd_cbq_add_class(const char *ifname, c (borrow = clname2clinfo(ifinfo, borrow_name)) == NULL) error = QOPERR_BADCLASS; - if (flags & CBQCLF_DEFCLASS) { + if (flags & CBQCLF_DEFCLASS && !cbq_ifinfo->no_control) { /* * if this is a default class and no ctl_class is defined, * we will create a ctl_class. @@ -464,7 +475,7 @@ qcmd_cbq_add_ctl_filters(const char *ifn */ int qop_cbq_add_if(struct ifinfo **rp, const char *ifname, - u_int bandwidth, int is_wrr, int efficient) + u_int bandwidth, int is_wrr, int efficient, bool no_control) { struct ifinfo *ifinfo = NULL; struct cbq_ifinfo *cbq_ifinfo = NULL; @@ -477,6 +488,7 @@ qop_cbq_add_if(struct ifinfo **rp, const (1.0 / (double)bandwidth) * NS_PER_SEC * 8; cbq_ifinfo->is_wrr = is_wrr; cbq_ifinfo->is_efficient = efficient; + cbq_ifinfo->no_control = no_control; error = qop_add_if(&ifinfo, ifname, bandwidth, &cbq_qdisc, cbq_ifinfo); Index: src/usr.sbin/altq/libaltq/qop_cbq.h diff -u src/usr.sbin/altq/libaltq/qop_cbq.h:1.2 src/usr.sbin/altq/libaltq/qop_cbq.h:1.3 --- src/usr.sbin/altq/libaltq/qop_cbq.h:1.2 Thu Aug 16 07:48:13 2001 +++ src/usr.sbin/altq/libaltq/qop_cbq.h Wed Jul 14 08:32:13 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: qop_cbq.h,v 1.2 2001/08/16 07:48:13 itojun Exp $ */ +/* $NetBSD: qop_cbq.h,v 1.3 2021/07/14 08:32:13 ozaki-r Exp $ */ /* $KAME: qop_cbq.h,v 1.2 2000/10/18 09:15:18 kjc Exp $ */ /* * Copyright (c) Sun Microsystems, Inc. 1993-1998 All rights reserved. @@ -53,6 +53,7 @@ struct cbq_ifinfo { double nsPerByte; /* bandwidth in ns per sec */ int is_wrr; /* use weighted-round robin */ int is_efficient; /* use work-conserving */ + bool no_control; /* don't create a control class automatically */ }; /* @@ -76,7 +77,7 @@ int cbq_class_parser(const char *ifname, const char *parent_name, int argc, char **argv); int qcmd_cbq_add_if(const char *ifname, u_int bandwidth, - int is_wrr, int efficient); + int is_wrr, int efficient, bool no_control); int qcmd_cbq_add_class(const char *ifname, const char *class_name, const char *parent_name, const char *borrow_name, u_int pri, u_int bandwidth, @@ -89,7 +90,7 @@ int qcmd_cbq_modify_class(const char *if u_int av_pkt_size, u_int max_pkt_size, int flags); int qop_cbq_add_if(struct ifinfo **rp, const char *ifname, - u_int bandwidth, int is_wrr, int efficient); + u_int bandwidth, int is_wrr, int efficient, bool no_control); int qop_cbq_add_class(struct classinfo **rp, const char *class_name, struct ifinfo *ifinfo, struct classinfo *parent, struct classinfo *borrow, u_int pri, u_int bandwidth,