From c855efedb09110b41219d5c9fb61bb8753a1aef5 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Tue, 7 May 2013 01:45:51 +0000 Subject: harddrake service: install ethernet/wireless packages when a new device is detected, this shoud help for Broadcom devices --- perl-install/NEWS | 4 +++- perl-install/harddrake/autoconf.pm | 28 +++++++++++++++++++++++++++- perl-install/standalone/service_harddrake | 4 +++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/perl-install/NEWS b/perl-install/NEWS index 50c1efc0f..3e100f460 100644 --- a/perl-install/NEWS +++ b/perl-install/NEWS @@ -1,7 +1,9 @@ -- harddrake: +- harddrake service: o do not disable bluetooth service if adapter disappears (for example if disabled by Fn keys) systemd will automatically disable the service if needed + o install ethernet/wireless packages when a new device is detected, + this shoud help for Broadcom devices Version 15.47 - 30 April 2013 diff --git a/perl-install/harddrake/autoconf.pm b/perl-install/harddrake/autoconf.pm index a82446db6..de54451ad 100644 --- a/perl-install/harddrake/autoconf.pm +++ b/perl-install/harddrake/autoconf.pm @@ -24,10 +24,36 @@ sub xconf { modules::load_category($modules_conf, 'various/agpgart'); } +sub setup_ethernet_device { + my ($in, $device) = @_; + + require network::connection; + require network::connection::ethernet; + require network::connection::wireless; + my @connection_types = qw(network::connection::ethernet network::connection::wireless); + my @all_connections = map { $_->get_connections(automatic_only => 1) } @connection_types; + my $interface = network::connection::ethernet::device_to_interface($device) + or return; + my $connection = find { $_->get_interface eq $interface } @all_connections + or return; + + require network::connection_manager; + my $net = {}; + network::network::read_net_conf($net); + my $cmanager = network::connection_manager->new($in, $net, undef, undef); + $cmanager->set_connection($connection); + + # this will installed required packages + $cmanager->setup_connection; +} + sub network_conf { - my ($modules_conf) = @_; + my ($modules_conf, $in, $added) = @_; $modules_conf->remove_alias_regexp('^(wlan|eth)[0-9]*$'); modules::load_category($modules_conf, 'network/main|gigabit|usb|wireless|firewire|pcmcia'); + + setup_ethernet_device($in, $_) foreach @{$added || {}}; + require network::connection::ethernet; network::connection::ethernet::configure_eth_aliases($modules_conf); require network::rfswitch; diff --git a/perl-install/standalone/service_harddrake b/perl-install/standalone/service_harddrake index fd86fb4f2..c661468f3 100755 --- a/perl-install/standalone/service_harddrake +++ b/perl-install/standalone/service_harddrake @@ -320,7 +320,9 @@ foreach my $hw_class (@harddrake::data::tree) { harddrake::sound::configure_sound_slots($modules_conf); next; } elsif ($Ident eq "ETHERNET") { - harddrake::autoconf::network_conf($modules_conf); + require interactive; + $in ||= interactive->vnew; + harddrake::autoconf::network_conf($modules_conf, $in, [ @ID{@added} ]); next; } elsif (member($Ident, qw(ATA_STORAGE CARD_READER RAID_STORAGE SATA_STORAGE SCSI_CONTROLLER))) { # set scsi_hostadapter in modprobe.conf: -- cgit v1.2.1