Esempio n. 1
0
 def __init__(self, iface):
     self.iface = iface
     self.ping_timeout = config.get_parameter('ping_timeout', 4)
     self.is_verified = StatePublisher(False)
     self.has_address = False
     iface.ping_tester.update_event.subscribe_repeating(self._update)
     netlink_monitor.get_state_publisher(iface.iface,
                                         IFSTATE.ADDR).subscribe(
                                             self._has_address_cb, iface)
Esempio n. 2
0
 def __init__(self, iface):
     self.iface = iface
     self.ping_timeout = config.get_parameter("ping_timeout", 4)
     self.is_verified = StatePublisher(False)
     self.has_address = False
     iface.ping_tester.update_event.subscribe_repeating(self._update)
     netlink_monitor.get_state_publisher(iface.iface, IFSTATE.ADDR).subscribe(self._has_address_cb, iface)
Esempio n. 3
0
class PingMonitor:
    def __init__(self, iface):
        self.iface = iface
        self.ping_timeout = config.get_parameter('ping_timeout', 4)
        self.is_verified = StatePublisher(False)
        self.has_address = False
        iface.ping_tester.update_event.subscribe_repeating(self._update)
        netlink_monitor.get_state_publisher(iface.iface,
                                            IFSTATE.ADDR).subscribe(
                                                self._has_address_cb, iface)

    def _update(self, status):
        #print "PingMonitor._update"
        if status:
            (bins, latency1, latency2) = status
            #print "PingMonitor", bins, self.restart_time - time.time()
        if status and bins[0]:
            self.restart_time = time.time() + self.ping_timeout
            self.is_verified.set(True)
        elif self.has_address and self.restart_time < time.time():
            if not config.get_parameter('disable_ping_timeout'):
                print "PingMonitor restarting", self.iface.iface
                self.has_address = False
                self.iface.interface_upper.restart()
            else:
                print "PingMonitor restart was disabled by disable_ping_timeout", self.iface.iface
                self._set_timeout()

    def _has_address_cb(self, iface, old_state, new_state):
        self.is_verified.set(False)
        self.has_address = bool(new_state)
        if new_state:
            self._set_timeout()
        else:
            self.restart_time = 1e1000

    def _set_timeout(self):
        self.restart_time = time.time() + self.ping_timeout
Esempio n. 4
0
class PingMonitor:
    def __init__(self, iface):
        self.iface = iface
        self.ping_timeout = config.get_parameter("ping_timeout", 4)
        self.is_verified = StatePublisher(False)
        self.has_address = False
        iface.ping_tester.update_event.subscribe_repeating(self._update)
        netlink_monitor.get_state_publisher(iface.iface, IFSTATE.ADDR).subscribe(self._has_address_cb, iface)

    def _update(self, status):
        # print "PingMonitor._update"
        if status:
            (bins, latency1, latency2) = status
            # print "PingMonitor", bins, self.restart_time - time.time()
        if status and bins[0]:
            self.restart_time = time.time() + self.ping_timeout
            self.is_verified.set(True)
        elif self.has_address and self.restart_time < time.time():
            if not config.get_parameter("disable_ping_timeout"):
                print "PingMonitor restarting", self.iface.iface
                self.has_address = False
                self.iface.interface_upper.restart()
            else:
                print "PingMonitor restart was disabled by disable_ping_timeout", self.iface.iface
                self._set_timeout()

    def _has_address_cb(self, iface, old_state, new_state):
        self.is_verified.set(False)
        self.has_address = bool(new_state)
        if new_state:
            self._set_timeout()
        else:
            self.restart_time = 1e1000

    def _set_timeout(self):
        self.restart_time = time.time() + self.ping_timeout