From: Ondrej Zajicek Date: Sun, 1 May 2011 15:16:05 +0000 (+0200) Subject: There may be more IP address records with the same IP. X-Git-Tag: v1.3.1~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a506476acd4baa212f542b257eb5abba733ba4c5;p=thirdparty%2Fbird.git There may be more IP address records with the same IP. --- diff --git a/nest/iface.c b/nest/iface.c index 3cfc626ab..2ff2611af 100644 --- a/nest/iface.c +++ b/nest/iface.c @@ -451,6 +451,13 @@ ifa_recalc_all_primary_addresses(void) } } +static inline int +ifa_same(struct ifa *a, struct ifa *b) +{ + return ipa_equal(a->ip, b->ip) && ipa_equal(a->prefix, b->prefix) && + a->pxlen == b->pxlen; +} + /** * ifa_update - update interface address @@ -467,11 +474,9 @@ ifa_update(struct ifa *a) struct ifa *b; WALK_LIST(b, i->addrs) - if (ipa_equal(b->ip, a->ip)) + if (ifa_same(b, a)) { - if (ipa_equal(b->prefix, a->prefix) && - b->pxlen == a->pxlen && - ipa_equal(b->brd, a->brd) && + if (ipa_equal(b->brd, a->brd) && ipa_equal(b->opposite, a->opposite) && b->scope == a->scope && !((b->flags ^ a->flags) & IA_PEER)) @@ -514,7 +519,7 @@ ifa_delete(struct ifa *a) struct ifa *b; WALK_LIST(b, i->addrs) - if (ipa_equal(b->ip, a->ip)) + if (ifa_same(b, a)) { rem_node(&b->n); if (b->flags & IF_UP)