diff options
author | Donald Sharp <sharpd@nvidia.com> | 2023-01-28 15:32:34 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@nvidia.com> | 2023-01-28 15:32:34 +0100 |
commit | 6d078ff808ebcb89f4fa8cd909d5758a5b18bdd2 (patch) | |
tree | 0fedfab7a281dc797f76bf40a86a81d6f6eb8ad1 /babeld | |
parent | babeld: The function is already a pointer (diff) | |
download | frr-6d078ff808ebcb89f4fa8cd909d5758a5b18bdd2.tar.xz frr-6d078ff808ebcb89f4fa8cd909d5758a5b18bdd2.zip |
babeld: During intf startup, ignore address already in use
When listening on a multicast group. No need to actually
fail the operation when it's already being used.
Let's not treat the Address already in use error message
as one that is stopping everything from working. Especially
since multiple interface events cause this to happen.
Without this, if config is read in before full connection
to zebra, babel will never establish neighbors.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'babeld')
-rw-r--r-- | babeld/babel_interface.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c index cc5089801..4ca875206 100644 --- a/babeld/babel_interface.c +++ b/babeld/babel_interface.c @@ -632,15 +632,15 @@ interface_recalculate(struct interface *ifp) rc = setsockopt(protocol_socket, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char*)&mreq, sizeof(mreq)); - if(rc < 0) { - flog_err_sys(EC_LIB_SOCKET, - "setsockopt(IPV6_JOIN_GROUP) on interface '%s': %s", - ifp->name, safe_strerror(errno)); - /* This is probably due to a missing link-local address, - so down this interface, and wait until the main loop - tries to up it again. */ - interface_reset(ifp); - return -1; + if (rc < 0 && errno != EADDRINUSE) { + flog_err_sys(EC_LIB_SOCKET, + "setsockopt(IPV6_JOIN_GROUP) on interface '%s': %s", + ifp->name, safe_strerror(errno)); + /* This is probably due to a missing link-local address, + so down this interface, and wait until the main loop + tries to up it again. */ + interface_reset(ifp); + return -1; } set_timeout(&babel_ifp->hello_timeout, babel_ifp->hello_interval); |