]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
BGP: Allow role specific keywords to be used as symbols
authorOndrej Zajicek <santiago@crfreenet.org>
Tue, 3 Jan 2023 18:09:51 +0000 (19:09 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Tue, 3 Jan 2023 18:11:34 +0000 (19:11 +0100)
Some of these new BGP role keywords use generic names that collides with
user-defined symbols. Allow them to be redefined. Also remove duplicit
keyword definition for 'prefer'.

conf/gen_parser.m4
proto/bgp/config.Y

index 5b378a93e97dcbe9d2004e4bb6113dab1b8f6d94..af4b14554c71b26b9a557f32ae6134139a5de0b0 100644 (file)
@@ -31,7 +31,7 @@ m4_define(CF_iterate, `m4_define([[CF_iter]], m4_defn([[$1]]))CF_itera($2)')
 
 # Keywords act as untyped %token
 m4_define(CF_keywd, `m4_ifdef([[CF_tok_$1]],,[[m4_define([[CF_tok_$1]],1)m4_define([[CF_toks]],CF_toks $1)]])')
-m4_define(CF_KEYWORDS, `m4_define([[CF_toks]],[[]])CF_iterate([[CF_keywd]], [[$@]])m4_ifelse(CF_toks,,,%token[[]]CF_toks
+m4_define(CF_KEYWORDS, `m4_define([[CF_toks]],[[]])CF_iterate([[CF_keywd]], [[$@]])m4_ifelse(CF_toks,,,%token<s>[[]]CF_toks
 )DNL')
 
 # CLI commands
index 4e83147ebdcc0700b19e15d09851bad52979ab85..a2dfa747df6399b704c02e8a26640d0a613a2ca6 100644 (file)
@@ -32,7 +32,7 @@ CF_KEYWORDS(BGP, LOCAL, NEIGHBOR, AS, HOLD, TIME, CONNECT, RETRY, KEEPALIVE,
        LIVED, STALE, IMPORT, IBGP, EBGP, MANDATORY, INTERNAL, EXTERNAL, SETS,
        DYNAMIC, RANGE, NAME, DIGITS, BGP_AIGP, AIGP, ORIGINATE, COST, ENFORCE,
        FIRST, FREE, VALIDATE, BASE, ROLE, ROLES, PEER, PROVIDER, CUSTOMER,
-       RS_SERVER, RS_CLIENT, REQUIRE, BGP_OTC, PREFER, GLOBAL)
+       RS_SERVER, RS_CLIENT, REQUIRE, BGP_OTC, GLOBAL)
 
 %type <i> bgp_nh
 %type <i32> bgp_afi
@@ -45,6 +45,9 @@ CF_KEYWORDS(CEASE, PREFIX, LIMIT, HIT, ADMINISTRATIVE, SHUTDOWN, RESET, PEER,
 
 CF_GRAMMAR
 
+/* Workaround for collisions between keywords and symbols */
+symbol: ROLE | PEER | PROVIDER | CUSTOMER | RS_SERVER | RS_CLIENT ;
+
 proto: bgp_proto '}'  ;
 
 bgp_proto_start: proto_start BGP {