From f16ea39889c0fd65f3e533cf40cc3a0a33ac1c33 Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Tue, 3 Nov 2026 06:02:47 +0100 Subject: Let a user pick their cluster's own multicast group --- src/ot_livesync.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/ot_livesync.c') diff --git a/src/ot_livesync.c b/src/ot_livesync.c index 11b75d2..85577f7 100644 --- a/src/ot_livesync.c +++ b/src/ot_livesync.c @@ -22,8 +22,10 @@ #ifdef WANT_SYNC_LIVE -ot_ip6 groupip_1 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 224, 0, 23, 5}; -static uint16_t g_port = LIVESYNC_PORT; +/* The multicast group, legacy opentrackers joined by default 224.0.23.5, so it + stays the default */ +static ot_ip6 g_group = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 224, 0, 23, 5}; +static uint16_t g_port = LIVESYNC_PORT; #define LIVESYNC_INCOMING_BUFFSIZE (256 * 256) @@ -96,6 +98,14 @@ void livesync_deinit(void) { close(g_socket_out); } +int livesync_set_group(const ot_ip6 group) { + /* v4 multicast is 224.0.0.0/4, and the socket layer has nothing else */ + if (!ip_is_v4mapped(group) || (group[12] & 0xf0) != 0xe0) + return -1; + memcpy(g_group, group, sizeof(ot_ip6)); + return 0; +} + void livesync_bind_mcast(ot_ip6 ip, uint16_t port) { if (!ip_is_v4mapped(ip)) exerr("v6 mcast support not yet available."); @@ -105,7 +115,7 @@ void livesync_bind_mcast(ot_ip6 ip, uint16_t port) { g_port = port; - if ((g_socket_in = socket_mcast_join(groupip_1, ip, port)) == -1) + if ((g_socket_in = socket_mcast_join(g_group, ip, port)) == -1) exerr("Error: Cant bind live sync incoming socket."); if ((g_socket_out = socket_mcast_bind(ip, port, 0)) == -1) @@ -125,7 +135,7 @@ static void livesync_issue_peersync(sync_buffer *buf) { has modified the protected element */ pthread_mutex_unlock(&g_outbuf_mutex); - socket_mcast_send(g_socket_out, mycopy, fill, groupip_1, g_port); + socket_mcast_send(g_socket_out, mycopy, fill, g_group, g_port); } static void livesync_handle_peersync(struct ot_workstruct *ws, size_t peer_size) { -- cgit v1.3