summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugeni Dodonov <eugeni@mandriva.org>2009-09-30 15:16:12 +0000
committerEugeni Dodonov <eugeni@mandriva.org>2009-09-30 15:16:12 +0000
commit62528c1b23309732279b7aaa15c44deb192b6963 (patch)
tree7dbd9d6fb2c4b2483e15916397f94ed125036e5d
parent5f7a0f667227acdb911558784b19afdb806ca44e (diff)
downloaddrakx-net-62528c1b23309732279b7aaa15c44deb192b6963.tar
drakx-net-62528c1b23309732279b7aaa15c44deb192b6963.tar.gz
drakx-net-62528c1b23309732279b7aaa15c44deb192b6963.tar.bz2
drakx-net-62528c1b23309732279b7aaa15c44deb192b6963.tar.xz
drakx-net-62528c1b23309732279b7aaa15c44deb192b6963.zip
Prevent installer from creating duplicated network cards (#49156)
-rw-r--r--lib/network/connection/ethernet.pm11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/network/connection/ethernet.pm b/lib/network/connection/ethernet.pm
index a2766a1..878850d 100644
--- a/lib/network/connection/ethernet.pm
+++ b/lib/network/connection/ethernet.pm
@@ -282,6 +282,8 @@ sub write_settings {
}
}
$self->SUPER::write_settings($o_net, $o_modules_conf);
+ # update udev configuration
+ update_udev_net_config();
}
sub get_status_message {
@@ -496,8 +498,8 @@ sub update_iftab() {
sub update_udev_net_config() {
my $lib = arch() =~ /x86_64/ ? "lib64" : "lib";
- my $net_name_helper = "/$lib/udev/net_name_helper";
- my $udev_net_config = "/etc/udev/rules.d/61-net_config.rules";
+ my $net_name_helper = "/lib/udev/write_net_rules";
+ my $udev_net_config = "$::prefix/etc/udev/rules.d/70-persistent-net.rules";
my @old_config = cat_($udev_net_config);
#- skip aliases and vlan interfaces
foreach my $intf (grep { network::tools::is_real_interface($_) } detect_devices::get_lan_interfaces()) {
@@ -506,8 +508,11 @@ sub update_udev_net_config() {
$mac_address =~ /^[0:]+$/ and next;
#- skip already configured addresses
any { !/^\s*#/ && /"$mac_address"/ } @old_config and next;
+ my $type = cat_("/sys/class/net/$intf/type") =~ /^\d+$/;
+ local $ENV{MATCHIFTYPE} = $type if $type;
local $ENV{INTERFACE} = $intf;
- local $ENV{SUBSYSTEM} = 'net';
+ local $ENV{MATCHADDR} = $mac_address;
+ local $ENV{COMMENT} = "Drakx-net rule for $intf ($mac_address)";
run_program::rooted($::prefix, $net_name_helper, '>', '/dev/null', $mac_address);
}
}