diff options
Diffstat (limited to 'ospfd/ospf_main.c')
| -rw-r--r-- | ospfd/ospf_main.c | 258 | 
1 files changed, 119 insertions, 139 deletions
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c index 38718b35d5..e80d644d5f 100644 --- a/ospfd/ospf_main.c +++ b/ospfd/ospf_main.c @@ -55,34 +55,26 @@  #include "ospfd/ospf_bfd.h"  /* ospfd privileges */ -zebra_capabilities_t _caps_p [] =  -{ -  ZCAP_NET_RAW, -  ZCAP_BIND, -  ZCAP_NET_ADMIN, +zebra_capabilities_t _caps_p[] = { +	ZCAP_NET_RAW, ZCAP_BIND, ZCAP_NET_ADMIN,  }; -struct zebra_privs_t ospfd_privs = -{ +struct zebra_privs_t ospfd_privs = {  #if defined(FRR_USER) && defined(FRR_GROUP) -  .user = FRR_USER, -  .group = FRR_GROUP, +	.user = FRR_USER, +	.group = FRR_GROUP,  #endif  #if defined(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};  /* OSPFd options. */ -struct option longopts[] =  -{ -  { "instance",    required_argument, NULL, 'n'}, -  { "apiserver",   no_argument,       NULL, 'a'}, -  { 0 } -}; +struct option longopts[] = {{"instance", required_argument, NULL, 'n'}, +			    {"apiserver", no_argument, NULL, 'a'}, +			    {0}};  /* OSPFd program name */ @@ -94,152 +86,140 @@ extern int ospf_apiserver_enable;  #endif /* SUPPORT_OSPF_API */  /* SIGHUP handler. */ -static void  -sighup (void) +static void sighup(void)  { -  zlog_info("SIGHUP received"); +	zlog_info("SIGHUP received");  }  /* SIGINT / SIGTERM handler. */ -static void -sigint (void) +static void sigint(void)  { -  zlog_notice ("Terminating on signal"); -  ospf_terminate (); +	zlog_notice("Terminating on signal"); +	ospf_terminate();  }  /* SIGUSR1 handler. */ -static void -sigusr1 (void) +static void sigusr1(void)  { -  zlog_rotate(); +	zlog_rotate();  } -struct quagga_signal_t ospf_signals[] = -{ -  { -    .signal = SIGHUP, -    .handler = &sighup, -  }, -  { -    .signal = SIGUSR1, -    .handler = &sigusr1, -  },   -  { -    .signal = SIGINT, -    .handler = &sigint, -  }, -  { -    .signal = SIGTERM, -    .handler = &sigint, -  }, +struct quagga_signal_t ospf_signals[] = { +	{ +		.signal = SIGHUP, +		.handler = &sighup, +	}, +	{ +		.signal = SIGUSR1, +		.handler = &sigusr1, +	}, +	{ +		.signal = SIGINT, +		.handler = &sigint, +	}, +	{ +		.signal = SIGTERM, +		.handler = &sigint, +	},  }; -FRR_DAEMON_INFO(ospfd, OSPF, -	.vty_port = OSPF_VTY_PORT, +FRR_DAEMON_INFO(ospfd, OSPF, .vty_port = OSPF_VTY_PORT, -	.proghelp = "Implementation of the OSPFv2 routing protocol.", +		.proghelp = "Implementation of the OSPFv2 routing protocol.", -	.signals = ospf_signals, -	.n_signals = array_size(ospf_signals), +		.signals = ospf_signals, .n_signals = array_size(ospf_signals), -	.privs = &ospfd_privs, -) +		.privs = &ospfd_privs, )  /* OSPFd main routine. */ -int -main (int argc, char **argv) +int main(int argc, char **argv)  { -  u_short instance = 0; +	u_short instance = 0;  #ifdef SUPPORT_OSPF_API -  /* OSPF apiserver is disabled by default. */ -  ospf_apiserver_enable = 0; +	/* OSPF apiserver is disabled by default. */ +	ospf_apiserver_enable = 0;  #endif /* SUPPORT_OSPF_API */ -  frr_preinit (&ospfd_di, argc, argv); -  frr_opt_add ("n:a", longopts, -	"  -n, --instance     Set the instance id\n" -	"  -a, --apiserver    Enable OSPF apiserver\n"); +	frr_preinit(&ospfd_di, argc, argv); +	frr_opt_add("n:a", longopts, +		    "  -n, --instance     Set the instance id\n" +		    "  -a, --apiserver    Enable OSPF apiserver\n"); -  while (1)  -    { -      int opt; +	while (1) { +		int opt; -      opt = frr_getopt (argc, argv, NULL); -     -      if (opt == EOF) -	break; +		opt = frr_getopt(argc, argv, NULL); -      switch (opt)  -	{ -	case 'n': -          ospfd_di.instance = instance = atoi(optarg); -          if (instance < 1) -            exit(0); -	  break; -	case 0: -	  break; +		if (opt == EOF) +			break; + +		switch (opt) { +		case 'n': +			ospfd_di.instance = instance = atoi(optarg); +			if (instance < 1) +				exit(0); +			break; +		case 0: +			break;  #ifdef SUPPORT_OSPF_API -	case 'a': -	  ospf_apiserver_enable = 1; -	  break; +		case 'a': +			ospf_apiserver_enable = 1; +			break;  #endif /* SUPPORT_OSPF_API */ -	default: -	  frr_help_exit (1); -	  break; +		default: +			frr_help_exit(1); +			break; +		}  	} -    } - -  /* Invoked by a priviledged user? -- endo. */ -  if (geteuid () != 0) -    { -      errno = EPERM; -      perror (ospfd_di.progname); -      exit (1); -    } - -  /* OSPF master init. */ -  ospf_master_init (frr_init ()); - -  /* Initializations. */ -  master = om->master; - -  /* Library inits. */ -  debug_init (); -  vrf_init (); - -  access_list_init (); -  prefix_list_init (); - -  /* OSPFd inits. */ -  ospf_if_init (); -  ospf_zebra_init(master, instance); - -  /* OSPF vty inits. */ -  ospf_vty_init (); -  ospf_vty_show_init (); -  ospf_vty_clear_init (); - -  /* OSPF BFD init */ -  ospf_bfd_init(); - -  ospf_route_map_init (); -  ospf_opaque_init (); -   -  /* Need to initialize the default ospf structure, so the interface mode -     commands can be duly processed if they are received before 'router ospf', -     when quagga(ospfd) is restarted */ -  if (!ospf_get_instance(instance)) -    { -      zlog_err("OSPF instance init failed: %s", strerror(errno)); -      exit (1); -    } - -  frr_config_fork(); -  frr_run (master); - -  /* Not reached. */ -  return (0); -} +	/* Invoked by a priviledged user? -- endo. */ +	if (geteuid() != 0) { +		errno = EPERM; +		perror(ospfd_di.progname); +		exit(1); +	} + +	/* OSPF master init. */ +	ospf_master_init(frr_init()); + +	/* Initializations. */ +	master = om->master; + +	/* Library inits. */ +	debug_init(); +	vrf_init(); + +	access_list_init(); +	prefix_list_init(); + +	/* OSPFd inits. */ +	ospf_if_init(); +	ospf_zebra_init(master, instance); + +	/* OSPF vty inits. */ +	ospf_vty_init(); +	ospf_vty_show_init(); +	ospf_vty_clear_init(); + +	/* OSPF BFD init */ +	ospf_bfd_init(); + +	ospf_route_map_init(); +	ospf_opaque_init(); + +	/* Need to initialize the default ospf structure, so the interface mode +	   commands can be duly processed if they are received before 'router +	   ospf', +	   when quagga(ospfd) is restarted */ +	if (!ospf_get_instance(instance)) { +		zlog_err("OSPF instance init failed: %s", strerror(errno)); +		exit(1); +	} + +	frr_config_fork(); +	frr_run(master); + +	/* Not reached. */ +	return (0); +}  | 
