From 7e8fa9773839843c9d8def81ec2ef1315115825a Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Wed, 21 Jul 2004 00:16:04 +0000 Subject: - %modules::conf is no more a global, so many functions need passing $modules_conf - $modules_conf is a class choosing modules.conf or modprobe.conf (esp. useful after install) (but not working yet!) - modules::load() doesn't use $modules_conf, use modules::load_and_configure() - modules::load() doesn't allow options, use either modules::load_raw() or modules::load_and_configure() - some functions used to want an array ref for modules options and some a string, now every functions use a string - many functions (like modules::get_alias()) are now methods on $modules_conf - some functions in mouse.pm needed a $in where a $do_pkgs is enough - some perl_checker compliance - small fixes --- perl-install/network/adsl.pm | 6 ++--- perl-install/network/ethernet.pm | 27 ++++++++++---------- perl-install/network/isdn.pm | 5 ++-- perl-install/network/netconnect.pm | 50 ++++++++++++++++++-------------------- perl-install/network/network.pm | 6 ++--- perl-install/network/shorewall.pm | 5 ++-- perl-install/network/tools.pm | 4 +-- 7 files changed, 52 insertions(+), 51 deletions(-) (limited to 'perl-install/network') diff --git a/perl-install/network/adsl.pm b/perl-install/network/adsl.pm index 2089dd229..f2b50186b 100644 --- a/perl-install/network/adsl.pm +++ b/perl-install/network/adsl.pm @@ -96,7 +96,7 @@ sub adsl_detect() { } sub adsl_conf_backend { - my ($in, $adsl, $netc, $adsl_device, $adsl_type, $o_netcnx) = @_; + my ($in, $modules_conf, $adsl, $netc, $adsl_device, $adsl_type, $o_netcnx) = @_; # FIXME: should not be needed: defined $o_netcnx and $netc->{adsltype} = $o_netcnx->{type}; $netc->{adsltype} ||= "adsl_$adsl_type"; @@ -307,8 +307,8 @@ TYPE=$kind # set aliases: if (exists $modems{$adsl_device}{aliases}) { - modules::set_alias($_->[0], $_->[1]) foreach @{$modems{$adsl_device}{aliases}}; - $::isStandalone and modules::write_conf(); + $modules_conf->set_alias($_->[0], $_->[1]) foreach @{$modems{$adsl_device}{aliases}}; + $::isStandalone and $modules_conf->write; } $netc->{NET_INTERFACE} = 'ppp0'; diff --git a/perl-install/network/ethernet.pm b/perl-install/network/ethernet.pm index 6f9cc8c85..a93d66c77 100644 --- a/perl-install/network/ethernet.pm +++ b/perl-install/network/ethernet.pm @@ -14,7 +14,7 @@ use vars qw(@ISA @EXPORT); @EXPORT = qw(conf_network_card_backend); sub write_ether_conf { - my ($in, $netcnx, $netc, $intf) = @_; + my ($in, $modules_conf, $netcnx, $netc, $intf) = @_; configureNetwork2($in, $::prefix, $netc, $intf); $netc->{NETWORKING} = "yes"; if ($netc->{GATEWAY} || any { $_->{BOOTPROTO} =~ /dhcp/ } values %$intf) { @@ -30,7 +30,7 @@ qq( /sbin/ifup lo ), $netcnx->{type}); } - $::isStandalone and modules::write_conf(); + $::isStandalone and $modules_conf->write; 1; } @@ -46,16 +46,16 @@ sub mapIntfToDevice { # return list of [ intf_name, module, device_description ] tuples such as: # [ "eth0", "3c59x", "3Com Corporation|3c905C-TX [Fast Etherlink]" ] -sub get_eth_cards() { +sub get_eth_cards { + my ($modules_conf) = @_; my @all_cards = detect_devices::getNet(); my @devs = detect_devices::pcmcia_probe(); - modules::mergein_conf(); my $saved_driver; return map { my $interface = $_; my $description; - my $a = c::getNetDriver($interface) || modules::get_alias($interface); + my $a = c::getNetDriver($interface) || $modules_conf->get_alias($interface); if (my $b = find { $_->{device} eq $interface } @devs) { # PCMCIA case $a = $b->{driver}; $description = $b->{description}; @@ -64,18 +64,18 @@ sub get_eth_cards() { } if (!$description) { my $drv = readlink("/sys/class/net/$interface/driver"); - if ($drv and $drv =~ s!.*/!!) { + if ($drv && $drv =~ s!.*/!!) { $a = $drv; my %l; my %sysfs_fields = (id => "device", subid => "subsystem_device", vendor => "vendor", subvendor => "subsystem_vendor"); $l{$_} = hex(chomp_(cat_("/sys/class/net/$interface/device/" . $sysfs_fields{$_}))) foreach keys %sysfs_fields; my @cards = grep { my $dev = $_; every { $dev->{$_} eq $l{$_} } keys %l } detect_devices::probeall(); - $description = $cards[0]{description} if $#cards == 0; + $description = $cards[0]{description} if @cards == 1; } } if (!$description) { my @cards = grep { $_->{driver} eq ($a || $saved_driver) } detect_devices::probeall(); - $description = $cards[0]->{description} if $#cards == 0; + $description = $cards[0]{description} if @cards == 1; } $a and $saved_driver = $a; # handle multiple cards managed by the same driver [ $interface, $saved_driver, if_($description, $description) ] @@ -83,11 +83,11 @@ sub get_eth_cards() { } sub get_eth_cards_names { - my (@all_cards) = @_; + my ($modules_conf, @all_cards) = @_; foreach my $card (@all_cards) { - modules::remove_alias($card->[1]); - modules::set_alias($card->[0], $card->[1]); + $modules_conf->remove_alias($card->[1]); + $modules_conf->set_alias($card->[0], $card->[1]); } { map { $_->[0] => join(': ', $_->[0], $_->[2]) } @all_cards }; @@ -131,10 +131,11 @@ sub conf_network_card_backend { } # automatic net aliases configuration -sub configure_eth_aliases() { +sub configure_eth_aliases { + my ($modules_conf) = @_; foreach (detect_devices::getNet()) { my $driver = c::getNetDriver($_) or next; - modules::set_alias($_, $driver); + $modules_conf->set_alias($_, $driver); } } diff --git a/perl-install/network/isdn.pm b/perl-install/network/isdn.pm index e4f0ac49a..e4eea89d8 100644 --- a/perl-install/network/isdn.pm +++ b/perl-install/network/isdn.pm @@ -120,7 +120,8 @@ sub get_info_providers_backend { sub read_providers_backend() { map { /(.*?)=>/ } catMaybeCompressed($file) } -sub detect_backend() { +sub detect_backend { + my ($modules_conf) = @_; my @isdn; require detect_devices; each_index { @@ -132,7 +133,7 @@ sub detect_backend() { $isdn->{description} =~ s/.*\|//; # $c->{options} !~ /id=HiSax/ && $isdn->{driver} eq "hisax" and $c->{options} .= " id=HiSax"; if ($c->{options} !~ /protocol=/ && $isdn->{protocol} =~ /\d/) { - modules::set_options($c->{driver}, $c->{options} . " protocol=" . $isdn->{protocol}); + $modules_conf->set_options($c->{driver}, $c->{options} . " protocol=" . $isdn->{protocol}); } $c->{options} =~ /protocol=(\d)/ and $isdn->{protocol} = $1; push @isdn, $isdn; diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm index fc0b4aa19..7dde76ea3 100644 --- a/perl-install/network/netconnect.pm +++ b/perl-install/network/netconnect.pm @@ -13,23 +13,23 @@ use network::tools; use MDK::Common::Globals "network", qw($in); sub detect { - my ($auto_detect, $o_class) = @_; + my ($modules_conf, $auto_detect, $o_class) = @_; my %l = ( isdn => sub { require network::isdn; - $auto_detect->{isdn} = network::isdn::detect_backend(); + $auto_detect->{isdn} = network::isdn::detect_backend($modules_conf); }, lan => sub { # ethernet - modules::load_category('network/main|gigabit|usb'); + modules::load_category($modules_conf, 'network/main|gigabit|usb'); require network::ethernet; - $auto_detect->{lan} = { map { $_->[0] => $_->[1] } network::ethernet::get_eth_cards() }; + $auto_detect->{lan} = { map { $_->[0] => $_->[1] } network::ethernet::get_eth_cards($modules_conf) }; }, adsl => sub { require network::adsl; $auto_detect->{adsl} = network::adsl::adsl_detect(); }, modem => sub { - $auto_detect->{modem} = { map { $_->{description} || "$_->{MANUFACTURER}|$_->{DESCRIPTION} ($_->{device})" => $_ } detect_devices::getModem() }; + $auto_detect->{modem} = { map { $_->{description} || "$_->{MANUFACTURER}|$_->{DESCRIPTION} ($_->{device})" => $_ } detect_devices::getModem($modules_conf) }; }, ); $l{$_}->() foreach $o_class || keys %l; @@ -74,7 +74,7 @@ sub get_subwizard { # configuring all network devices sub real_main { - my ($_prefix, $netcnx, $in, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_; + my ($_prefix, $netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_; my $netc = $o_netc ||= {}; my $mouse = $o_mouse ||= {}; my $intf = $o_intf ||= {}; @@ -120,15 +120,13 @@ sub real_main { read_net_conf($netcnx, $netc, $intf); - modules::mergein_conf(); - $netc->{autodetect} = {}; my $lan_detect = sub { - detect($netc->{autodetect}, 'lan'); - modules::interactive::load_category($in, 'network/main|gigabit|pcmcia|usb|wireless', !$::expert, 0); - @all_cards = network::ethernet::get_eth_cards(); - %eth_intf = network::ethernet::get_eth_cards_names(@all_cards); + detect($modules_conf, $netc->{autodetect}, 'lan'); + modules::interactive::load_category($in, $modules_conf, 'network/main|gigabit|pcmcia|usb|wireless', !$::expert, 0); + @all_cards = network::ethernet::get_eth_cards($modules_conf); + %eth_intf = network::ethernet::get_eth_cards_names($modules_conf, @all_cards); require list_modules; %eth_intf = map { $_->[0] => join(': ', $_->[0], $_->[2]) } grep { to_bool($is_wireless) == c::isNetDeviceWirelessAware($_->[0]) } @all_cards; @@ -332,7 +330,7 @@ sub real_main { isdn => { pre=> sub { - detect($netc->{autodetect}, 'isdn'); + detect($modules_conf, $netc->{autodetect}, 'isdn'); %isdn_cards = map { $_->{description} => $_ } @{$netc->{autodetect}{isdn}}; }, name => N("Select the network interface to configure:"), @@ -347,7 +345,7 @@ sub real_main { if ($isdn_name eq $my_isdn) { return "isdn_ask"; } elsif ($isdn_name eq N("External ISDN modem")) { - detect($netc->{autodetect}, 'modem'); + detect($modules_conf, $netc->{autodetect}, 'modem'); $netc->{isdntype} = 'isdn_external'; $netcnx->{isdn_external}{device} = network::modem::first_modem($netc); network::isdn::read_config($netcnx->{isdn_external}); @@ -463,7 +461,7 @@ Take a look at http://www.linmodems.org"), { pre => sub { require network::modem; - detect($netc->{autodetect}, 'modem'); + detect($modules_conf, $netc->{autodetect}, 'modem'); }, name => N("Select the modem to configure:"), data => sub { @@ -646,7 +644,7 @@ killall pppd pre => sub { get_subwizard($wiz, 'adsl'); $lan_detect->(); - detect($netc->{autodetect}, 'adsl'); + detect($modules_conf, $netc->{autodetect}, 'adsl'); @adsl_devices = keys %eth_intf; foreach my $modem (keys %adsl_devices) { push @adsl_devices, $modem if $netc->{autodetect}{adsl}{$modem}; @@ -813,7 +811,7 @@ If you don't know, choose 'use pppoe'"), }, post => sub { $netc->{internet_cnx_choice} = 'adsl'; - network::adsl::adsl_conf_backend($in, $netcnx, $netc, $ntf_name, $adsl_type, $netcnx); #FIXME + network::adsl::adsl_conf_backend($in, $modules_conf, $netcnx, $netc, $ntf_name, $adsl_type, $netcnx); #FIXME $config->{adsl} = { kind => $ntf_name, protocol => $adsl_type }; $handle_multiple_cnx->(); }, @@ -840,7 +838,7 @@ You can find a driver on http://eciadsl.flashtux.org/"), post => sub { $ethntf = $intf->{$ntf_name} ||= { DEVICE => $ntf_name }; if ($ntf_name eq "Manually load a driver") { - modules::interactive::load_category__prompt($in, 'network/main|gigabit|pcmcia|usb|wireless'); + modules::interactive::load_category__prompt($in, $modules_conf, 'network/main|gigabit|pcmcia|usb|wireless'); return 'lan'; } $::isInstall && $netc->{NET_DEVICE} eq $ethntf->{DEVICE} ? 'lan_alrd_cfg' : 'lan_protocol'; @@ -1055,8 +1053,8 @@ See iwpriv(8) man page for further information."), { pre => sub { #-type =static or dhcp - modules::interactive::load_category($in, 'network/main|gigabit|usb', !$::expert, 1); - @all_cards = network::ethernet::get_eth_cards() or + modules::interactive::load_category($in, $modules_conf, 'network/main|gigabit|usb', !$::expert, 1); + @all_cards = network::ethernet::get_eth_cards($modules_conf) or # FIXME: fix this $in->ask_warn(N("Error"), N("No ethernet network adapter has been detected on your system. I cannot set up this connection type.")), return; @@ -1069,7 +1067,7 @@ I cannot set up this connection type.")), return; post => sub { network::ethernet::write_ether_conf(); - modules::write_conf() if $::isStandalone; + $modules_conf->write if $::isStandalone; my $_device = network::ethernet::conf_network_card_backend($netc, $intf, $type, $interface->[0], $ipadr, $netadr); return "lan"; }, @@ -1182,7 +1180,7 @@ It is not necessary on most networks."), type => "yesorno", post => sub { my ($a) = @_; - network::ethernet::write_ether_conf($in, $netcnx, $netc, $intf) if $netcnx->{type} eq 'lan'; + network::ethernet::write_ether_conf($in, $modules_conf, $netcnx, $netc, $intf) if $netcnx->{type} eq 'lan'; if ($a && !$::testing && !run_program::rooted($::prefix, "/etc/rc.d/init.d/network restart")) { $success = 0; $in->ask_okcancel(N("Network Configuration"), @@ -1332,8 +1330,8 @@ fi } sub main { - my ($_prefix, $netcnx, $in, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_; - eval { real_main('', , $netcnx, $in, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) }; + my ($_prefix, $netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_; + eval { real_main('', , $netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) }; my $err = $@; if ($err) { # && $in->isa('interactive::gtk') local $::isEmbedded = 0; # to prevent sub window embedding @@ -1404,7 +1402,7 @@ sub start_internet { my ($o) = @_; init_globals($o); #- give a chance for module to be loaded using kernel-BOOT modules... - $::isStandalone or modules::load_category('network/main|gigabit|usb'); + $::isStandalone or modules::load_category($o->{modules_conf}, 'network/main|gigabit|usb'); run_program::rooted($::prefix, $network::tools::connect_file); } @@ -1430,7 +1428,7 @@ local $in = class_discard->new; network::netconnect::init_globals($in); my %i; -&network::netconnect::detect(\%i); +network::netconnect::detect($modules_conf, \%i); print Dumper(\%i),"\n"; =cut diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm index 9f4256770..ae871084e 100644 --- a/perl-install/network/network.pm +++ b/perl-install/network/network.pm @@ -363,14 +363,14 @@ sub probe_netcnx_type { } sub easy_dhcp { - my ($netc, $intf) = @_; + my ($modules_conf, $netc, $intf) = @_; return if text2bool($netc->{NETWORKING}); require modules; require network::ethernet; - modules::load_category('network/main|gigabit|usb'); - my @all_cards = network::ethernet::get_eth_cards(); + modules::load_category($modules_conf, 'network/main|gigabit|usb'); + my @all_cards = network::ethernet::get_eth_cards($modules_conf); #- only for a single network card (any { $_->[0] eq 'eth0' } @all_cards) && (every { $_->[0] ne 'eth1' } @all_cards) or return; diff --git a/perl-install/network/shorewall.pm b/perl-install/network/shorewall.pm index f518bd00e..1bd15fead 100644 --- a/perl-install/network/shorewall.pm +++ b/perl-install/network/shorewall.pm @@ -69,8 +69,9 @@ sub default_interfaces { my @l = detect_devices::getNet() or return; -my @all_cards = network::ethernet::get_eth_cards(); -my %net_devices = network::ethernet::get_eth_cards_names(@all_cards); + my $modules_conf = modules::any_conf->read; +my @all_cards = network::ethernet::get_eth_cards($modules_conf); +my %net_devices = network::ethernet::get_eth_cards_names($modules_conf, @all_cards); put_in_hash(\%net_devices, { 'ppp+' => 'ppp+', 'ippp+' => 'ippp+' }); $in->ask_from('', diff --git a/perl-install/network/tools.pm b/perl-install/network/tools.pm index 3e2dbaee7..bf1508a4b 100644 --- a/perl-install/network/tools.pm +++ b/perl-install/network/tools.pm @@ -190,9 +190,9 @@ sub is_dynamic_host { } sub reread_net_conf { - my ($netcnx, $netc, $intf) = @_; + my ($modules_conf, $netcnx, $netc, $intf) = @_; network::netconnect::read_net_conf($netcnx, $netc, $intf); - modules::load_category('net'); + modules::load_category($modules_conf, 'net'); } sub convert_wep_key_for_iwconfig { -- cgit v1.2.1