return self.remoteRootFS
def isBlacklisted(self, iface):
- return iface in ('lo', 'wifi0', 'wmaster0')
+ return iface in ('lo', 'wifi0', 'wmaster0', 'sys0')
def getInterfaces(self, callback = None):
self.configuredInterfaces = []
def IPaddrFinished(self, result, retval, extra_args):
(iface, callback ) = extra_args
- data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False }
+ data = { 'up': False, 'dhcp': False, 'preup' : False, 'predown' : False, 'dns-nameservers' : False }
globalIPpattern = re_compile("scope global")
ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
netRegexp = '[0-9]{1,2}'
for line in result.splitlines():
split = line.strip().split(' ',2)
- if (split[1][:-1] == iface):
+ if (split[1][:-1] == iface) or (split[1][:-1] == (iface + '@sys0')):
up = self.regExpMatch(upPattern, split[2])
mac = self.regExpMatch(macPattern, self.regExpMatch(macLinePattern, split[2]))
if up is not None:
fp.write(iface["preup"])
if iface["predown"] is not False and not iface.has_key("configStrings"):
fp.write(iface["predown"])
+ if iface["dns-nameservers"] is not False and len(iface["dns-nameservers"])>0:
+ fp.write("%s" % (iface["dns-nameservers"]))
fp.write("\n")
fp.close()
self.configuredNetworkAdapters = self.configuredInterfaces
- self.writeNameserverConfig()
+# self.writeNameserverConfig()
def writeNameserverConfig(self):
fp = file('/etc/resolv.conf', 'w')
if (split[0] in ("pre-down","post-down")):
if self.ifaces[currif].has_key("predown"):
self.ifaces[currif]["predown"] = i
+ if (split[0] == "dns-nameservers"):
+ if self.ifaces[currif].has_key("dns-nameservers"):
+ self.ifaces[currif]["dns-nameservers"] = i
for ifacename, iface in ifaces.items():
if self.ifaces.has_key(ifacename):
name += " " + str(len(self.lan_interfaces)+1)
self.lan_interfaces.append(iface)
return name
+
+ def useWlCommand(self, iface):
+ return iface and os_path.exists("/tmp/bcm/%s" % iface)
def getFriendlyAdapterDescription(self, iface):
if not self.isWirelessInterface(iface):
moduledir = self.getWlanModuleDir(iface)
if moduledir:
name = os_path.basename(os_path.realpath(moduledir))
- if name in ('ath_pci','ath5k'):
+ if name in ('ath_pci', 'ath5k'):
name = 'Atheros'
- elif name in ('rt73','rt73usb','rt3070sta'):
+ elif name in ('rt73','rt73usb','rt3070sta', 'rt5370sta'):
name = 'Ralink'
elif name == 'zd1211b':
name = 'Zydas'
- elif name == 'r871x_usb_drv':
+ elif name in ('r871x_usb_drv', 'rtw_usb_drv'):
name = 'Realtek'
+ elif self.isRalinkModule(iface):
+ name = 'Ralink'
+ elif self.useWlCommand(iface):
+ name = 'BroadCom'
else:
name = _('Unknown')
return name + ' ' + _('wireless network interface')
+ def isRalinkModule(self, iface):
+ import os
+# check vendor ID for lagacy driver
+ vendorID = "148f" # ralink vendor ID
+ idVendorPath = "/sys/class/net/%s/device/idVendor" % iface
+ if os.access(idVendorPath, os.R_OK):
+ if open(idVendorPath, "r").read().strip() == vendorID:
+ return True
+
+# check sys driver path for kernel driver
+ ralinkKmod = "rt2800usb" # ralink kernel driver name
+ driverPath = "/sys/class/net/%s/device/driver/" % iface
+ if os.path.exists(driverPath):
+ driverName = os.path.basename(os_path.realpath(driverPath))
+ if driverName == ralinkKmod:
+ return True
+ return False
+
def getAdapterName(self, iface):
return iface
callback(True,mode)
def checkNetworkState(self,statecallback):
- # www.dream-multimedia-tv.de, www.heise.de, www.google.de
self.NetworkState = 0
- cmd1 = "ping -c 1 82.149.226.170"
- cmd2 = "ping -c 1 193.99.144.85"
- cmd3 = "ping -c 1 209.85.135.103"
self.PingConsole = Console()
- self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,statecallback)
- self.PingConsole.ePopen(cmd2, self.checkNetworkStateFinished,statecallback)
- self.PingConsole.ePopen(cmd3, self.checkNetworkStateFinished,statecallback)
+ for testserver in ("www.heise.de", "www.google.de", "de.yahoo.com"):
+ self.PingConsole.ePopen("ping -c 1 %s" % testserver, self.checkNetworkStateFinished,statecallback)
def checkNetworkStateFinished(self, result, retval,extra_args):
(statecallback) = extra_args
def getWlanModuleDir(self, iface = None):
devicedir = self.sysfsPath(iface) + '/device'
+ if not os_path.exists(devicedir):
+ return None
+
moduledir = devicedir + '/driver/module'
if os_path.isdir(moduledir):
return moduledir
if self.config_ready is not None:
for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKCONFIG_READ):
p(reason=self.config_ready)
-
+
+ def getInterfacesNameserverList(self, iface):
+ result = []
+ nameservers = self.getAdapterAttribute(iface, "dns-nameservers")
+ if nameservers:
+ ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
+ ipPattern = re_compile(ipRegexp)
+ for x in nameservers.split()[1:]:
+ ip = self.regExpMatch(ipPattern, x)
+ if ip:
+ result.append( [ int(n) for n in ip.split('.') ] )
+ return result
+
iNetwork = Network()
def InitNetwork():