summaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
Diffstat (limited to 'sbin')
-rw-r--r--sbin/pfctl/parse.y88
1 files changed, 2 insertions, 86 deletions
diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index 814f64514f9..0c165c47611 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.601 2011/07/03 23:59:43 henning Exp $ */
+/* $OpenBSD: parse.y,v 1.602 2011/07/04 03:36:14 henning Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -63,13 +63,11 @@
static struct pfctl *pf = NULL;
static int debug = 0;
-static int rulestate = 0;
static u_int16_t returnicmpdefault =
(ICMP_UNREACH << 8) | ICMP_UNREACH_PORT;
static u_int16_t returnicmp6default =
(ICMP6_DST_UNREACH << 8) | ICMP6_DST_UNREACH_NOPORT;
static int blockpolicy = PFRULE_DROP;
-static int require_order = 0;
static int default_statelock;
TAILQ_HEAD(files, file) files = TAILQ_HEAD_INITIALIZER(files);
@@ -105,14 +103,6 @@ char *symget(const char *);
int atoul(char *, u_long *);
-enum {
- PFCTL_STATE_NONE,
- PFCTL_STATE_OPTION,
- PFCTL_STATE_QUEUE,
- PFCTL_STATE_NAT,
- PFCTL_STATE_FILTER
-};
-
struct node_proto {
u_int8_t proto;
struct node_proto *next;
@@ -362,7 +352,6 @@ int expand_queue(struct pf_altq *, struct node_if *,
struct node_queue_opt *);
int expand_skip_interface(struct node_if *);
-int check_rulestate(int);
int getservice(char *);
int rule_label(struct pf_rule *, char *);
@@ -457,7 +446,7 @@ int parseport(char *, struct range *r, int);
%token NOROUTE URPFFAILED FRAGMENT USER GROUP MAXMSS MAXIMUM TTL TOS DROP TABLE
%token REASSEMBLE ANCHOR
%token SET OPTIMIZATION TIMEOUT LIMIT LOGINTERFACE BLOCKPOLICY RANDOMID
-%token REQUIREORDER SYNPROXY FINGERPRINTS NOSYNC DEBUG SKIP HOSTID
+%token SYNPROXY FINGERPRINTS NOSYNC DEBUG SKIP HOSTID
%token ANTISPOOF FOR INCLUDE MATCHES
%token BITMASK RANDOM SOURCEHASH ROUNDROBIN LEASTSTATES STATICPORT PROBABILITY
%token ALTQ CBQ PRIQ HFSC BANDWIDTH TBRSIZE LINKSHARE REALTIME UPPERLIMIT
@@ -577,15 +566,9 @@ optnodf : /* empty */ { $$ = 0; }
;
option : SET REASSEMBLE yesno optnodf {
- if (check_rulestate(PFCTL_STATE_OPTION))
- YYERROR;
pfctl_set_reassembly(pf, $3, $4);
}
| SET OPTIMIZATION STRING {
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($3);
- YYERROR;
- }
if (pfctl_set_optimization(pf, $3) != 0) {
yyerror("unknown optimization %s", $3);
free($3);
@@ -604,10 +587,6 @@ option : SET REASSEMBLE yesno optnodf {
| SET LIMIT limit_spec
| SET LIMIT '{' optnl limit_list '}'
| SET LOGINTERFACE stringall {
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($3);
- YYERROR;
- }
if (pfctl_set_logif(pf, $3) != 0) {
yyerror("error setting loginterface %s", $3);
free($3);
@@ -628,30 +607,16 @@ option : SET REASSEMBLE yesno optnodf {
| SET BLOCKPOLICY DROP {
if (pf->opts & PF_OPT_VERBOSE)
printf("set block-policy drop\n");
- if (check_rulestate(PFCTL_STATE_OPTION))
- YYERROR;
blockpolicy = PFRULE_DROP;
}
| SET BLOCKPOLICY RETURN {
if (pf->opts & PF_OPT_VERBOSE)
printf("set block-policy return\n");
- if (check_rulestate(PFCTL_STATE_OPTION))
- YYERROR;
blockpolicy = PFRULE_RETURN;
}
- | SET REQUIREORDER yesno {
- if (pf->opts & PF_OPT_VERBOSE)
- printf("set require-order %s\n",
- $3 == 1 ? "yes" : "no");
- require_order = $3;
- }
| SET FINGERPRINTS STRING {
if (pf->opts & PF_OPT_VERBOSE)
printf("set fingerprints \"%s\"\n", $3);
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($3);
- YYERROR;
- }
if (!pf->anchor->name[0]) {
if (pfctl_file_fingerprints(pf->dev,
pf->opts, $3)) {
@@ -676,10 +641,6 @@ option : SET REASSEMBLE yesno optnodf {
default_statelock = $3;
}
| SET DEBUG STRING {
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($3);
- YYERROR;
- }
if (pfctl_set_debug(pf, $3) != 0) {
yyerror("error setting debuglevel %s", $3);
free($3);
@@ -796,12 +757,6 @@ anchorrule : ANCHOR anchorname dir quick interface af proto fromto
struct pf_rule r;
struct node_proto *proto;
- if (check_rulestate(PFCTL_STATE_FILTER)) {
- if ($2)
- free($2);
- YYERROR;
- }
-
if ($2 && ($2[0] == '_' || strstr($2, "/_") != NULL)) {
free($2);
yyerror("anchor names beginning with '_' "
@@ -1037,9 +992,6 @@ antispoof : ANTISPOOF logquick antispoof_ifspc af antispoof_opts {
struct node_host *h = NULL, *hh;
struct node_if *i, *j;
- if (check_rulestate(PFCTL_STATE_FILTER))
- YYERROR;
-
for (i = $3; i; i = i->next) {
bzero(&r, sizeof(r));
@@ -1295,9 +1247,6 @@ table_opt : STRING {
altqif : ALTQ interface queue_opts QUEUE qassign {
struct pf_altq a;
- if (check_rulestate(PFCTL_STATE_QUEUE))
- YYERROR;
-
memset(&a, 0, sizeof(a));
if ($3.scheduler.qtype == ALTQT_NONE) {
yyerror("no scheduler specified!");
@@ -1319,13 +1268,7 @@ altqif : ALTQ interface queue_opts QUEUE qassign {
queuespec : QUEUE STRING interface queue_opts qassign {
struct pf_altq a;
- if (check_rulestate(PFCTL_STATE_QUEUE)) {
- free($2);
- YYERROR;
- }
-
memset(&a, 0, sizeof(a));
-
if (strlcpy(a.qname, $2, sizeof(a.qname)) >=
sizeof(a.qname)) {
yyerror("queue name too long (max "
@@ -1683,11 +1626,7 @@ pfrule : action dir logquick interface af proto fromto
int adaptive = 0;
int defaults = 0;
- if (check_rulestate(PFCTL_STATE_FILTER))
- YYERROR;
-
memset(&r, 0, sizeof(r));
-
r.action = $1.b1;
switch ($1.b2) {
case PFRULE_RETURNRST:
@@ -3846,10 +3785,6 @@ routespec : route_host { $$ = $1; }
timeout_spec : STRING NUMBER
{
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($1);
- YYERROR;
- }
if ($2 < 0 || $2 > UINT_MAX) {
yyerror("only positive values permitted");
YYERROR;
@@ -3869,10 +3804,6 @@ timeout_list : timeout_list comma timeout_spec optnl
limit_spec : STRING NUMBER
{
- if (check_rulestate(PFCTL_STATE_OPTION)) {
- free($1);
- YYERROR;
- }
if ($2 < 0 || $2 > UINT_MAX) {
yyerror("only positive values permitted");
YYERROR;
@@ -5036,18 +4967,6 @@ freehostlist(struct node_host *h)
#undef LOOP_THROUGH
int
-check_rulestate(int desired_state)
-{
- if (require_order && (rulestate > desired_state)) {
- yyerror("Rules must be in order: options, normalization, "
- "queueing, translation, filtering");
- return (1);
- }
- rulestate = desired_state;
- return (0);
-}
-
-int
kw_cmp(const void *k, const void *e)
{
return (strcmp(k, ((const struct keywords *)e)->k_name));
@@ -5142,7 +5061,6 @@ lookup(char *s)
{ "reassemble", REASSEMBLE},
{ "received-on", RECEIVEDON},
{ "reply-to", REPLYTO},
- { "require-order", REQUIREORDER},
{ "return", RETURN},
{ "return-icmp", RETURNICMP},
{ "return-icmp6", RETURNICMP6},
@@ -5539,12 +5457,10 @@ parse_config(char *filename, struct pfctl *xpf)
pf = xpf;
errors = 0;
- rulestate = PFCTL_STATE_NONE;
returnicmpdefault = (ICMP_UNREACH << 8) | ICMP_UNREACH_PORT;
returnicmp6default =
(ICMP6_DST_UNREACH << 8) | ICMP6_DST_UNREACH_NOPORT;
blockpolicy = PFRULE_DROP;
- require_order = 0;
if ((file = pushfile(filename, 0)) == NULL) {
warn("cannot open the main config file!");