summaryrefslogtreecommitdiff
path: root/lib/libfrr.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libfrr.h')
-rw-r--r--lib/libfrr.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/lib/libfrr.h b/lib/libfrr.h
new file mode 100644
index 0000000000..d37f406f5b
--- /dev/null
+++ b/lib/libfrr.h
@@ -0,0 +1,100 @@
+/*
+ * libfrr overall management functions
+ *
+ * Copyright (C) 2016 David Lamparter for NetDEF, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _ZEBRA_FRR_H
+#define _ZEBRA_FRR_H
+
+#include "sigevent.h"
+#include "privs.h"
+#include "thread.h"
+#include "log.h"
+#include "getopt.h"
+
+#define FRR_NO_PRIVSEP (1 << 0)
+#define FRR_NO_TCPVTY (1 << 1)
+#define FRR_LIMITED_CLI (1 << 2)
+#define FRR_NO_CFG_PID_DRY (1 << 3)
+#define FRR_NO_ZCLIENT (1 << 4)
+
+struct frr_daemon_info {
+ unsigned flags;
+
+ const char *progname;
+ const char *name;
+ const char *logname;
+ unsigned short instance;
+
+ char *vty_addr;
+ int vty_port;
+ char *vty_sock_path;
+ bool dryrun;
+ bool daemon_mode;
+ const char *config_file;
+ const char *pid_file;
+ const char *vty_path;
+
+ const char *proghelp;
+ void (*printhelp)(FILE *target);
+ const char *copyright;
+ char startinfo[128];
+
+ struct quagga_signal_t *signals;
+ size_t n_signals;
+
+ struct zebra_privs_t *privs;
+};
+
+/* execname is the daemon's executable (and pidfile and configfile) name,
+ * i.e. "zebra" or "bgpd"
+ * constname is the daemons source-level name, primarily for the logging ID,
+ * i.e. "ZEBRA" or "BGP"
+ *
+ * note that this macro is also a latch-on point for other changes (e.g.
+ * upcoming plugin support) that need to place some per-daemon things. Each
+ * daemon should have one of these.
+ */
+#define FRR_DAEMON_INFO(execname, constname, ...) \
+ static struct frr_daemon_info execname ##_di = { \
+ .name = # execname, \
+ .logname = # constname, \
+ __VA_ARGS__ \
+ };
+
+extern void frr_preinit(struct frr_daemon_info *daemon,
+ int argc, char **argv);
+extern void frr_opt_add(const char *optstr,
+ const struct option *longopts, const char *helpstr);
+extern int frr_getopt(int argc, char * const argv[], int *longindex);
+extern void frr_help_exit(int status);
+
+extern struct thread_master *frr_init(void);
+
+extern void frr_config_fork(void);
+
+extern void frr_vty_serv(void);
+
+/* note: contains call to frr_vty_serv() */
+extern void frr_run(struct thread_master *master);
+
+extern char config_default[256];
+extern const char frr_sysconfdir[];
+extern const char frr_vtydir[];
+
+#endif /* _ZEBRA_FRR_H */