def __init__ (self, site, request) : self.site = site self.request = request if 'interfaces' in self.request or 'ips' in self.request : st = Status (site = site) conn = OLSR_Connections (site = site) route = OLSR_Routes (site = site) self.version = st.version assert len (st.wlans) <= 1 interfaces = {} ips = {} count = 0 for gw, ifname in route.iface_by_gw.iteritems () : ip, lq, nlq, etx = conn.neighbors [gw] i4 = Inet4 (ip, None, None, iface = ifname) ips [i4] = 1 is_wlan = True if lq == nlq == etx == 1.0 : is_wlan = False if ifname in interfaces : iface = interfaces [ifname] if not iface.is_wlan and is_wlan : iface.is_wlan = True iface.wlan_info = st.wlans [0] else : iface = Interface (count, ifname, None) iface.is_wlan = is_wlan if is_wlan : iface.wlan_info = st.wlans [0] count += 1 interfaces [ifname] = iface if i4 not in iface.inet4 : iface.append_inet4 (i4) wl_if = None for iface in interfaces.itervalues () : if iface.is_wlan : if wl_if : m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name) raise ValueError (m) wl_if = iface # check own ip n = 'unknown' i4 = Inet4 (self.request ['ip'], None, None, iface = n) if i4 not in ips : assert n not in interfaces iface = interfaces [n] = Interface (count, n, None) iface.append_inet4 (i4) iface.is_wlan = False if not wl_if and st.wlans : iface.is_wlan = True iface.wlan_info = st.wlans [0] ips [i4] = True self.request ['ips'] = ips self.request ['interfaces'] = interfaces self.request ['version'] = st.version
def __init__(self, site, request): self.site = site self.request = request if 'interfaces' in self.request or 'ips' in self.request: st = Status(site=site) conn = OLSR_Connections(site=site) route = OLSR_Routes(site=site) self.version = st.version assert len(st.wlans) <= 1 interfaces = {} ips = {} count = 0 for gw, ifname in route.iface_by_gw.iteritems(): ip, lq, nlq, etx = conn.neighbors[gw] i4 = Inet4(ip, None, None, iface=ifname) ips[i4] = 1 is_wlan = True if lq == nlq == etx == 1.0: is_wlan = False if ifname in interfaces: iface = interfaces[ifname] if not iface.is_wlan and is_wlan: iface.is_wlan = True iface.wlan_info = st.wlans[0] else: iface = Interface(count, ifname, None) iface.is_wlan = is_wlan if is_wlan: iface.wlan_info = st.wlans[0] count += 1 interfaces[ifname] = iface if i4 not in iface.inet4: iface.append_inet4(i4) wl_if = None for iface in interfaces.itervalues(): if iface.is_wlan: if wl_if: m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name) raise ValueError(m) wl_if = iface # check own ip n = 'unknown' i4 = Inet4(self.request['ip'], None, None, iface=n) if i4 not in ips: assert n not in interfaces iface = interfaces[n] = Interface(count, n, None) iface.append_inet4(i4) iface.is_wlan = False if not wl_if and st.wlans: iface.is_wlan = True iface.wlan_info = st.wlans[0] ips[i4] = True self.request['ips'] = ips self.request['interfaces'] = interfaces self.request['version'] = st.version
def parse (self) : root = self.tree.getroot () self.if_by_name = {} self.ips = {} for div in root.findall (".//%s" % tag ("div")) : self.try_get_version (div) if div.get ('id') == 'maincontent' and not self.if_by_name : tbl = div.find (".//%s" % tag ("table")) for n, tr in enumerate (tbl) : if tr [0].tag == tag ('th') : assert tr [0].text in ('Interface', 'Schnittstelle') \ , tr [0].text continue name, status, mtu, wlan, ip, mask, bcast = \ (x.text for x in tr) if name in self.if_by_name : iface = self.if_by_name [name] else : iface = Interface (n, name, mtu) iface.is_wlan = self.yesno.get (wlan, False) if status == 'DOWN' : continue # append IP address to interface if there is one if ip is not None : if ':' in ip : i6 = Inet6 (ip, mask, bcast, iface = name) iface.append_inet6 (i6) else : i4 = Inet4 (ip, mask, bcast, iface = name) iface.append_inet4 (i4) if not unroutable (i4.ip) : self.if_by_name [name] = iface self.ips [i4] = True self.set_version (root) if not self.if_by_name : raise ValueError, "No interface config found" bfw = Backfire_WLAN_Config (site = self.site) for d in bfw.wlans : if d.name in self.if_by_name : iface = self.if_by_name [d.name] iface.wlan_info = d