From 1e9044be8d4325fa82f01d72eb6c8581dcd6fd06 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Wed, 23 Jun 2021 16:35:44 +0200 Subject: *: clean up ifp-by-local-address function(s) Most users of if_lookup_address_exact only cared about whether the address is any local address. Split that off into a separate function. For the users that actually need the ifp - which I'm about to add a few of - change it to prefer returning interfaces that are UP. (Function name changed due to slight change in behavior re. UP state, to avoid possible bugs from this change.) Signed-off-by: David Lamparter --- staticd/static_routes.c | 8 ++++---- staticd/static_zebra.c | 8 ++------ 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'staticd') diff --git a/staticd/static_routes.c b/staticd/static_routes.c index 60f384e51..45c42ddce 100644 --- a/staticd/static_routes.c +++ b/staticd/static_routes.c @@ -199,14 +199,14 @@ bool static_add_nexthop_validate(const char *nh_vrf_name, switch (type) { case STATIC_IPV4_GATEWAY: case STATIC_IPV4_GATEWAY_IFNAME: - if (if_lookup_exact_address(&ipaddr->ipaddr_v4, AF_INET, - vrf->vrf_id)) + if (if_address_is_local(&ipaddr->ipaddr_v4, AF_INET, + vrf->vrf_id)) return false; break; case STATIC_IPV6_GATEWAY: case STATIC_IPV6_GATEWAY_IFNAME: - if (if_lookup_exact_address(&ipaddr->ipaddr_v6, AF_INET6, - vrf->vrf_id)) + if (if_address_is_local(&ipaddr->ipaddr_v6, AF_INET6, + vrf->vrf_id)) return false; break; default: diff --git a/staticd/static_zebra.c b/staticd/static_zebra.c index 538fae28a..38b3c93d7 100644 --- a/staticd/static_zebra.c +++ b/staticd/static_zebra.c @@ -162,14 +162,10 @@ static bool static_nexthop_is_local(vrf_id_t vrfid, struct prefix *addr, int family) { if (family == AF_INET) { - if (if_lookup_exact_address(&addr->u.prefix4, - AF_INET, - vrfid)) + if (if_address_is_local(&addr->u.prefix4, AF_INET, vrfid)) return true; } else if (family == AF_INET6) { - if (if_lookup_exact_address(&addr->u.prefix6, - AF_INET6, - vrfid)) + if (if_address_is_local(&addr->u.prefix6, AF_INET6, vrfid)) return true; } return false; -- cgit v1.2.3