diff --git a/gns3server/controller/link.py b/gns3server/controller/link.py index dc8217224..76011b9f2 100644 --- a/gns3server/controller/link.py +++ b/gns3server/controller/link.py @@ -48,7 +48,7 @@ FILTERS = [ "name": "Delay", "description": "Delay packets in milliseconds. You can add jitter in milliseconds (+/-) of the delay", "parameters": [ - {"name": "Latency", "minimum": 0, "maximum": 32767, "unit": "ms", "type": "int"}, + {"name": "Latency", "minimum": 1, "maximum": 32767, "unit": "ms", "type": "int"}, {"name": "Jitter (-/+)", "minimum": 0, "maximum": 32767, "unit": "ms", "type": "int"}, ], }, diff --git a/gns3server/utils/packet_filter_validation.py b/gns3server/utils/packet_filter_validation.py index f5845a025..0bd36fc5e 100644 --- a/gns3server/utils/packet_filter_validation.py +++ b/gns3server/utils/packet_filter_validation.py @@ -95,7 +95,7 @@ def validate_filter_parameters(filter_type: str, values: List[Any]) -> None: }, "delay": { "params_count": 2, # latency, jitter - "ranges": [(0, 32767), (0, 32767)], + "ranges": [(1, 32767), (0, 32767)], # ubridge rejects latency <= 0 "names": ["Latency", "Jitter"], "units": ["ms", "ms"] }, diff --git a/tests/utils/test_packet_filter_validation.py b/tests/utils/test_packet_filter_validation.py index 0951783ac..3a9de41bd 100644 --- a/tests/utils/test_packet_filter_validation.py +++ b/tests/utils/test_packet_filter_validation.py @@ -54,19 +54,23 @@ class TestPacketFilterValidation: def test_delay_valid(self): """Test valid delay parameters.""" - # Valid range: 0-32767ms - validate_filter_parameters("delay", [0, 0]) + # Valid range: 1-32767ms latency, 0-32767ms jitter + validate_filter_parameters("delay", [1, 0]) validate_filter_parameters("delay", [100, 50]) validate_filter_parameters("delay", [32767, 32767]) def test_delay_invalid(self): """Test invalid delay parameters.""" + # Zero latency (ubridge rejects latency <= 0) + with pytest.raises(FilterValidationError, match="between 1 and 32767"): + validate_filter_parameters("delay", [0, 0]) + # Negative latency - with pytest.raises(FilterValidationError, match="between 0 and 32767"): + with pytest.raises(FilterValidationError, match="between 1 and 32767"): validate_filter_parameters("delay", [-1, 0]) # Over max - with pytest.raises(FilterValidationError, match="between 0 and 32767"): + with pytest.raises(FilterValidationError, match="between 1 and 32767"): validate_filter_parameters("delay", [32768, 0]) # Negative jitter