From c74c0e3cdf008988a8873d3f76c0d71b29ab8673 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 27 Nov 1998 21:09:57 +0000 Subject: First attempt at protocol configuration (now done only for RIP). --- nest/config.Y | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'nest') diff --git a/nest/config.Y b/nest/config.Y index f14331b..1de0446 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -8,18 +8,22 @@ CF_HDR +static struct proto *this_proto; + CF_DECLS -CF_KEYWORDS(ROUTER, ID) +CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE) %type idval CF_GRAMMAR +/* Setting of router ID */ + CF_ADDTO(conf, rtrid) rtrid: ROUTER ID idval { router_id = $3; - } + } ; idval: @@ -27,6 +31,35 @@ idval: | IPA { $$ = ipa_to_u32($1); } ; +/* Definition of protocols */ + +CF_ADDTO(conf, proto) + +proto_start: PROTOCOL + +proto_name: + /* EMPTY */ { + struct symbol *s = cf_default_name(this_proto->proto->name); + s->class = SYM_PROTO; + s->def = this_proto; + this_proto->name = s->name; + } + | SYM { + if ($1->class) cf_error("Symbol already defined"); + $1->class = SYM_PROTO; + $1->def = this_proto; + this_proto->name = $1->name; + } + ; + +proto_item: + /* EMPTY */ + | PREFERENCE NUM { + if ($2 < 0 || $2 > 255) cf_error("Invalid preference"); + this_proto->preference = $2; + } + ; + CF_CODE CF_END -- cgit v1.2.3