/[smeserver]/rpms/e-smith-lib/sme9/e-smith-lib-2.4.0-dont_use_kudzu_to_probe_nics.patch
ViewVC logotype

Contents of /rpms/e-smith-lib/sme9/e-smith-lib-2.4.0-dont_use_kudzu_to_probe_nics.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Thu Jan 31 17:33:44 2013 UTC (11 years, 3 months ago) by vip-ire
Branch: MAIN
CVS Tags: e-smith-lib-2_4_0-18_el6_sme, e-smith-lib-2_4_0-9_el6_sme, e-smith-lib-2_4_0-11_el6_sme, e-smith-lib-2_4_0-12_el6_sme, e-smith-lib-2_4_0-7_el6_sme, e-smith-lib-2_4_0-4_el6_sme, e-smith-lib-2_4_0-6_el6_sme, e-smith-lib-2_4_0-3_el6_sme, e-smith-lib-2_4_0-17_el6_sme, e-smith-lib-2_4_0-2_el6_sme, e-smith-lib-2_4_0-15_el6_sme, e-smith-lib-2_4_0-16_el6_sme, e-smith-lib-2_4_0-13_el6_sme, e-smith-lib-2_4_0-14_el6_sme, e-smith-lib-2_4_0-8_el6_sme, e-smith-lib-2_4_0-5_el6_sme, e-smith-lib-2_4_0-10_el6_sme, HEAD
* Thu Jan 31 2013 Daniel Berteaud <daniel@firewall-services.com> 2.4.0-2.sme
- Stop using kudzu for NIC detection [SME: 3596]

1 diff -Nur e-smith-lib-2.4.0/root/usr/share/perl5/vendor_perl/esmith/ethernet.pm e-smith-lib-2.4.0-nokudzu/root/usr/share/perl5/vendor_perl/esmith/ethernet.pm
2 --- e-smith-lib-2.4.0/root/usr/share/perl5/vendor_perl/esmith/ethernet.pm 2013-01-25 17:09:11.000000000 +0100
3 +++ e-smith-lib-2.4.0-nokudzu/root/usr/share/perl5/vendor_perl/esmith/ethernet.pm 2013-01-31 18:22:05.610588921 +0100
4 @@ -9,6 +9,7 @@
5 #----------------------------------------------------------------------
6
7 use strict;
8 +use File::Basename;
9
10 =head1 NAME
11
12 @@ -37,36 +38,52 @@
13
14 sub probeAdapters ()
15 {
16 - my @devs;
17 - my $r;
18 - local $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin";
19 - unless (open(HWC, "/usr/sbin/kudzu --probe --class network|"))
20 - {
21 - warn "Could not run kudzu probe: $!";
22 - return "";
23 - }
24 - while (<HWC>)
25 - {
26 - if (/^-/)
27 - {
28 - $r = {};
29 - push @devs, $r;
30 - }
31 - if (/(.+): (.+)/)
32 - {
33 - $r->{$1} = $2;
34 - }
35 - }
36 - close HWC;
37 -
38 - my @nics = grep { $_->{device} && $_->{device} =~ /^eth/ } @devs;
39 - my $adapters = '';
40 + opendir(my $dh, "/sys/class/net") or die "Couldn't open /sys/class/net: $!";
41 + my @nics = grep { $_ !~ m/^\./ } readdir($dh);
42 + closedir($dh);
43 + my $adapters = '';
44 my $index = 1;
45 - foreach my $nic (@nics)
46 - {
47 - $adapters .=
48 - "EthernetDriver" . $index++ . "\t" . $nic->{driver} . "\t"
49 - . $nic->{'network.hwaddr'} . "\t" . $nic->{desc} . "\n";
50 + foreach my $nic (@nics){
51 + next if (
52 + # skip loopback
53 + $nic eq 'lo' ||
54 + # skip non links
55 + !-l "/sys/class/net/$nic" ||
56 + # skip wireless nics
57 + -d "/sys/class/net/$nic/wireless" ||
58 + -l "/sys/class/net/$nic/phy80211" ||
59 + # skip bridges
60 + -d "/sys/class/net/$nic/bridge" ||
61 + # skip vlans
62 + -f "/proc/net/vlan/$nic" ||
63 + # skip bonds
64 + -d "/sys/class/net/$nic/bonding" ||
65 + # skip tun/tap
66 + -f "/sys/class/net/$nic/tun_flags" ||
67 + # skip dummy
68 + -d "/sys/devices/virtual/net/$nic"
69 + );
70 + # Now we should be left only wth ethernet adapters
71 + open HW, "/sys/class/net/$nic/address";
72 + my $mac = join("", <HW>);
73 + chomp($mac);
74 + close HW;
75 + my $driver = basename (readlink "/sys/class/net/$nic/device/driver");
76 + my $bus = basename (readlink "/sys/class/net/$nic/device/subsystem");
77 + my $desc = $nic;
78 + if ($bus eq 'pci'){
79 + my $dev = basename (readlink "/sys/class/net/$nic/device");
80 + $desc = `/sbin/lspci -s $dev`;
81 + # Extract only description
82 + $desc =~ m/^.*:.*:\s+(.*)\s*/;
83 + $desc = $1;
84 + }
85 + elsif ($bus eq 'virtio'){
86 + $desc = 'Virtio Network Device';
87 + }
88 + # TODO: we should also try to get the description of USB devices
89 + $adapters .= "EthernetDriver" . $index++ . "\t" . $driver . "\t" .
90 + $mac . "\t" . "\"$desc\"" . "\n";
91 }
92 return $adapters;
93 }

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed