summaryrefslogtreecommitdiff
path: root/proto/bgp/bgp.c
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/bgp.c
parent349e21bb0bb7584fb18c19859d876893c3130947 (diff)
Bare skeleton of the BGP.
Diffstat (limited to 'proto/bgp/bgp.c')
-rw-r--r--proto/bgp/bgp.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
new file mode 100644
index 00000000..26e39061
--- /dev/null
+++ b/proto/bgp/bgp.c
@@ -0,0 +1,68 @@
+/*
+ * BIRD -- The Border Gateway Protocol
+ *
+ * (c) 2000 Martin Mares <mj@ucw.cz>
+ *
+ * Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#define LOCAL_DEBUG
+
+#include "nest/bird.h"
+#include "nest/iface.h"
+#include "nest/protocol.h"
+#include "nest/route.h"
+#include "conf/conf.h"
+
+#include "bgp.h"
+
+static void
+bgp_rt_notify(struct proto *P, net *n, rte *new, rte *old, ea_list *tmpa)
+{
+}
+
+static struct proto *
+bgp_init(struct proto_config *C)
+{
+ struct bgp_config *c = (struct bgp_config *) C;
+ struct proto *P = proto_new(C, sizeof(struct bgp_proto));
+ struct bgp_proto *p = (struct bgp_proto *) P;
+
+ P->rt_notify = bgp_rt_notify;
+ return P;
+}
+
+static int
+bgp_start(struct proto *P)
+{
+ return PS_UP;
+}
+
+static int
+bgp_shutdown(struct proto *P)
+{
+ return PS_DOWN;
+}
+
+void
+bgp_check(struct bgp_config *c)
+{
+ if (!c->local_as)
+ cf_error("Local AS number must be set");
+ if (!c->remote_as)
+ cf_error("Neighbor must be configured");
+}
+
+struct protocol proto_bgp = {
+ name: "BGP",
+ template: "bgp%d",
+ init: bgp_init,
+ start: bgp_start,
+ shutdown: bgp_shutdown,
+#if 0
+ dump: bgp_dump,
+ get_status: bgp_get_status,
+ get_route_info: bgp_get_route_info,
+ show_route_data: bgp_show_route_data
+#endif
+};