ospfd_conf
area_border_router(struct ospfd_conf *conf)
area_find(struct ospfd_conf *conf, struct in_addr area_id)
if_start(struct ospfd_conf *xconf, struct iface *iface)
if ((ospfd_conf = parse_config(conffile, opts)) == NULL )
ospfd_conf->rdomain) == -1)
ospfd_conf->csock = sockname;
if (ospfd_conf->opts & OSPFD_OPT_NOACTION) {
if (ospfd_conf->opts & OSPFD_OPT_VERBOSE)
print_config(ospfd_conf);
log_setverbose(ospfd_conf->opts & OSPFD_OPT_VERBOSE);
if ((control_check(ospfd_conf->csock)) == -1)
rde_pid = rde(ospfd_conf, pipe_parent2rde, pipe_ospfe2rde,
ospfe_pid = ospfe(ospfd_conf, pipe_parent2ospfe, pipe_ospfe2rde,
if ((control_fd = control_init(ospfd_conf->csock)) == -1)
if (kr_init(!(ospfd_conf->flags & OSPFD_FLAG_NO_FIB_UPDATE),
ospfd_conf->rdomain, ospfd_conf->redist_label_or_prefix,
ospfd_conf->fib_priority) == -1)
free(ospfd_conf);
SIMPLEQ_FOREACH(r, &ospfd_conf->redist_list, entry) {
struct ospfd_conf *xconf;
if ((xconf = parse_config(conffile, ospfd_conf->opts)) == NULL)
merge_config(ospfd_conf, xconf);
kr_reload(ospfd_conf->redist_label_or_prefix);
merge_config(struct ospfd_conf *conf, struct ospfd_conf *xconf)
struct ospfd_conf *ospfd_conf = NULL;
struct area *area_find(struct ospfd_conf *, struct in_addr);
int area_border_router(struct ospfd_conf *);
struct ospfd_conf *parse_config(char *, int);
void merge_config(struct ospfd_conf *, struct ospfd_conf *);
void print_config(struct ospfd_conf *);
if ((noeconf = malloc(sizeof(struct ospfd_conf))) ==
memcpy(noeconf, imsg.data, sizeof(struct ospfd_conf));
struct ospfd_conf *oeconf = NULL, *noeconf;
ospfe(struct ospfd_conf *xconf, int pipe_parent2ospfe[2], int pipe_ospfe2rde[2],
pid_t ospfe(struct ospfd_conf *, int[2], int[2], int[2]);
void if_start(struct ospfd_conf *, struct iface *);
struct ospfd_conf *xconf = bula;
find_iface(struct ospfd_conf *xconf, unsigned int ifindex, struct in6_addr *src)
struct iface *find_iface(struct ospfd_conf *, unsigned int,
struct ospfd_conf *
if ((conf = calloc(1, sizeof(struct ospfd_conf))) == NULL)
clear_config(struct ospfd_conf *xconf)
void clear_config(struct ospfd_conf *xconf);
static struct ospfd_conf *conf;
print_rtlabel(struct ospfd_conf *conf)
print_config(struct ospfd_conf *conf)
void print_mainconf(struct ospfd_conf *);
void print_redistribute(struct ospfd_conf *);
void print_rtlabel(struct ospfd_conf *);
print_mainconf(struct ospfd_conf *conf)
print_redistribute(struct ospfd_conf *conf)
rde(struct ospfd_conf *xconf, int pipe_parent2rde[2], int pipe_ospfe2rde[2],
if ((nconf = malloc(sizeof(struct ospfd_conf))) ==
memcpy(nconf, imsg.data, sizeof(struct ospfd_conf));
struct ospfd_conf *rdeconf = NULL, *nconf = NULL;
pid_t rde(struct ospfd_conf *, int [2], int [2], int [2]);
void rt_calc(struct vertex *, struct area *, struct ospfd_conf *);
void stop_spf_timer(struct ospfd_conf *);
void start_spf_holdtimer(struct ospfd_conf *);
rt_calc(struct vertex *v, struct area *area, struct ospfd_conf *conf)
extern struct ospfd_conf *rdeconf;
struct ospfd_conf *conf = arg;
stop_spf_timer(struct ospfd_conf *conf)
start_spf_holdtimer(struct ospfd_conf *conf)
area_border_router(struct ospfd_conf *conf)
area_find(struct ospfd_conf *conf, struct in_addr area_id)
extern struct ospfd_conf *oeconf;
extern struct ospfd_conf *oeconf;
if_init(struct ospfd_conf *xconf, struct iface *iface)
if ((ospfd_conf = parse_config(conffile, opts)) == NULL) {
if (ospfd_conf->rtr_id.s_addr == 0)
ospfd_conf->rtr_id.s_addr = get_rtr_id();
ospfd_conf->rdomain) == -1)
ospfd_conf->csock = sockname;
if (ospfd_conf->opts & OSPFD_OPT_NOACTION) {
if (ospfd_conf->opts & OSPFD_OPT_VERBOSE)
print_config(ospfd_conf);
log_setverbose(ospfd_conf->opts & OSPFD_OPT_VERBOSE);
if ((control_check(ospfd_conf->csock)) == -1)
rde_pid = rde(ospfd_conf, pipe_parent2rde, pipe_ospfe2rde,
ospfe_pid = ospfe(ospfd_conf, pipe_parent2ospfe, pipe_ospfe2rde,
if ((control_fd = control_init(ospfd_conf->csock)) == -1)
if (kr_init(!(ospfd_conf->flags & OSPFD_FLAG_NO_FIB_UPDATE),
ospfd_conf->rdomain, ospfd_conf->redist_label_or_prefix,
ospfd_conf->fib_priority) == -1)
while ((a = LIST_FIRST(&ospfd_conf->area_list)) != NULL) {
while ((r = SIMPLEQ_FIRST(&ospfd_conf->redist_list)) != NULL) {
SIMPLEQ_REMOVE_HEAD(&ospfd_conf->redist_list, entry);
free(ospfd_conf);
SIMPLEQ_FOREACH(r, &ospfd_conf->redist_list, entry) {
struct ospfd_conf *xconf;
if ((xconf = parse_config(conffile, ospfd_conf->opts)) == NULL)
xconf->rtr_id.s_addr = ospfd_conf->rtr_id.s_addr;
if (ospfd_conf->rtr_id.s_addr != xconf->rtr_id.s_addr) {
struct ospfd_conf *ospfd_conf = NULL;
merge_config(ospfd_conf, xconf);
kr_reload(ospfd_conf->redist_label_or_prefix);
merge_config(struct ospfd_conf *conf, struct ospfd_conf *xconf)
struct area *area_find(struct ospfd_conf *, struct in_addr);
int area_border_router(struct ospfd_conf *);
struct ospfd_conf *parse_config(char *, int);
void merge_config(struct ospfd_conf *, struct ospfd_conf *);
void print_config(struct ospfd_conf *);
if ((noeconf = malloc(sizeof(struct ospfd_conf))) ==
memcpy(noeconf, imsg.data, sizeof(struct ospfd_conf));
struct ospfd_conf *oeconf = NULL, *noeconf;
ospfe(struct ospfd_conf *xconf, int pipe_parent2ospfe[2], int pipe_ospfe2rde[2],
pid_t ospfe(struct ospfd_conf *, int[2], int[2], int[2]);
void if_init(struct ospfd_conf *, struct iface *);
struct ospfd_conf *xconf = bula;
find_iface(struct ospfd_conf *xconf, unsigned int ifindex, struct in_addr src)
struct iface *find_iface(struct ospfd_conf *, unsigned int, struct in_addr);
struct ospfd_conf *
if ((conf = calloc(1, sizeof(struct ospfd_conf))) == NULL)
clear_config(struct ospfd_conf *xconf)
void clear_config(struct ospfd_conf *xconf);
static struct ospfd_conf *conf;
print_rtlabel(struct ospfd_conf *conf)
print_config(struct ospfd_conf *conf)
void print_mainconf(struct ospfd_conf *);
void print_rtlabel(struct ospfd_conf *);
print_mainconf(struct ospfd_conf *conf)
struct ospfd_conf *rdeconf = NULL, *nconf = NULL;
if ((nconf = malloc(sizeof(struct ospfd_conf))) ==
memcpy(nconf, imsg.data, sizeof(struct ospfd_conf));
rde(struct ospfd_conf *xconf, int pipe_parent2rde[2], int pipe_ospfe2rde[2],
pid_t rde(struct ospfd_conf *, int [2], int [2], int [2]);
void rt_calc(struct vertex *, struct area *, struct ospfd_conf *);
void stop_spf_timer(struct ospfd_conf *);
void start_spf_holdtimer(struct ospfd_conf *);
rt_calc(struct vertex *v, struct area *area, struct ospfd_conf *conf)
extern struct ospfd_conf *rdeconf;
struct ospfd_conf *conf = arg;
stop_spf_timer(struct ospfd_conf *conf)
start_spf_holdtimer(struct ospfd_conf *conf)