Fix regression on child queue definitions
authorkn <kn@openbsd.org>
Fri, 13 Jul 2018 08:41:15 +0000 (08:41 +0000)
committerkn <kn@openbsd.org>
Fri, 13 Jul 2018 08:41:15 +0000 (08:41 +0000)
I comitted the wrong diff in 1.680 which turned `queue cq parent pq ...'
into invalid syntax by changing `interface' to `ON if_item'.

Found by bket, thanks!

sbin/pfctl/parse.y

index 949613f..dcae495 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parse.y,v 1.680 2018/07/11 18:06:25 kn Exp $  */
+/*     $OpenBSD: parse.y,v 1.681 2018/07/13 08:41:15 kn Exp $  */
 
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
@@ -1326,20 +1326,21 @@ table_host_list : tablespec optnl                       { $$ = $1; }
                }
                ;
 
-queuespec      : QUEUE STRING ON if_item queue_opts            {
+queuespec      : QUEUE STRING interface queue_opts             {
                        struct node_host        *n;
 
-                       if ($4 == NULL && $5.parent == NULL) {
+                       if ($3 == NULL && $4.parent == NULL) {
                                yyerror("root queue without interface");
                                YYERROR;
                        }
-                       if ((n = ifa_exists($4->ifname)) == NULL ||
-                           n->af != AF_LINK) {
+                       if ($3 != NULL &&
+                           ((n = ifa_exists($3->ifname)) == NULL ||
+                            n->af != AF_LINK)) {
                                yyerror("not an interface");
                                YYERROR;
                        }
 
-                       expand_queue($2, $4, &$5);
+                       expand_queue($2, $3, &$4);
                }
                ;