diff options
author | Martin Mares <mj@ucw.cz> | 1998-11-27 21:09:57 +0000 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 1998-11-27 21:09:57 +0000 |
commit | c74c0e3cdf008988a8873d3f76c0d71b29ab8673 (patch) | |
tree | b1392eb7bc193f820f7f57b8b12eea7ff56239e8 /nest | |
parent | 93fb60d54ca7ce3efec1cc0b39fb0840d055ccd1 (diff) |
First attempt at protocol configuration (now done only for RIP).
Diffstat (limited to 'nest')
-rw-r--r-- | nest/config.Y | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/nest/config.Y b/nest/config.Y index f14331b3..1de0446b 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 <i> 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 |