mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
s3:rpc_server/witness: add implementation based on CTDB_SRVID_IPREALLOCATED and ctdbd_all_ip_foreach()
The design is relatively simple in the end: - We use ctdbd_all_ip_foreach() in order to build an in memory list of interfaces(ip addresses) and record if: - they are currently available or not - if they node local or not - The current list is would we use for the GetInterfaceList() call. - Register[Ex] will create an in memory structure holding a queue for pending AsyncNotify requests. - Unregister() will cancel pending AsyncNotify requests and let them return NOT_FOUND. - CTDB_SRVID_IPREALLOCATED messages will cause we refresh with ctdbd_all_ip_foreach(): - this will detect changes in the interface state and remove stale interfaces. - for each change the list of registrations is checked for a matching ip address and a RESOURCE_CHANGE will be scheduled in the queue of the registration, the started queue will trigger AsyncNotify responses - We also register the connections with ctdb in order to give other nodes a chance to generate tickle-acks for the witness tcp connections. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Günther Deschner <gd@samba.org>
This commit is contained in:
parent
85f30bcf0b
commit
cb1d711e25