From 271931ff02df7686b8748b8e44fe2bdc863af1fb Mon Sep 17 00:00:00 2001 From: Jan Henning Date: Fri, 1 Nov 2024 23:37:23 +0100 Subject: [PATCH] Propagate broadcast mask into NetworkSettings when using the host announcer The NetBIOSDatagramSocket actually retrieves its broadcast adress from the NetworkSettings class, so if we've been given an explicit broadcast mask in the general server configuration, use that instead of the falling back to the GenerateBroadcastMask function, which still assumes classful addressing and therefore is prone to producing nonsense. --- .../org/filesys/smb/server/NetBIOSSessionSocketHandler.java | 2 ++ .../org/filesys/smb/server/ThreadedSMBConnectionsHandler.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/org/filesys/smb/server/NetBIOSSessionSocketHandler.java b/src/main/java/org/filesys/smb/server/NetBIOSSessionSocketHandler.java index 02a8161..4f69a7a 100644 --- a/src/main/java/org/filesys/smb/server/NetBIOSSessionSocketHandler.java +++ b/src/main/java/org/filesys/smb/server/NetBIOSSessionSocketHandler.java @@ -23,6 +23,7 @@ import java.net.Socket; import org.filesys.debug.Debug; +import org.filesys.netbios.NetworkSettings; import org.filesys.server.SocketSessionHandler; import org.filesys.server.config.ServerConfiguration; import org.filesys.smb.mailslot.TcpipNetBIOSHostAnnouncer; @@ -140,6 +141,7 @@ public final static void createSessionHandlers(SMBServer server, boolean sockDbg try { announcer.setBroadcastAddress(smbConfig.getBroadcastMask()); + NetworkSettings.setBroadcastMask(smbConfig.getBroadcastMask()); } catch (Exception ex) { } diff --git a/src/main/java/org/filesys/smb/server/ThreadedSMBConnectionsHandler.java b/src/main/java/org/filesys/smb/server/ThreadedSMBConnectionsHandler.java index a08b6d1..a5ce1ce 100644 --- a/src/main/java/org/filesys/smb/server/ThreadedSMBConnectionsHandler.java +++ b/src/main/java/org/filesys/smb/server/ThreadedSMBConnectionsHandler.java @@ -23,6 +23,7 @@ import java.util.List; import org.filesys.debug.Debug; +import org.filesys.netbios.NetworkSettings; import org.filesys.server.SessionHandlerInterface; import org.filesys.server.SessionHandlerList; import org.filesys.server.SocketSessionHandler; @@ -127,6 +128,7 @@ public void initializeHandler( SMBServer srv, SMBConfigSection config) try { announcer.setBroadcastAddress(config.getBroadcastMask()); + NetworkSettings.setBroadcastMask(config.getBroadcastMask()); } catch (Exception ex) { }