diff options
author | 2015-10-10 05:09:19 +0000 | |
---|---|---|
committer | 2015-10-10 05:09:19 +0000 | |
commit | 18d502b79bf875dba2a43d4319a02da18d8db901 (patch) | |
tree | f9ea274e0e908e6f0b34c4c5cc2c79393898f14b | |
parent | Remove attached neighbors whenever an interface is disabled to speedup (diff) | |
download | wireguard-openbsd-18d502b79bf875dba2a43d4319a02da18d8db901.tar.xz wireguard-openbsd-18d502b79bf875dba2a43d4319a02da18d8db901.zip |
Move some interface initialization bits from if_init() to eigrp_if_start()
and call if_init() only during the startup of the eigrpe process.
-rw-r--r-- | usr.sbin/eigrpd/eigrpe.c | 6 | ||||
-rw-r--r-- | usr.sbin/eigrpd/interface.c | 23 |
2 files changed, 11 insertions, 18 deletions
diff --git a/usr.sbin/eigrpd/eigrpe.c b/usr.sbin/eigrpd/eigrpe.c index e5c3a249914..e0fbc4a2916 100644 --- a/usr.sbin/eigrpd/eigrpe.c +++ b/usr.sbin/eigrpd/eigrpe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: eigrpe.c,v 1.3 2015/10/05 01:59:33 renato Exp $ */ +/* $OpenBSD: eigrpe.c,v 1.4 2015/10/10 05:09:19 renato Exp $ */ /* * Copyright (c) 2015 Renato Westphal <renato@openbsd.org> @@ -567,10 +567,6 @@ eigrpe_dispatch_rde(int fd, short event, void *bula) void eigrpe_instance_init(struct eigrp *eigrp) { - struct eigrp_iface *ei; - - TAILQ_FOREACH(ei, &eigrp->ei_list, e_entry) - if_init(econf, ei->iface); } void diff --git a/usr.sbin/eigrpd/interface.c b/usr.sbin/eigrpd/interface.c index 556042d35a2..0b5fec75b57 100644 --- a/usr.sbin/eigrpd/interface.c +++ b/usr.sbin/eigrpd/interface.c @@ -1,4 +1,4 @@ -/* $OpenBSD: interface.c,v 1.5 2015/10/10 05:07:10 renato Exp $ */ +/* $OpenBSD: interface.c,v 1.6 2015/10/10 05:09:19 renato Exp $ */ /* * Copyright (c) 2015 Renato Westphal <renato@openbsd.org> @@ -115,18 +115,6 @@ if_init(struct eigrpd_conf *xconf, struct iface *iface) { struct ifreq ifr; unsigned int rdomain; - struct eigrp_iface *ei; - union eigrpd_addr addr; - - memset(&addr, 0, sizeof(addr)); - TAILQ_FOREACH(ei, &iface->ei_list, i_entry) { - /* init the dummy self neighbor */ - ei->self = nbr_new(ei, &addr, 0, 1); - nbr_init(ei->self); - - /* set event handlers for interface */ - evtimer_set(&ei->hello_timer, eigrp_if_hello_timer, ei); - } /* set rdomain */ strlcpy(ifr.ifr_name, iface->name, sizeof(ifr.ifr_name)); @@ -343,12 +331,21 @@ eigrp_if_start(struct eigrp_iface *ei) { struct eigrp *eigrp = ei->eigrp; struct if_addr *if_addr; + union eigrpd_addr addr; struct in_addr addr4; struct in6_addr addr6; log_debug("%s: %s as %u family %s", __func__, ei->iface->name, eigrp->as, af_name(eigrp->af)); + /* init the dummy self neighbor */ + memset(&addr, 0, sizeof(addr)); + ei->self = nbr_new(ei, &addr, 0, 1); + nbr_init(ei->self); + + /* set event handlers for interface */ + evtimer_set(&ei->hello_timer, eigrp_if_hello_timer, ei); + TAILQ_FOREACH(if_addr, &ei->iface->addr_list, entry) { if (if_addr->af != eigrp->af) continue; |