From cc2630f57c47122db407f094289d9ec40a2f7005 Mon Sep 17 00:00:00 2001 From: Ondrej Lukas Date: Tue, 10 Mar 2026 10:23:03 +0100 Subject: [PATCH 1/3] Report that WhiteBox NSG does not support ip re-mapping --- netsecgame/game/worlds/WhiteBoxNetSecGame.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/netsecgame/game/worlds/WhiteBoxNetSecGame.py b/netsecgame/game/worlds/WhiteBoxNetSecGame.py index 277fc239..c6e4c8e8 100644 --- a/netsecgame/game/worlds/WhiteBoxNetSecGame.py +++ b/netsecgame/game/worlds/WhiteBoxNetSecGame.py @@ -4,6 +4,7 @@ import logging import os import json +import warnings from pathlib import Path from netsecgame.utils.utils import get_logging_level from netsecgame.game_components import Action, ActionType @@ -126,6 +127,12 @@ def _generate_all_actions(self)-> list[Action]: def _create_state_from_view(self, view, add_neighboring_nets = True): return super()._create_state_from_view(view, add_neighboring_nets=add_neighboring_nets) + def _dynamic_ip_change(self, max_attempts:int)->None: + warnings.warn("Dynamic IP change is not supported for WhiteBoxNetSecGame.", UserWarning) + self.logger.warning("Dynamic IP change is not supported for WhiteBoxNetSecGame.") + return None + + if __name__ == "__main__": parser = argparse.ArgumentParser( description="NetSecGame Coordinator Server Author: Ondrej Lukas ondrej.lukas@aic.fel.cvut.cz", From 6f890fcf71acfcbd5ab5211c5af00fa5acbfd05a Mon Sep 17 00:00:00 2001 From: Ondrej Lukas Date: Tue, 10 Mar 2026 10:24:27 +0100 Subject: [PATCH 2/3] Correctly check for blocked reset if agent disconnects --- netsecgame/game/coordinator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netsecgame/game/coordinator.py b/netsecgame/game/coordinator.py index 27fdc797..faef03a6 100644 --- a/netsecgame/game/coordinator.py +++ b/netsecgame/game/coordinator.py @@ -701,7 +701,7 @@ async def _remove_agent_from_game(self, agent_addr): # remove agent from reset requests agent_info["reset_request"] = self._reset_requests.pop(agent_addr) # check if this agent was not preventing reset - if any(self._reset_requests.values()): + if all(self._reset_requests.values()): self._reset_event.set() agent_info["episode_end"] = self._episode_ends.pop(agent_addr) #check if this agent was not preventing episode end From a2bde5e12934835086f91cad4d79f38d531b1778 Mon Sep 17 00:00:00 2001 From: Ondrej Lukas Date: Tue, 10 Mar 2026 10:39:36 +0100 Subject: [PATCH 3/3] add default value (copied from NSG) --- netsecgame/game/worlds/WhiteBoxNetSecGame.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netsecgame/game/worlds/WhiteBoxNetSecGame.py b/netsecgame/game/worlds/WhiteBoxNetSecGame.py index c6e4c8e8..0b48f2ab 100644 --- a/netsecgame/game/worlds/WhiteBoxNetSecGame.py +++ b/netsecgame/game/worlds/WhiteBoxNetSecGame.py @@ -127,7 +127,7 @@ def _generate_all_actions(self)-> list[Action]: def _create_state_from_view(self, view, add_neighboring_nets = True): return super()._create_state_from_view(view, add_neighboring_nets=add_neighboring_nets) - def _dynamic_ip_change(self, max_attempts:int)->None: + def _dynamic_ip_change(self, max_attempts:int=10)->None: warnings.warn("Dynamic IP change is not supported for WhiteBoxNetSecGame.", UserWarning) self.logger.warning("Dynamic IP change is not supported for WhiteBoxNetSecGame.") return None