diff --git a/RNS/Interfaces/Interface.py b/RNS/Interfaces/Interface.py index aeec1f87..fefd70c8 100755 --- a/RNS/Interfaces/Interface.py +++ b/RNS/Interfaces/Interface.py @@ -90,26 +90,40 @@ class Interface: self.bitrate = 62500 self.HW_MTU = None - self.supports_discovery = False - self.discoverable = False - self.last_discovery_announce = 0 - self.bootstrap_only = False - self.parent_interface = None - self.spawned_interfaces = None - self.tunnel_id = None - self.ingress_control = True - self.phy_keepalive = False - self.ic_max_held_announces = Interface.MAX_HELD_ANNOUNCES - self.ic_burst_hold = Interface.IC_BURST_HOLD - self.ic_burst_active = False - self.ic_burst_activated = 0 - self.ic_held_release = 0 - self.ic_burst_freq_new = Interface.IC_BURST_FREQ_NEW - self.ic_burst_freq = Interface.IC_BURST_FREQ - self.ic_new_time = Interface.IC_NEW_TIME - self.ic_burst_penalty = Interface.IC_BURST_PENALTY - self.ic_held_release_interval = Interface.IC_HELD_RELEASE_INTERVAL - self.held_announces = {} + self.supports_discovery = False + self.discoverable = False + self.last_discovery_announce = 0 + self.bootstrap_only = False + self.parent_interface = None + self.spawned_interfaces = None + self.tunnel_id = None + self.ingress_control = True + self.phy_keepalive = False + + self.ic_max_held_announces = RNS.Reticulum.get_instance()._default_ic_max_held_announces() + self.ic_burst_hold = RNS.Reticulum.get_instance()._default_ic_burst_hold() + self.ic_burst_active = False + self.ic_burst_activated = 0 + self.ic_held_release = 0 + self.ic_burst_freq_new = RNS.Reticulum.get_instance()._default_ic_burst_freq_new() + self.ic_burst_freq = RNS.Reticulum.get_instance()._default_ic_burst_freq() + self.ic_new_time = RNS.Reticulum.get_instance()._default_ic_new_time() + self.ic_burst_penalty = RNS.Reticulum.get_instance()._default_ic_burst_penalty() + self.ic_held_release_interval = RNS.Reticulum.get_instance()._default_ic_held_release_interval() + self.held_announces = {} + + RNS.log(f"=========== {self} ===========") + RNS.log(f"self.ic_max_held_announces : {self.ic_max_held_announces}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_hold : {self.ic_burst_hold}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_active : {self.ic_burst_active}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_activated : {self.ic_burst_activated}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_held_release : {self.ic_held_release}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_freq_new : {self.ic_burst_freq_new}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_freq : {self.ic_burst_freq}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_new_time : {self.ic_new_time}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_burst_penalty : {self.ic_burst_penalty}", RNS.LOG_CRITICAL) + RNS.log(f"self.ic_held_release_interval : {self.ic_held_release_interval}", RNS.LOG_CRITICAL) + RNS.log(f"=========== {self} ===========\n") self.ia_freq_deque = deque(maxlen=Interface.IA_FREQ_SAMPLES) self.oa_freq_deque = deque(maxlen=Interface.OA_FREQ_SAMPLES) diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py index 6f90ea0b..cb5fb712 100755 --- a/RNS/Reticulum.py +++ b/RNS/Reticulum.py @@ -249,22 +249,29 @@ class Reticulum: Reticulum.blackholepath = Reticulum.configdir+"/storage/blackhole" Reticulum.interfacepath = Reticulum.configdir+"/interfaces" - Reticulum.__network_identity = None - Reticulum.__transport_enabled = False - Reticulum.__link_mtu_discovery = Reticulum.LINK_MTU_DISCOVERY - Reticulum.__remote_management_enabled = False - Reticulum.__use_implicit_proof = True - Reticulum.__allow_probes = False - Reticulum.__discovery_enabled = False - Reticulum.__discover_interfaces = False + Reticulum.__network_identity = None + Reticulum.__transport_enabled = False + Reticulum.__link_mtu_discovery = Reticulum.LINK_MTU_DISCOVERY + Reticulum.__remote_management_enabled = False + Reticulum.__use_implicit_proof = True + Reticulum.__allow_probes = False + Reticulum.__discovery_enabled = False + Reticulum.__discover_interfaces = False Reticulum.__autoconnect_discovered_interfaces = False - Reticulum.__required_discovery_value = None - Reticulum.__publish_blackhole = False - Reticulum.__blackhole_sources = [] - Reticulum.__interface_sources = [] - Reticulum.__default_ar_target = None - Reticulum.__default_ar_penalty = None - Reticulum.__default_ar_grace = None + Reticulum.__required_discovery_value = None + Reticulum.__publish_blackhole = False + Reticulum.__blackhole_sources = [] + Reticulum.__interface_sources = [] + Reticulum.__default_ar_target = None + Reticulum.__default_ar_penalty = None + Reticulum.__default_ar_grace = None + Reticulum.__ic_max_held_announces = None + Reticulum.__ic_burst_hold = None + Reticulum.__ic_burst_freq_new = None + Reticulum.__ic_burst_freq = None + Reticulum.__ic_new_time = None + Reticulum.__ic_burst_penalty = None + Reticulum.__ic_held_release_interval = None Reticulum.panic_on_interface_error = False @@ -596,6 +603,35 @@ class Reticulum: v = self.config["reticulum"].as_int(option) if v >= 0: Reticulum.__default_ar_grace = v + if option == "ic_max_held_announces": + v = self.config["reticulum"].as_int(option) + if v >= 0: Reticulum.__ic_max_held_announces = v + + if option == "ic_burst_hold": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_burst_hold = v + + if option == "ic_burst_freq_new": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_burst_freq_new = v + + if option == "ic_burst_freq": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_burst_freq = v + + if option == "ic_new_time": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_new_time = v + + if option == "ic_burst_penalty": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_burst_penalty = v + + if option == "ic_held_release_interval": + v = self.config["reticulum"].as_float(option) + if v >= 0: Reticulum.__ic_held_release_interval = v + + if RNS.compiled: RNS.log("Reticulum running in compiled mode", RNS.LOG_DEBUG) else: RNS.log("Reticulum running in interpreted mode", RNS.LOG_DEBUG) @@ -1021,6 +1057,27 @@ class Reticulum: def _default_ar_grace(self): return self.__default_ar_grace or RNS.Interfaces.Interface.Interface.DEFAULT_AR_GRACE + def _default_ic_max_held_announces(self): + return self.__ic_max_held_announces or RNS.Interfaces.Interface.Interface.MAX_HELD_ANNOUNCES + + def _default_ic_burst_hold(self): + return self.__ic_burst_hold or RNS.Interfaces.Interface.Interface.IC_BURST_HOLD + + def _default_ic_burst_freq_new(self): + return self.__ic_burst_freq_new or RNS.Interfaces.Interface.Interface.IC_BURST_FREQ_NEW + + def _default_ic_burst_freq(self): + return self.__ic_burst_freq or RNS.Interfaces.Interface.Interface.IC_BURST_FREQ + + def _default_ic_new_time(self): + return self.__ic_new_time or RNS.Interfaces.Interface.Interface.IC_NEW_TIME + + def _default_ic_burst_penalty(self): + return self.__ic_burst_penalty or RNS.Interfaces.Interface.Interface.IC_BURST_PENALTY + + def _default_ic_held_release_interval(self): + return self.__ic_held_release_interval or RNS.Interfaces.Interface.Interface.IC_HELD_RELEASE_INTERVAL + def _should_persist_data(self, background=False): if time.time() > self.last_data_persist+Reticulum.GRACIOUS_PERSIST_INTERVAL: def job(): self.__persist_data(background=background)