summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
}
}