From: Vinit Agnihotri Date: Tue, 5 Mar 2024 11:03:25 +0000 (-0800) Subject: smbd-server: Process ip add/drop events for options:dynamic only X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=ff3b92ffaed64e8ecb250f0ad160210f511a39e2 smbd-server: Process ip add/drop events for options:dynamic only Signed-off-by: Vinit Agnihotri Reviewed-by: Martin Schwenke Reviewed-by: Andrew Bartlett --- diff --git a/source3/smbd/server.c b/source3/smbd/server.c index e2d6c8c0be1..c7d5dae44f0 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1695,6 +1695,7 @@ static void smbd_addr_changed(struct tevent_req *req) struct sockaddr_storage addr; NTSTATUS status; uint32_t if_index; + bool match; status = addrchange_recv(req, &type, &addr, &if_index); TALLOC_FREE(req); @@ -1705,6 +1706,16 @@ static void smbd_addr_changed(struct tevent_req *req) return; } + match = interface_ifindex_exists_with_options(if_index, + IFACE_DYNAMIC_OPTION); + if (!match) { + DBG_NOTICE( + "smbd: No interface present for if_index %u " + "with dynamic option\n", + if_index); + goto rearm; + } + if (type == ADDRCHANGE_DEL) { char addrstr[INET6_ADDRSTRLEN]; @@ -1728,14 +1739,6 @@ static void smbd_addr_changed(struct tevent_req *req) "on if_index %u\n", addrstr, if_index); - if (!interface_ifindex_exists(if_index)) { - DBG_NOTICE( - "smbd: No interface present for if_index %u\n", - if_index - ); - goto rearm; - } - if (!smbd_open_socket_for_ip(state->parent, state->ev, state->msg_ctx,