mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
First attempt at protocol configuration (now done only for RIP).
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user