From a932a10492dbe30300ad6ebc7db2ad034d6a7404 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sat, 9 May 2026 02:27:31 +0200 Subject: [PATCH] Inherit egress and PR burst settings from parent interface --- RNS/Interfaces/AutoInterface.py | 5 +++++ RNS/Interfaces/BackboneInterface.py | 31 +++++++++++++++++++++++++++++ RNS/Interfaces/I2PInterface.py | 5 +++++ RNS/Interfaces/TCPInterface.py | 5 +++++ 4 files changed, 46 insertions(+) diff --git a/RNS/Interfaces/AutoInterface.py b/RNS/Interfaces/AutoInterface.py index 275832fd..0a95bd00 100644 --- a/RNS/Interfaces/AutoInterface.py +++ b/RNS/Interfaces/AutoInterface.py @@ -539,6 +539,11 @@ class AutoInterface(Interface): spawned_interface.ic_new_time = self.ic_new_time spawned_interface.ic_burst_penalty = self.ic_burst_penalty spawned_interface.ic_held_release_interval = self.ic_held_release_interval + + spawned_interface.egress_control = self.egress_control + spawned_interface.ec_pr_freq = self.ec_pr_freq + spawned_interface.ic_pr_burst_freq_new = self.ic_pr_burst_freq_new + spawned_interface.ic_pr_burst_freq = self.ic_pr_burst_freq spawned_interface.parent_interface = self spawned_interface.bitrate = self.bitrate diff --git a/RNS/Interfaces/BackboneInterface.py b/RNS/Interfaces/BackboneInterface.py index 231d8a41..aafde443 100644 --- a/RNS/Interfaces/BackboneInterface.py +++ b/RNS/Interfaces/BackboneInterface.py @@ -182,6 +182,32 @@ class BackboneInterface(Interface): @ic_burst_activated.setter def ic_burst_activated(self, value): pass + + __last_ic_pr_burst_check = 0 + __last_ic_pr_burst_state = False + @property + def ic_pr_burst_active(self): + if time.time() > self.__last_ic_pr_burst_check + 2: + self.__last_ic_pr_burst_state = any(i.ic_pr_burst_active for i in self.spawned_interfaces) + + return self.__last_ic_pr_burst_state + + @ic_pr_burst_active.setter + def ic_pr_burst_active(self, value): pass + + __ic_pr_burst_activated_check = 0 + __ic_pr_burst_activated = 0 + @property + def ic_pr_burst_activated(self): + if time.time() > self.__ic_pr_burst_activated_check + 2: + activated = [i.ic_pr_burst_activated for i in self.spawned_interfaces if i.ic_pr_burst_active] + if activated: self.__ic_pr_burst_activated = min(activated) + + return self.__ic_pr_burst_activated + + @ic_pr_burst_activated.setter + def ic_pr_burst_activated(self, value): pass + @staticmethod def start(): if not BackboneInterface._job_active: threading.Thread(target=BackboneInterface.__job, daemon=True).start() @@ -388,6 +414,11 @@ class BackboneInterface(Interface): spawned_interface.ic_new_time = self.ic_new_time spawned_interface.ic_burst_penalty = self.ic_burst_penalty spawned_interface.ic_held_release_interval = self.ic_held_release_interval + + spawned_interface.egress_control = self.egress_control + spawned_interface.ec_pr_freq = self.ec_pr_freq + spawned_interface.ic_pr_burst_freq_new = self.ic_pr_burst_freq_new + spawned_interface.ic_pr_burst_freq = self.ic_pr_burst_freq spawned_interface.socket = socket spawned_interface.target_ip = socket.getpeername()[0] diff --git a/RNS/Interfaces/I2PInterface.py b/RNS/Interfaces/I2PInterface.py index 88acfa35..0229d723 100644 --- a/RNS/Interfaces/I2PInterface.py +++ b/RNS/Interfaces/I2PInterface.py @@ -957,6 +957,11 @@ class I2PInterface(Interface): spawned_interface.ic_new_time = self.ic_new_time spawned_interface.ic_burst_penalty = self.ic_burst_penalty spawned_interface.ic_held_release_interval = self.ic_held_release_interval + + spawned_interface.egress_control = self.egress_control + spawned_interface.ec_pr_freq = self.ec_pr_freq + spawned_interface.ic_pr_burst_freq_new = self.ic_pr_burst_freq_new + spawned_interface.ic_pr_burst_freq = self.ic_pr_burst_freq spawned_interface.parent_interface = self spawned_interface.online = True diff --git a/RNS/Interfaces/TCPInterface.py b/RNS/Interfaces/TCPInterface.py index 59698fde..547f59de 100644 --- a/RNS/Interfaces/TCPInterface.py +++ b/RNS/Interfaces/TCPInterface.py @@ -589,6 +589,11 @@ class TCPServerInterface(Interface): spawned_interface.ic_burst_penalty = self.ic_burst_penalty spawned_interface.ic_held_release_interval = self.ic_held_release_interval + spawned_interface.egress_control = self.egress_control + spawned_interface.ec_pr_freq = self.ec_pr_freq + spawned_interface.ic_pr_burst_freq_new = self.ic_pr_burst_freq_new + spawned_interface.ic_pr_burst_freq = self.ic_pr_burst_freq + spawned_interface.target_ip = handler.client_address[0] spawned_interface.target_port = str(handler.client_address[1]) spawned_interface.parent_interface = self