Hi,

bgpd.conf manual has an example with :

good="{ 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
bad="{ 224.0.0.0/4 prefixlen >= 4, 240.0.0.0/4 prefixlen >= 4 }"
ugly="{ 127.0.0.1/8, 169.254.0.0/16 }"
deny from any prefix { $good $bad $ugly } 

This syntax is not valid with current parse.y.

Here is a patch to make it valid.

Index: parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
retrieving revision 1.298
diff -u -p -r1.298 parse.y
--- parse.y     22 Feb 2017 13:55:14 -0000      1.298
+++ parse.y     21 May 2017 17:29:11 -0000
@@ -217,6 +217,7 @@ typedef struct {
 %type  <v.filter_set>          filter_set_opt
 %type  <v.filter_set_head>     filter_set filter_set_l
 %type  <v.filter_prefix>       filter_prefix filter_prefix_l filter_prefix_h
+%type  <v.filter_prefix>       filter_prefix_m
 %type  <v.u8>                  unaryop equalityop binaryop filter_as_type
 %type  <v.encspec>             encspec
 %%
@@ -1615,8 +1616,22 @@ filter_prefix_h  : IPV4 prefixlenop                      
 {
                        }
                }
                | PREFIX filter_prefix                  { $$ = $2; }
-               | PREFIX '{' filter_prefix_l '}'        { $$ = $3; }
+               | PREFIX '{' filter_prefix_m '}'        { $$ = $3; }
                ;
+
+filter_prefix_m        : filter_prefix_l
+               | '{' filter_prefix_l '}'               { $$ = $2; }
+               | '{' filter_prefix_l '}' filter_prefix_m
+               {
+                       struct filter_prefix_l  *p;
+
+                       /* merge, both can be lists */
+                       for (p = $2; p != NULL && p->next != NULL; p = p->next)
+                               ;       /* nothing */
+                       if (p != NULL)
+                               p->next = $4;
+                       $$ = $2;
+               } 
 
 filter_prefix_l        : filter_prefix                         { $$ = $1; }
                | filter_prefix_l comma filter_prefix   {

Reply via email to