summaryrefslogtreecommitdiff
path: root/bgpd/bgp_main.c
diff options
context:
space:
mode:
authorwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:03:14 +0200
committerwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:04:07 +0200
commitd62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch)
tree3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /bgpd/bgp_main.c
parent888ac268a0077fc9ebd1218cec6ae472af0bfc40 (diff)
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'bgpd/bgp_main.c')
-rw-r--r--bgpd/bgp_main.c522
1 files changed, 248 insertions, 274 deletions
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 7841d510b0..25a562ed68 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -60,112 +60,101 @@
#endif
/* bgpd options, we use GNU getopt library. */
-static const struct option longopts[] =
-{
- { "bgp_port", required_argument, NULL, 'p'},
- { "listenon", required_argument, NULL, 'l'},
- { "retain", no_argument, NULL, 'r'},
- { "no_kernel", no_argument, NULL, 'n'},
- { "skip_runas", no_argument, NULL, 'S'},
- { "ecmp", required_argument, NULL, 'e'},
- { 0 }
-};
+static const struct option longopts[] = {
+ {"bgp_port", required_argument, NULL, 'p'},
+ {"listenon", required_argument, NULL, 'l'},
+ {"retain", no_argument, NULL, 'r'},
+ {"no_kernel", no_argument, NULL, 'n'},
+ {"skip_runas", no_argument, NULL, 'S'},
+ {"ecmp", required_argument, NULL, 'e'},
+ {0}};
/* signal definitions */
-void sighup (void);
-void sigint (void);
-void sigusr1 (void);
+void sighup(void);
+void sigint(void);
+void sigusr1(void);
-static void bgp_exit (int);
-static void bgp_vrf_terminate (void);
+static void bgp_exit(int);
+static void bgp_vrf_terminate(void);
-static struct quagga_signal_t bgp_signals[] =
-{
- {
- .signal = SIGHUP,
- .handler = &sighup,
- },
- {
- .signal = SIGUSR1,
- .handler = &sigusr1,
- },
- {
- .signal = SIGINT,
- .handler = &sigint,
- },
- {
- .signal = SIGTERM,
- .handler = &sigint,
- },
+static struct quagga_signal_t bgp_signals[] = {
+ {
+ .signal = SIGHUP,
+ .handler = &sighup,
+ },
+ {
+ .signal = SIGUSR1,
+ .handler = &sigusr1,
+ },
+ {
+ .signal = SIGINT,
+ .handler = &sigint,
+ },
+ {
+ .signal = SIGTERM,
+ .handler = &sigint,
+ },
};
/* Route retain mode flag. */
static int retain_mode = 0;
/* privileges */
-static zebra_capabilities_t _caps_p [] =
-{
- ZCAP_BIND,
- ZCAP_NET_RAW,
- ZCAP_NET_ADMIN,
+static zebra_capabilities_t _caps_p[] = {
+ ZCAP_BIND, ZCAP_NET_RAW, ZCAP_NET_ADMIN,
};
-struct zebra_privs_t bgpd_privs =
-{
+struct zebra_privs_t bgpd_privs = {
#if defined(FRR_USER) && defined(FRR_GROUP)
- .user = FRR_USER,
- .group = FRR_GROUP,
+ .user = FRR_USER,
+ .group = FRR_GROUP,
#endif
#ifdef VTY_GROUP
- .vty_group = VTY_GROUP,
+ .vty_group = VTY_GROUP,
#endif
- .caps_p = _caps_p,
- .cap_num_p = array_size(_caps_p),
- .cap_num_i = 0,
+ .caps_p = _caps_p,
+ .cap_num_p = array_size(_caps_p),
+ .cap_num_i = 0,
};
static struct frr_daemon_info bgpd_di;
/* SIGHUP handler. */
-void
-sighup (void)
+void sighup(void)
{
- zlog_info ("SIGHUP received");
+ zlog_info("SIGHUP received");
- /* Terminate all thread. */
- bgp_terminate ();
- bgp_reset ();
- zlog_info ("bgpd restarting!");
+ /* Terminate all thread. */
+ bgp_terminate();
+ bgp_reset();
+ zlog_info("bgpd restarting!");
- /* Reload config file. */
- vty_read_config (bgpd_di.config_file, config_default);
+ /* Reload config file. */
+ vty_read_config(bgpd_di.config_file, config_default);
- /* Try to return to normal operation. */
+ /* Try to return to normal operation. */
}
/* SIGINT handler. */
-__attribute__((__noreturn__)) void
-sigint (void)
+__attribute__((__noreturn__)) void sigint(void)
{
- zlog_notice ("Terminating on signal");
+ zlog_notice("Terminating on signal");
- if (! retain_mode)
- {
- bgp_terminate ();
- if (bgpd_privs.user) /* NULL if skip_runas flag set */
- zprivs_terminate (&bgpd_privs);
- }
+ if (!retain_mode) {
+ bgp_terminate();
+ if (bgpd_privs.user) /* NULL if skip_runas flag set */
+ zprivs_terminate(&bgpd_privs);
+ }
- bgp_exit (0);
+ bgp_exit(0);
- exit (0);
+ exit(0);
}
/* SIGUSR1 handler. */
-void
-sigusr1 (void)
+void sigusr1(void)
{
- zlog_rotate();
+ zlog_rotate();
}
/*
@@ -175,265 +164,250 @@ sigusr1 (void)
Zebra route removal and protocol teardown are not meant to be done here.
For example, "retain_mode" may be set.
*/
-static __attribute__((__noreturn__)) void
-bgp_exit (int status)
+static __attribute__((__noreturn__)) void bgp_exit(int status)
{
- struct bgp *bgp;
- struct listnode *node, *nnode;
+ struct bgp *bgp;
+ struct listnode *node, *nnode;
- /* it only makes sense for this to be called on a clean exit */
- assert (status == 0);
+ /* it only makes sense for this to be called on a clean exit */
+ assert(status == 0);
- bfd_gbl_exit();
+ bfd_gbl_exit();
- bgp_close();
+ bgp_close();
- if (retain_mode)
- if_add_hook (IF_DELETE_HOOK, NULL);
+ if (retain_mode)
+ if_add_hook(IF_DELETE_HOOK, NULL);
- /* reverse bgp_master_init */
- for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp))
- bgp_delete (bgp);
+ /* reverse bgp_master_init */
+ for (ALL_LIST_ELEMENTS(bm->bgp, node, nnode, bgp))
+ bgp_delete(bgp);
- /* reverse bgp_dump_init */
- bgp_dump_finish ();
+ /* reverse bgp_dump_init */
+ bgp_dump_finish();
- /* reverse bgp_route_init */
- bgp_route_finish ();
+ /* reverse bgp_route_init */
+ bgp_route_finish();
- /* cleanup route maps */
- bgp_route_map_terminate();
+ /* cleanup route maps */
+ bgp_route_map_terminate();
- /* reverse bgp_attr_init */
- bgp_attr_finish ();
+ /* reverse bgp_attr_init */
+ bgp_attr_finish();
- /* reverse access_list_init */
- access_list_add_hook (NULL);
- access_list_delete_hook (NULL);
- access_list_reset ();
+ /* reverse access_list_init */
+ access_list_add_hook(NULL);
+ access_list_delete_hook(NULL);
+ access_list_reset();
- /* reverse bgp_filter_init */
- as_list_add_hook (NULL);
- as_list_delete_hook (NULL);
- bgp_filter_reset ();
+ /* reverse bgp_filter_init */
+ as_list_add_hook(NULL);
+ as_list_delete_hook(NULL);
+ bgp_filter_reset();
- /* reverse prefix_list_init */
- prefix_list_add_hook (NULL);
- prefix_list_delete_hook (NULL);
- prefix_list_reset ();
+ /* reverse prefix_list_init */
+ prefix_list_add_hook(NULL);
+ prefix_list_delete_hook(NULL);
+ prefix_list_reset();
- /* reverse community_list_init */
- community_list_terminate (bgp_clist);
+ /* reverse community_list_init */
+ community_list_terminate(bgp_clist);
- bgp_vrf_terminate ();
- cmd_terminate ();
- vty_terminate ();
+ bgp_vrf_terminate();
+ cmd_terminate();
+ vty_terminate();
#if ENABLE_BGP_VNC
- vnc_zebra_destroy();
+ vnc_zebra_destroy();
#endif
- bgp_zebra_destroy();
+ bgp_zebra_destroy();
- /* reverse bgp_master_init */
- if (bm->master)
- thread_master_free (bm->master);
+ /* reverse bgp_master_init */
+ if (bm->master)
+ thread_master_free(bm->master);
- closezlog ();
+ closezlog();
- list_delete (bm->bgp);
- memset (bm, 0, sizeof (*bm));
+ list_delete(bm->bgp);
+ memset(bm, 0, sizeof(*bm));
- if (bgp_debug_count())
- log_memstats_stderr ("bgpd");
- exit (status);
+ if (bgp_debug_count())
+ log_memstats_stderr("bgpd");
+ exit(status);
}
-static int
-bgp_vrf_new (struct vrf *vrf)
+static int bgp_vrf_new(struct vrf *vrf)
{
- if (BGP_DEBUG (zebra, ZEBRA))
- zlog_debug ("VRF Created: %s(%d)", vrf->name, vrf->vrf_id);
+ if (BGP_DEBUG(zebra, ZEBRA))
+ zlog_debug("VRF Created: %s(%d)", vrf->name, vrf->vrf_id);
- return 0;
+ return 0;
}
-static int
-bgp_vrf_delete (struct vrf *vrf)
+static int bgp_vrf_delete(struct vrf *vrf)
{
- if (BGP_DEBUG (zebra, ZEBRA))
- zlog_debug ("VRF Deletion: %s(%d)", vrf->name, vrf->vrf_id);
+ if (BGP_DEBUG(zebra, ZEBRA))
+ zlog_debug("VRF Deletion: %s(%d)", vrf->name, vrf->vrf_id);
- return 0;
+ return 0;
}
-static int
-bgp_vrf_enable (struct vrf *vrf)
+static int bgp_vrf_enable(struct vrf *vrf)
{
- struct bgp *bgp;
- vrf_id_t old_vrf_id;
-
- if (BGP_DEBUG (zebra, ZEBRA))
- zlog_debug("VRF enable add %s id %d", vrf->name, vrf->vrf_id);
-
- bgp = bgp_lookup_by_name (vrf->name);
- if (bgp)
- {
- old_vrf_id = bgp->vrf_id;
- /* We have instance configured, link to VRF and make it "up". */
- bgp_vrf_link (bgp, vrf);
-
- /* Update any redistribute vrf bitmaps if the vrf_id changed */
- if (old_vrf_id != bgp->vrf_id)
- bgp_update_redist_vrf_bitmaps(bgp, old_vrf_id);
- bgp_instance_up (bgp);
- }
-
- return 0;
+ struct bgp *bgp;
+ vrf_id_t old_vrf_id;
+
+ if (BGP_DEBUG(zebra, ZEBRA))
+ zlog_debug("VRF enable add %s id %d", vrf->name, vrf->vrf_id);
+
+ bgp = bgp_lookup_by_name(vrf->name);
+ if (bgp) {
+ old_vrf_id = bgp->vrf_id;
+ /* We have instance configured, link to VRF and make it "up". */
+ bgp_vrf_link(bgp, vrf);
+
+ /* Update any redistribute vrf bitmaps if the vrf_id changed */
+ if (old_vrf_id != bgp->vrf_id)
+ bgp_update_redist_vrf_bitmaps(bgp, old_vrf_id);
+ bgp_instance_up(bgp);
+ }
+
+ return 0;
}
-static int
-bgp_vrf_disable (struct vrf *vrf)
+static int bgp_vrf_disable(struct vrf *vrf)
{
- struct bgp *bgp;
- vrf_id_t old_vrf_id;
-
- if (vrf->vrf_id == VRF_DEFAULT)
- return 0;
-
- if (BGP_DEBUG (zebra, ZEBRA))
- zlog_debug("VRF disable %s id %d", vrf->name, vrf->vrf_id);
-
- bgp = bgp_lookup_by_name (vrf->name);
- if (bgp)
- {
- old_vrf_id = bgp->vrf_id;
- /* We have instance configured, unlink from VRF and make it "down". */
- bgp_vrf_unlink (bgp, vrf);
- /* Update any redistribute vrf bitmaps if the vrf_id changed */
- if (old_vrf_id != bgp->vrf_id)
- bgp_update_redist_vrf_bitmaps(bgp, old_vrf_id);
- bgp_instance_down (bgp);
- }
-
- /* Note: This is a callback, the VRF will be deleted by the caller. */
- return 0;
+ struct bgp *bgp;
+ vrf_id_t old_vrf_id;
+
+ if (vrf->vrf_id == VRF_DEFAULT)
+ return 0;
+
+ if (BGP_DEBUG(zebra, ZEBRA))
+ zlog_debug("VRF disable %s id %d", vrf->name, vrf->vrf_id);
+
+ bgp = bgp_lookup_by_name(vrf->name);
+ if (bgp) {
+ old_vrf_id = bgp->vrf_id;
+ /* We have instance configured, unlink from VRF and make it
+ * "down". */
+ bgp_vrf_unlink(bgp, vrf);
+ /* Update any redistribute vrf bitmaps if the vrf_id changed */
+ if (old_vrf_id != bgp->vrf_id)
+ bgp_update_redist_vrf_bitmaps(bgp, old_vrf_id);
+ bgp_instance_down(bgp);
+ }
+
+ /* Note: This is a callback, the VRF will be deleted by the caller. */
+ return 0;
}
-static void
-bgp_vrf_init (void)
+static void bgp_vrf_init(void)
{
- vrf_init (bgp_vrf_new,
- bgp_vrf_enable,
- bgp_vrf_disable,
- bgp_vrf_delete);
+ vrf_init(bgp_vrf_new, bgp_vrf_enable, bgp_vrf_disable, bgp_vrf_delete);
}
-static void
-bgp_vrf_terminate (void)
+static void bgp_vrf_terminate(void)
{
- vrf_terminate ();
+ vrf_terminate();
}
-FRR_DAEMON_INFO(bgpd, BGP,
- .vty_port = BGP_VTY_PORT,
+FRR_DAEMON_INFO(bgpd, BGP, .vty_port = BGP_VTY_PORT,
- .proghelp = "Implementation of the BGP routing protocol.",
+ .proghelp = "Implementation of the BGP routing protocol.",
- .signals = bgp_signals,
- .n_signals = array_size(bgp_signals),
+ .signals = bgp_signals, .n_signals = array_size(bgp_signals),
- .privs = &bgpd_privs,
-)
+ .privs = &bgpd_privs, )
/* Main routine of bgpd. Treatment of argument and start bgp finite
state machine is handled at here. */
-int
-main (int argc, char **argv)
+int main(int argc, char **argv)
{
- int opt;
- int tmp_port;
-
- int bgp_port = BGP_PORT_DEFAULT;
- char *bgp_address = NULL;
- int no_fib_flag = 0;
- int skip_runas = 0;
-
- frr_preinit(&bgpd_di, argc, argv);
- frr_opt_add("p:l:rne:", longopts,
- " -p, --bgp_port Set bgp protocol's port number\n"
- " -l, --listenon Listen on specified address (implies -n)\n"
- " -r, --retain When program terminates, retain added route by bgpd.\n"
- " -n, --no_kernel Do not install route to kernel.\n"
- " -S, --skip_runas Skip capabilities checks, and changing user and group IDs.\n"
- " -e, --ecmp Specify ECMP to use.\n");
-
- /* Command line argument treatment. */
- while (1)
- {
- opt = frr_getopt (argc, argv, 0);
-
- if (opt == EOF)
- break;
-
- switch (opt)
- {
- case 0:
- break;
- case 'p':
- tmp_port = atoi (optarg);
- if (tmp_port <= 0 || tmp_port > 0xffff)
- bgp_port = BGP_PORT_DEFAULT;
- else
- bgp_port = tmp_port;
- break;
- case 'e':
- multipath_num = atoi (optarg);
- if (multipath_num > MULTIPATH_NUM || multipath_num <= 0)
- {
- zlog_err ("Multipath Number specified must be less than %d and greater than 0", MULTIPATH_NUM);
- return 1;
- }
- break;
- case 'r':
- retain_mode = 1;
- break;
- case 'l':
- bgp_address = optarg;
- /* listenon implies -n */
- /* fallthru */
- case 'n':
- no_fib_flag = 1;
- break;
- case 'S':
- skip_runas = 1;
- break;
- default:
- frr_help_exit (1);
- break;
+ int opt;
+ int tmp_port;
+
+ int bgp_port = BGP_PORT_DEFAULT;
+ char *bgp_address = NULL;
+ int no_fib_flag = 0;
+ int skip_runas = 0;
+
+ frr_preinit(&bgpd_di, argc, argv);
+ frr_opt_add(
+ "p:l:rne:", longopts,
+ " -p, --bgp_port Set bgp protocol's port number\n"
+ " -l, --listenon Listen on specified address (implies -n)\n"
+ " -r, --retain When program terminates, retain added route by bgpd.\n"
+ " -n, --no_kernel Do not install route to kernel.\n"
+ " -S, --skip_runas Skip capabilities checks, and changing user and group IDs.\n"
+ " -e, --ecmp Specify ECMP to use.\n");
+
+ /* Command line argument treatment. */
+ while (1) {
+ opt = frr_getopt(argc, argv, 0);
+
+ if (opt == EOF)
+ break;
+
+ switch (opt) {
+ case 0:
+ break;
+ case 'p':
+ tmp_port = atoi(optarg);
+ if (tmp_port <= 0 || tmp_port > 0xffff)
+ bgp_port = BGP_PORT_DEFAULT;
+ else
+ bgp_port = tmp_port;
+ break;
+ case 'e':
+ multipath_num = atoi(optarg);
+ if (multipath_num > MULTIPATH_NUM
+ || multipath_num <= 0) {
+ zlog_err(
+ "Multipath Number specified must be less than %d and greater than 0",
+ MULTIPATH_NUM);
+ return 1;
+ }
+ break;
+ case 'r':
+ retain_mode = 1;
+ break;
+ case 'l':
+ bgp_address = optarg;
+ /* listenon implies -n */
+ /* fallthru */
+ case 'n':
+ no_fib_flag = 1;
+ break;
+ case 'S':
+ skip_runas = 1;
+ break;
+ default:
+ frr_help_exit(1);
+ break;
+ }
}
- }
- if (skip_runas)
- memset (&bgpd_privs, 0, sizeof (bgpd_privs));
+ if (skip_runas)
+ memset(&bgpd_privs, 0, sizeof(bgpd_privs));
- /* BGP master init. */
- bgp_master_init (frr_init ());
- bm->port = bgp_port;
- bm->address = bgp_address;
- if (no_fib_flag)
- bgp_option_set (BGP_OPT_NO_FIB);
+ /* BGP master init. */
+ bgp_master_init(frr_init());
+ bm->port = bgp_port;
+ bm->address = bgp_address;
+ if (no_fib_flag)
+ bgp_option_set(BGP_OPT_NO_FIB);
- /* Initializations. */
- bgp_vrf_init ();
+ /* Initializations. */
+ bgp_vrf_init();
- /* BGP related initialization. */
- bgp_init ();
+ /* BGP related initialization. */
+ bgp_init();
- snprintf (bgpd_di.startinfo, sizeof (bgpd_di.startinfo), ", bgp@%s:%d",
- (bm->address ? bm->address : "<all>"),
- bm->port);
+ snprintf(bgpd_di.startinfo, sizeof(bgpd_di.startinfo), ", bgp@%s:%d",
+ (bm->address ? bm->address : "<all>"), bm->port);
- frr_config_fork ();
- frr_run (bm->master);
+ frr_config_fork();
+ frr_run(bm->master);
- /* Not reached. */
- return (0);
+ /* Not reached. */
+ return (0);
}