| Index: server/site_bsd_router.py
|
| diff --git a/server/site_bsd_router.py b/server/site_bsd_router.py
|
| index f7679a84598ed0e003354eae4d7c9434afbdf130..8ba9a449cf330bae04181a6f6c9a1f6784488335 100644
|
| --- a/server/site_bsd_router.py
|
| +++ b/server/site_bsd_router.py
|
| @@ -4,6 +4,19 @@
|
|
|
| import logging, re
|
|
|
| +def isBSDRouter(router):
|
| + router_uname = router.run('uname').stdout
|
| + return re.search('BSD', router_uname)
|
| +
|
| +def find_ifnet(host, pattern):
|
| + list = host.run("ifconfig -l").stdout
|
| + for ifnet in list.split():
|
| + status = host.run("ifconfig %s" % ifnet).stdout
|
| + m = re.search(pattern, status)
|
| + if m:
|
| + return ifnet
|
| + return None
|
| +
|
| class NotImplemented(Exception):
|
| def __init__(self, what):
|
| self.what = what
|
| @@ -26,10 +39,20 @@ class BSDRouter(object):
|
|
|
| def __init__(self, host, params, defssid):
|
| self.router = host
|
| - # TODO(sleffler) default to 1st available wireless nic
|
| - self.phydev = params['phydev']
|
| - # TODO(sleffler) default to 1st available wired nic
|
| - self.wiredif = params['wiredev']
|
| + # default to 1st available wireless nic
|
| + if "phydev" not in params:
|
| + self.phydev = find_ifnet(host, ".*media:.IEEE.802.11.*")
|
| + if self.phydev is None:
|
| + raise Exception("No wireless NIC found")
|
| + else:
|
| + self.phydev = params['phydev']
|
| + # default to 1st available wired nic
|
| + if "wiredev" not in params:
|
| + self.wiredif = find_ifnet(host, ".*media:.Ethernet.*")
|
| + if self.wiredif is None:
|
| + raise Exception("No wired NIC found")
|
| + else:
|
| + self.wiredif = params['wiredev']
|
| self.defssid = defssid;
|
| self.wlanif = None
|
| self.bridgeif = None
|
| @@ -49,7 +72,6 @@ class BSDRouter(object):
|
| ignore_status=True)
|
| self.router.run("killall hostapd >/dev/null 2>&1", ignore_status=True)
|
|
|
| -
|
| def create(self, params):
|
| """ Create a wifi device of the specified type """
|
|
|
|
|