summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbin/pfctl/parse.y27
-rw-r--r--sbin/pfctl/pfctl_altq.c27
-rw-r--r--sbin/pfctl/pfctl_parser.h20
3 files changed, 37 insertions, 37 deletions
diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index 37a6f5b66c2..274b24cec61 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.357 2003/04/13 17:01:12 henning Exp $ */
+/* $OpenBSD: parse.y,v 1.358 2003/04/13 19:36:00 henning Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -140,20 +140,6 @@ struct node_queue {
struct node_queue *tail;
} *queues = NULL;
-struct node_queue_opt {
- int qtype;
- union {
- struct cbq_opts cbq_opts;
- struct priq_opts priq_opts;
- struct hfsc_opts hfsc_opts;
- } data;
-};
-
-struct node_queue_bw {
- u_int32_t bw_absolute;
- u_int16_t bw_percent;
-};
-
struct node_qassign {
char *qname;
char *pqname;
@@ -3106,6 +3092,7 @@ expand_altq(struct pf_altq *a, struct node_if *interfaces,
struct pf_altq pa, pb;
char qname[PF_QNAME_SIZE];
struct node_queue *n;
+ struct node_queue_bw bw;
int errs = 0;
if ((pf->loadopt & (PFCTL_FLAG_ALTQ | PFCTL_FLAG_ALL)) == 0) {
@@ -3124,8 +3111,7 @@ expand_altq(struct pf_altq *a, struct node_if *interfaces,
yyerror("altq on ! <interface> is not supported");
errs++;
} else {
- if (eval_pfaltq(pf, &pa, bwspec.bw_absolute,
- bwspec.bw_percent))
+ if (eval_pfaltq(pf, &pa, &bwspec))
errs++;
else
if (pfctl_add_altq(pf, &pa))
@@ -3168,7 +3154,9 @@ expand_altq(struct pf_altq *a, struct node_if *interfaces,
pb.pq_u.cbq_opts = pa.pq_u.cbq_opts;
if (pa.scheduler == ALTQT_HFSC)
pb.pq_u.hfsc_opts = pa.pq_u.hfsc_opts;
- if (eval_pfqueue(pf, &pb, pa.ifbandwidth, 0))
+ bw.bw_absolute = pa.ifbandwidth;
+ bw.bw_percent = 0;
+ if (eval_pfqueue(pf, &pb, &bw))
errs++;
else
if (pfctl_add_altq(pf, &pb))
@@ -3276,8 +3264,7 @@ expand_queue(struct pf_altq *a, struct node_if *interfaces,
sizeof(pa.parent)) >= sizeof(pa.parent))
errx(1, "expand_queue: strlcpy");
- if (eval_pfqueue(pf, &pa, bwspec.bw_absolute,
- bwspec.bw_percent))
+ if (eval_pfqueue(pf, &pa, &bwspec))
errs++;
else
if (pfctl_add_altq(pf, &pa))
diff --git a/sbin/pfctl/pfctl_altq.c b/sbin/pfctl/pfctl_altq.c
index 10e417e0447..cc7a885be8c 100644
--- a/sbin/pfctl/pfctl_altq.c
+++ b/sbin/pfctl/pfctl_altq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pfctl_altq.c,v 1.58 2003/04/12 19:08:40 henning Exp $ */
+/* $OpenBSD: pfctl_altq.c,v 1.59 2003/04/13 19:36:00 henning Exp $ */
/*
* Copyright (C) 2002
@@ -232,13 +232,12 @@ print_queue(const struct pf_altq *a, unsigned level, u_int16_t bwpercent,
* eval_pfaltq computes the discipline parameters.
*/
int
-eval_pfaltq(struct pfctl *pf, struct pf_altq *pa, u_int32_t bw_absolute,
- u_int16_t bw_percent)
+eval_pfaltq(struct pfctl *pf, struct pf_altq *pa, struct node_queue_bw *bw)
{
u_int rate, size, errors = 0;
- if (bw_absolute > 0)
- pa->ifbandwidth = bw_absolute;
+ if (bw->bw_absolute > 0)
+ pa->ifbandwidth = bw->bw_absolute;
else
if ((rate = getifspeed(pa->ifname)) == 0) {
fprintf(stderr, "cannot determine interface bandwidth "
@@ -246,8 +245,8 @@ eval_pfaltq(struct pfctl *pf, struct pf_altq *pa, u_int32_t bw_absolute,
pa->ifname);
errors++;
} else
- if (bw_percent > 0)
- pa->ifbandwidth = rate / 100 * bw_percent;
+ if (bw->bw_percent > 0)
+ pa->ifbandwidth = rate / 100 * bw->bw_percent;
else
pa->ifbandwidth = rate;
@@ -302,8 +301,7 @@ check_commit_altq(int dev, int opts)
* eval_pfqueue computes the queue parameters.
*/
int
-eval_pfqueue(struct pfctl *pf, struct pf_altq *pa, u_int32_t bw_absolute,
- u_int16_t bw_percent)
+eval_pfqueue(struct pfctl *pf, struct pf_altq *pa, struct node_queue_bw *bw)
{
/* should be merged with expand_queue */
struct pf_altq *if_pa, *parent;
@@ -338,13 +336,14 @@ eval_pfqueue(struct pfctl *pf, struct pf_altq *pa, u_int32_t bw_absolute,
pa->qlimit = DEFAULT_QLIMIT;
if (pa->scheduler == ALTQT_CBQ || pa->scheduler == ALTQT_HFSC) {
- if (bw_absolute > 0)
- pa->bandwidth = bw_absolute;
- else if (bw_percent > 0 && parent != NULL)
- pa->bandwidth = parent->bandwidth / 100 * bw_percent;
+ if (bw->bw_absolute > 0)
+ pa->bandwidth = bw->bw_absolute;
+ else if (bw->bw_percent > 0 && parent != NULL)
+ pa->bandwidth = parent->bandwidth / 100 *
+ bw->bw_percent;
else {
fprintf(stderr, "bandwidth for %s invalid (%d / %d)\n",
- pa->qname, bw_absolute, bw_percent);
+ pa->qname, bw->bw_absolute, bw->bw_percent);
return (1);
}
diff --git a/sbin/pfctl/pfctl_parser.h b/sbin/pfctl/pfctl_parser.h
index c5748892dfa..13360d6a143 100644
--- a/sbin/pfctl/pfctl_parser.h
+++ b/sbin/pfctl/pfctl_parser.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pfctl_parser.h,v 1.53 2003/04/05 23:56:32 henning Exp $ */
+/* $OpenBSD: pfctl_parser.h,v 1.54 2003/04/13 19:36:00 henning Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@@ -93,6 +93,20 @@ struct node_host {
struct node_host *tail;
};
+struct node_queue_opt {
+ int qtype;
+ union {
+ struct cbq_opts cbq_opts;
+ struct priq_opts priq_opts;
+ struct hfsc_opts hfsc_opts;
+ } data;
+};
+
+struct node_queue_bw {
+ u_int32_t bw_absolute;
+ u_int16_t bw_percent;
+};
+
int pfctl_add_rule(struct pfctl *, struct pf_rule *);
int pfctl_add_altq(struct pfctl *, struct pf_altq *);
int pfctl_add_pool(struct pfctl *, struct pf_pool *, sa_family_t);
@@ -110,8 +124,8 @@ void print_pool(struct pf_pool *, u_int16_t, u_int16_t, sa_family_t, int);
void print_rule(struct pf_rule *, int);
void print_status(struct pf_status *);
-int eval_pfaltq(struct pfctl *, struct pf_altq *, u_int32_t, u_int16_t);
-int eval_pfqueue(struct pfctl *, struct pf_altq *, u_int32_t, u_int16_t);
+int eval_pfaltq(struct pfctl *, struct pf_altq *, struct node_queue_bw *);
+int eval_pfqueue(struct pfctl *, struct pf_altq *, struct node_queue_bw *);
void pfctl_begin_table(void);
void pfctl_append_addr(char *, int, int);