diff options
author | 2018-12-28 22:05:15 +0000 | |
---|---|---|
committer | 2018-12-28 22:05:15 +0000 | |
commit | f2b9ef911b1e68d27a4ebc300f1bfc56aeff3251 (patch) | |
tree | 2e46b57e4ce2127110fc5d1190b5887ca37c06b8 | |
parent | Fix dino at uturn attachment. From miod@ (diff) | |
download | wireguard-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.c | 26 |
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__); |