summaryrefslogtreecommitdiffstats
path: root/perl-install/network/ethernet.pm
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.org>2004-08-20 04:58:22 +0000
committerOlivier Blin <oblin@mandriva.org>2004-08-20 04:58:22 +0000
commitb01562e1827926be70ed81cd023df7a405baf997 (patch)
tree5e61c47d21a617755de7fc47a4c840af19ed39a9 /perl-install/network/ethernet.pm
parent61741c26ce220cbb435b526ea8fd16ff05588c43 (diff)
downloaddrakx-b01562e1827926be70ed81cd023df7a405baf997.tar
drakx-b01562e1827926be70ed81cd023df7a405baf997.tar.gz
drakx-b01562e1827926be70ed81cd023df7a405baf997.tar.bz2
drakx-b01562e1827926be70ed81cd023df7a405baf997.tar.xz
drakx-b01562e1827926be70ed81cd023df7a405baf997.zip
update mac address in network::ethernet::get_eth_cards to be sure iftab is always up-to-date
Diffstat (limited to 'perl-install/network/ethernet.pm')
-rw-r--r--perl-install/network/ethernet.pm20
1 files changed, 20 insertions, 0 deletions
diff --git a/perl-install/network/ethernet.pm b/perl-install/network/ethernet.pm
index c533d4ade..2659950ef 100644
--- a/perl-install/network/ethernet.pm
+++ b/perl-install/network/ethernet.pm
@@ -82,13 +82,33 @@ sub get_eth_cards_names {
my ($modules_conf, @all_cards) = @_;
foreach my $card (@all_cards) {
+ #- fix modules aliases
$modules_conf->remove_alias($card->[1]);
$modules_conf->set_alias($card->[0], $card->[1]);
+
+ #- update iftab
+ update_eth_card_iftab($card->[0]);
}
{ map { $_->[0] => join(': ', $_->[0], $_->[2]) } @all_cards };
}
+#- returns (link_type, mac_address)
+sub get_eth_card_mac_address {
+ my ($intf) = @_;
+ `LC_ALL= LANG= $::prefix/sbin/ip -o link show $intf 2>/dev/null` =~ m|.*link/(\S+)\s([0-9a-z:]+)\s|;
+}
+
+#- write interface MAC address (if any) in iftab
+sub update_eth_card_iftab {
+ my ($intf) = @_;
+ my ($link_type, $mac_address) = get_eth_card_mac_address($intf) or next;
+ my $descriptor = ${{ ether => 'mac', ieee1394 => 'mac_ieee1394' }}{$link_type} or next;
+ substInFile {
+ s/^$intf\s+.*\n//;
+ $_ .= qq($intf\t$descriptor $mac_address\n) if eof
+ } "$::prefix/etc/iftab";
+}
# automatic net aliases configuration
sub configure_eth_aliases {