###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# Copyright (C) 2011 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
if [ `cat /sys/class/net/$card/type` == "1" ]; then
hwaddr=`cat /sys/class/net/$card/address`
- #Check if mac is valid (not 00:00... or FF:FF...)
- if [ ! "$hwaddr" == "00:00:00:00:00:00" ];then
- if [ ! "$hwaddr" == "ff:ff:ff:ff:ff:ff" ];then
+ #Check that is no VLAN if
+ if [[ ! "$card" =~ "[.]" ]]; then
- driver=`grep PHYSDEVDRIVER= /sys/class/net/$card/uevent | cut -d"=" -f2`
- type=`grep PHYSDEVBUS= /sys/class/net/$card/uevent | cut -d"=" -f2`
- description=`echo $type: $driver`
+ #check if this not a bridge
+ if [ ! -e /sys/class/net/$card/brforward ]; then
- #Get more details for pci and usb devices
- if [ "$type" == "pci" ]; then
- slotname=`grep PCI_SLOT_NAME= /sys/class/net/$card/device/uevent | cut -d"=" -f2`
- name=`lspci -s $slotname | cut -d':' -f3`
- description=`echo $type:$name`
- fi
- if [ "$type" == "usb" ]; then
- bus=`grep DEVICE= /sys/class/net/$card/device/uevent | cut -d"/" -f5`
- dev=`grep DEVICE= /sys/class/net/$card/device/uevent | cut -d"/" -f6`
- #work around the base8 convert
- let bus=`echo 1$bus`-1000
- let dev=`echo 1$dev`-1000
- name=`lsusb -s $bus:$dev | cut -d':' -f3`
- description=`echo $type: $name`
- fi
+ #Check if mac is valid (not 00:00... or FF:FF...)
+ if [ ! "$hwaddr" == "00:00:00:00:00:00" ];then
+ if [ ! "$hwaddr" == "ff:ff:ff:ff:ff:ff" ];then
- echo desc: \"$description\" >>/var/ipfire/ethernet/scanned_nics
- echo driver: $driver >>/var/ipfire/ethernet/scanned_nics
- echo network.hwaddr: $hwaddr >>/var/ipfire/ethernet/scanned_nics
- fi
+ driver=`grep DRIVER= /sys/class/net/$card/device/uevent | cut -d"=" -f2`
+ type=`grep MODALIAS= /sys/class/net/$card/device/uevent | cut -d"=" -f2 | cut -d":" -f1`
+
+ #Default if not available in /sys/class/net
+ if [ "a$type" == "a" ]; then
+ type="???"
+ fi
+ if [ "a$driver" == "a" ]; then
+ driver="Unknown Network Interface ($card)"
+ fi
+ description=`echo $type: $driver`
+
+ #Get more details for pci and usb devices
+ if [ "$type" == "pci" ]; then
+ slotname=`grep PCI_SLOT_NAME= /sys/class/net/$card/device/uevent | cut -d"=" -f2`
+ name=`lspci -s $slotname | cut -d':' -f3 | cut -c 2-`
+ description=`echo $type: $name`
+ fi
+ if [ "$type" == "usb" ]; then
+ bus=`grep DEVICE= /sys/class/net/$card/device/uevent | cut -d"/" -f5`
+ dev=`grep DEVICE= /sys/class/net/$card/device/uevent | cut -d"/" -f6`
+ #work around the base8 convert
+ let bus=`echo 1$bus`-1000
+ let dev=`echo 1$dev`-1000
+ name=`lsusb -s $bus:$dev | cut -d':' -f3 | cut -c 6-`
+ description=`echo $type: $name`
+ fi
+
+ echo desc: \"$description\" >>/var/ipfire/ethernet/scanned_nics
+ echo driver: $driver >>/var/ipfire/ethernet/scanned_nics
+ echo network.hwaddr: $hwaddr >>/var/ipfire/ethernet/scanned_nics
+ fi
+ fi
+ fi
fi
fi
done