summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordenis <denis@openbsd.org>2018-12-28 22:05:15 +0000
committerdenis <denis@openbsd.org>2018-12-28 22:05:15 +0000
commitf2b9ef911b1e68d27a4ebc300f1bfc56aeff3251 (patch)
tree2e46b57e4ce2127110fc5d1190b5887ca37c06b8
parentFix dino at uturn attachment. From miod@ (diff)
downloadwireguard-openbsd-f2b9ef911b1e68d27a4ebc300f1bfc56aeff3251.tar.xz
wireguard-openbsd-f2b9ef911b1e68d27a4ebc300f1bfc56aeff3251.zip
move kroute_find() call later
No need to scan the list if we return early. OK claudio@
-rw-r--r--usr.sbin/bgpd/kroute.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/usr.sbin/bgpd/kroute.c b/usr.sbin/bgpd/kroute.c
index 55ffa1be4db..0bb1c9a2ea4 100644
--- a/usr.sbin/bgpd/kroute.c
+++ b/usr.sbin/bgpd/kroute.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kroute.c,v 1.226 2018/12/06 13:04:40 claudio Exp $ */
+/* $OpenBSD: kroute.c,v 1.227 2018/12/28 22:05:15 denis Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -487,10 +487,6 @@ kr4_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
int action = RTM_ADD;
u_int16_t labelid;
- if ((kr = kroute_find(kt, kl->prefix.v4.s_addr, kl->prefixlen,
- fib_prio)) != NULL)
- action = RTM_CHANGE;
-
/* for blackhole and reject routes nexthop needs to be 127.0.0.1 */
if (kl->flags & (F_BLACKHOLE|F_REJECT))
kl->nexthop.v4.s_addr = htonl(INADDR_LOOPBACK);
@@ -501,6 +497,10 @@ kr4_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
labelid = rtlabel_name2id(kl->label);
+ if ((kr = kroute_find(kt, kl->prefix.v4.s_addr, kl->prefixlen,
+ fib_prio)) != NULL)
+ action = RTM_CHANGE;
+
if (action == RTM_ADD) {
if ((kr = calloc(1, sizeof(struct kroute_node))) == NULL) {
log_warn("%s", __func__);
@@ -545,10 +545,6 @@ kr6_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
int action = RTM_ADD;
u_int16_t labelid;
- if ((kr6 = kroute6_find(kt, &kl->prefix.v6, kl->prefixlen, fib_prio)) !=
- NULL)
- action = RTM_CHANGE;
-
/* for blackhole and reject routes nexthop needs to be ::1 */
if (kl->flags & (F_BLACKHOLE|F_REJECT))
bcopy(&lo6, &kl->nexthop.v6, sizeof(kl->nexthop.v6));
@@ -558,6 +554,10 @@ kr6_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
labelid = rtlabel_name2id(kl->label);
+ if ((kr6 = kroute6_find(kt, &kl->prefix.v6, kl->prefixlen, fib_prio)) !=
+ NULL)
+ action = RTM_CHANGE;
+
if (action == RTM_ADD) {
if ((kr6 = calloc(1, sizeof(struct kroute6_node))) == NULL) {
log_warn("%s", __func__);
@@ -604,10 +604,6 @@ krVPN4_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
u_int32_t mplslabel = 0;
u_int16_t labelid;
- if ((kr = kroute_find(kt, kl->prefix.vpn4.addr.s_addr, kl->prefixlen,
- fib_prio)) != NULL)
- action = RTM_CHANGE;
-
/* nexthop within 127/8 -> ignore silently */
if ((kl->nexthop.v4.s_addr & htonl(IN_CLASSA_NET)) ==
htonl(INADDR_LOOPBACK & IN_CLASSA_NET))
@@ -630,6 +626,10 @@ krVPN4_change(struct ktable *kt, struct kroute_full *kl, u_int8_t fib_prio)
if (kl->flags & (F_BLACKHOLE|F_REJECT))
kl->nexthop.v4.s_addr = htonl(INADDR_LOOPBACK);
+ if ((kr = kroute_find(kt, kl->prefix.vpn4.addr.s_addr, kl->prefixlen,
+ fib_prio)) != NULL)
+ action = RTM_CHANGE;
+
if (action == RTM_ADD) {
if ((kr = calloc(1, sizeof(struct kroute_node))) == NULL) {
log_warn("%s", __func__);