summaryrefslogtreecommitdiff
path: root/proto/bgp/config.Y
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-03-19 22:09:07 +0000
committerMartin Mares <mj@ucw.cz>2000-03-19 22:09:07 +0000
commit2638249d34cc7f600fba25edd29538c00a3aca31 (patch)
tree206aeb113f3822d08385cae49e9b5e1bbe6796fb /proto/bgp/config.Y
parent349e21bb0bb7584fb18c19859d876893c3130947 (diff)
Bare skeleton of the BGP.
Diffstat (limited to 'proto/bgp/config.Y')
-rw-r--r--proto/bgp/config.Y45
1 files changed, 45 insertions, 0 deletions
diff --git a/proto/bgp/config.Y b/proto/bgp/config.Y
new file mode 100644
index 00000000..f66f3588
--- /dev/null
+++ b/proto/bgp/config.Y
@@ -0,0 +1,45 @@
+/*
+ * BIRD -- Border Gateway Protocol Configuration
+ *
+ * (c) 2000 Martin Mares <mj@ucw.cz>
+ *
+ * Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+CF_HDR
+
+#include "proto/bgp/bgp.h"
+
+#define BGP_CFG ((struct bgp_config *) this_proto)
+
+CF_DECLS
+
+CF_KEYWORDS(BGP, LOCAL, NEIGHBOR, AS)
+
+CF_GRAMMAR
+
+CF_ADDTO(proto, bgp_proto '}' { bgp_check(BGP_CFG); } )
+
+bgp_proto_start: proto_start BGP {
+ this_proto = proto_config_new(&proto_bgp, sizeof(struct bgp_config));
+ this_proto->preference = DEF_PREF_BGP;
+ }
+ ;
+
+bgp_proto:
+ bgp_proto_start proto_name '{'
+ | bgp_proto proto_item ';'
+ | bgp_proto LOCAL AS NUM ';' {
+ if ($4 < 0 || $4 > 65535) cf_error("AS number out of range");
+ BGP_CFG->local_as = $4;
+ }
+ | bgp_proto NEIGHBOR IPA AS NUM ';' {
+ if ($5 < 0 || $5 > 65535) cf_error("AS number out of range");
+ BGP_CFG->remote_ip = $3;
+ BGP_CFG->remote_as = $5;
+ }
+ ;
+
+CF_CODE
+
+CF_END