FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu User

 
 
LinkBack Thread Tools
 
Old 12-05-2007, 10:24 PM
Bill Nottingham
 
Default Use HAL to probe for available network devices.

Description support is sort of tacked on, but should work for most
device classes.
---
network.py | 69 +++++++++++++++++------------------------------------------
1 files changed, 20 insertions(+), 49 deletions(-)

diff --git a/network.py b/network.py
index 3e16214..36c2168 100644
--- a/network.py
+++ b/network.py
@@ -256,66 +256,37 @@ class Network:
if not oneactive:
self.netdevices[self.firstnetdevice].set(("onboot", "yes"))

- # assign description to each device based on kudzu information
- probedevs = kudzu.probe(kudzu.CLASS_NETWORK, kudzu.BUS_UNSPEC, kudzu.PROBE_LOADED)
- for netdev in probedevs:
- device = netdev.device
- if device in self.netdevices.keys():
- desc = netdev.desc
- if desc is not None and len(desc) > 0:
- self.netdevices[device].set(("desc", desc))
-
- # hwaddr for qeth doesn't make sense (#135023)
- if netdev.driver == "qeth":
- continue
- # add hwaddr
- hwaddr = isys.getMacAddress(device)
- if hwaddr and hwaddr != "00:00:00:00:00:00" and hwaddr != "ff:ff:ff:ff:ff:ff":
- self.netdevices[device].set(("hwaddr", hwaddr))
-
def getDevice(self, device):
return self.netdevices[device]

def getFirstDeviceName(self):
return self.firstnetdevice

- def _sysfsDeviceIsUsable(self, dev):
- if os.path.exists("/sys/class/net/%s/bridge" % dev):
- return False
- try:
- f = open("/sys/class/net/%s/type" % dev)
- lines = f.readlines()
- f.close()
-
- return lines[0].startswith("1")
- except:
- return False
-
def available(self):
+ import dbus
+
+ bus = dbus.SystemBus()
+
+ halobj = bus.get_object("org.freedesktop.Hal","/org/freedesktop/Hal/Manager")
+ hal = dbus.Interface(halobj, "org.freedesktop.Hal.Manager")
+
+ for device in halobj.FindDeviceByCapability("net"):
+ haldev = dbus.Interface(bus.get_object("org.freedesktop.Hal ", device), 'org.freedesktop.Hal.Device')
+ dev = haldev.GetProperty('net.interface')
+ if haldev.GetProperty('net.arp_proto_hw_id') == 1:
+ self.netdevices[dev] = NetworkDevice(dev);
+ if self.firstnetdevice is None:
+ self.firstnetdevice = dev
+ self.netdevices[dev].set(('hwaddr',haldev.GetProperty('net.address')))
+ parent = haldev.GetProperty('net.physical_device')
+ pdev = dbus.Interface(bus.get_object("org.freedesktop.Hal ", parent), 'org.freedesktop.Hal.Device')
+ desc = '%s %s' % (pdev.GetProperty('info.vendor'), pdev.GetProperty('info.product'))
+ self.netdevices[dev].set(('desc',desc))
+
ksdevice = None
if flags.cmdline.has_key("ksdevice"):
ksdevice = flags.cmdline["ksdevice"]

- f = open("/proc/net/dev")
- lines = f.readlines()
- f.close()
- # skip first two lines, they are header
- lines = lines[2:]
- for line in lines:
- dev = string.strip(line[0:6])
- if dev != "lo" and dev[0:3] != "sit" and not self.netdevices.has_key(dev) and self._sysfsDeviceIsUsable(dev):
- if self.firstnetdevice is None:
- self.firstnetdevice = dev
-
- self.netdevices[dev] = NetworkDevice(dev)
-
- try:
- hwaddr = isys.getMacAddress(dev)
- if rhpl.getArch() != "s390" and hwaddr and hwaddr != "00:00:00:00:00:00" and hwaddr != "ff:ff:ff:ff:ff:ff":
- self.netdevices[dev].set(("hwaddr", hwaddr))
- except Exception, e:
- log.error("exception getting mac addr: %s" %(e,))
-
if ksdevice and self.netdevices.has_key(ksdevice):
self.firstnetdevice = ksdevice

--
1.5.3.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 04:30 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org