summaryrefslogtreecommitdiffstats
path: root/perl-install/network/network.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network/network.pm')
-rw-r--r--perl-install/network/network.pm367
1 files changed, 201 insertions, 166 deletions
diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm
index abd0cf486..12085f636 100644
--- a/perl-install/network/network.pm
+++ b/perl-install/network/network.pm
@@ -3,48 +3,38 @@ package network::network; # $Id$wir
#-######################################################################################
#- misc imports
#-######################################################################################
-
-use strict;
-
use Socket;
+
use common;
use detect_devices;
use run_program;
-use network::tools;
use any;
-use vars qw(@ISA @EXPORT);
use log;
+use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
-@EXPORT = qw(add2hosts addDefaultRoute configureNetwork2 dns dnsServers down_it findIntf gateway guessHostname is_ip is_ip_forbidden masked_ip netmask read_all_conf read_conf read_interface_conf read_resolv_conf resolv sethostname up_it write_conf write_resolv_conf);
+@EXPORT = qw(resolv configureNetworkIntf netmask dns is_ip masked_ip findIntf addDefaultRoute write_interface_conf read_all_conf dnsServers guessHostname configureNetworkNet read_resolv_conf read_interface_conf add2hosts gateway configureNetwork2 write_conf sethostname miscellaneousNetwork down_it read_conf write_resolv_conf up_it);
#-######################################################################################
#- Functions
#-######################################################################################
sub read_conf {
my ($file) = @_;
- +{ getVarsFromSh($file) };
-}
-
-sub read_resolv_conf_raw {
- my ($file) = @_;
- $file ||= "$::prefix/etc/resolv.conf";
- { nameserver => [ cat_($file) =~ /^\s*nameserver\s+(\S+)/mg ],
- search => [ if_(cat_($file) =~ /^\s*search\s+(.*)/m, split(' ', $1)) ] };
+ my %netc = getVarsFromSh($file);
+ \%netc;
}
sub read_resolv_conf {
my ($file) = @_;
- my $resolv_conf = read_resolv_conf_raw($file);
- +{
- (mapn { $_[0] => $_[1] } [ qw(dnsServer dnsServer2 dnsServer3) ], $resolv_conf->{nameserver}),
- (mapn { $_[0] => $_[1] } [ qw(DOMAINNAME DOMAINNAME2 DOMAINNAME3) ], $resolv_conf->{search}),
- };
+ my @l = map { if_(/^\s*nameserver\s+(\S+)/, $1) } cat_($file);
+
+ my %netc = mapn { $_[0] => $_[1] } [ qw(dnsServer dnsServer2 dnsServer3) ], \@l;
+ \%netc;
}
sub read_interface_conf {
my ($file) = @_;
- my %intf = getVarsFromSh($file);
+ my %intf = getVarsFromSh($file) or die "cannot open file $file: $!";
$intf{BOOTPROTO} ||= 'static';
$intf{isPtp} = $intf{NETWORK} eq '255.255.255.255';
@@ -52,31 +42,6 @@ sub read_interface_conf {
\%intf;
}
-sub read_dhcpd_conf {
- my ($file) = @_;
- $file ||= "$::prefix/etc/dhcpd.conf";
- { option_routers => [ cat_($file) =~ /^\s*option routers\s+(\S+);/mg ],
- subnet_mask => [ if_(cat_($file) =~ /^\s*option subnet-mask\s+(.*);/mg, split(' ', $1)) ],
- domain_name => [ if_(cat_($file) =~ /^\s*option domain-name\s+"(.*)";/mg, split(' ', $1)) ],
- domain_name_servers => [ if_(cat_($file) =~ /^\s*option domain-name-servers\s+(.*);/m, split(' ', $1)) ],
- dynamic_bootp => [ if_(cat_($file) =~ /^\s*range dynamic-bootp\s+\S+\.(\d+)\s+\S+\.(\d+)\s*;/m, split(' ', $1)) ],
- default_lease_time => [ if_(cat_($file) =~ /^\s*default-lease-time\s+(.*);/m, split(' ', $1)) ],
- max_lease_time => [ if_(cat_($file) =~ /^\s*max-lease-time\s+(.*);/m, split(' ', $1)) ] };
-}
-
-sub read_tmdns_conf {
- my ($file) = @_;
- local *F; open F, $file or die "cannot open file $file: $!";
- local $_;
- my %outf;
-
- while (<F>) {
- ($outf{ZEROCONF_HOSTNAME}) = /^\s*hostname\s*=\s*(\w+)/ and return \%outf;
- }
-
- \%outf;
-}
-
sub up_it {
my ($prefix, $intfs) = @_;
$_->{isUp} and return foreach values %$intfs;
@@ -94,24 +59,25 @@ sub down_it {
sub write_conf {
my ($file, $netc) = @_;
- if ($netc->{HOSTNAME} && $netc->{HOSTNAME} =~ /\.(.+)$/) {
- $netc->{DOMAINNAME} = $1;
+ if ($netc->{HOSTNAME}) {
+ $netc->{HOSTNAME} =~ /\.(.*)$/;
+ $1 and $netc->{DOMAINNAME} = $1;
}
- $netc->{NETWORKING} = 'yes';
-
- setVarsInSh($file, $netc, qw(HOSTNAME NETWORKING GATEWAY GATEWAYDEV NISDOMAIN));
-}
+ ($netc->{DOMAINNAME}) ||= 'localdomain';
+ add2hash($netc, {
+ NETWORKING => "yes",
+ FORWARD_IPV4 => "false",
+ HOSTNAME => "localhost.$netc->{DOMAINNAME}",
+ });
-sub write_zeroconf {
- my ($file, $zhostname) = @_;
- eval { substInFile { s/^\s*(hostname)\s*=.*/$1 = $zhostname/ } $file };
+ setVarsInSh($file, $netc, qw(NETWORKING FORWARD_IPV4 DHCP_HOSTNAME HOSTNAME DOMAINNAME GATEWAY GATEWAYDEV NISDOMAIN));
}
sub write_resolv_conf {
my ($file, $netc) = @_;
my %new = (
- search => [ grep { $_ } uniq(@$netc{'DOMAINNAME', 'DOMAINNAME2', 'DOMAINNAME3'}) ],
+ search => [ grep { $_ } uniq(@$netc{'DOMAINNAME', 'DOMAINNAME2'}) ],
nameserver => [ grep { $_ } uniq(@$netc{'dnsServer', 'dnsServer2', 'dnsServer3'}) ],
);
@@ -142,43 +108,32 @@ sub write_resolv_conf {
my @old = map { "# nameserver $_\n" } @{$prev{nameserver}};
@new, @old;
};
- output_with_perm($file, 0644, @search, @nameserver, (map { "# $_\n" } @unknown), "\n# ppp temp entry\n");
-
+ output($file, @search, @nameserver, (map { "# $_\n" } @unknown), "\n# ppp temp entry\n");
+
#-res_init(); # reinit the resolver so DNS changes take affect
1;
} else {
- log::explanations("neither domain name nor dns server are configured");
+ log::l("neither domain name nor dns server are configured");
0;
}
}
sub write_interface_conf {
- my ($file, $intf, $_netc, $prefix) = @_;
-
- if ($intf->{HWADDR} && -e "$prefix/sbin/ip") {
- $intf->{HWADDR} = undef;
- if (my $s = `LC_ALL= LANG= $prefix/sbin/ip -o link show $intf->{DEVICE} 2>/dev/null`) {
- if ($s =~ m|.*link/ether\s([0-9a-z:]+)\s|) {
- $intf->{HWADDR} = $1;
- }
- }
- }
+ my ($file, $intf, $prefix) = @_;
+
my @ip = split '\.', $intf->{IPADDR};
my @mask = split '\.', $intf->{NETMASK};
-
+ my $hwaddr;
+ $::o->{miscellaneous}{track_network_id} and $hwaddr = -e "$prefix/sbin/ip" && `LC_ALL= LANG= $prefix/sbin/ip -o link show $intf->{DEVICE} 2>/dev/null`;
+ if ($hwaddr) { chomp $hwaddr; $hwaddr =~ s/.*link\/ether\s([0-9a-z:]+)\s.*/$1/ }
+ $hwaddr and $intf->{HWADDR} = undef;
add2hash($intf, {
BROADCAST => join('.', mapn { int($_[0]) | ((~int($_[1])) & 255) } \@ip, \@mask),
NETWORK => join('.', mapn { int($_[0]) & $_[1] } \@ip, \@mask),
- ONBOOT => bool2yesno(!member($intf->{DEVICE}, map { $_->{device} } detect_devices::pcmcia_probe())),
+ ONBOOT => bool2yesno(!member($intf->{DEVICE}, map { $_->{device} } detect_devices::probeall())),
+ if_($::o->{miscellaneous}{track_network_id}, HWADDR => $hwaddr)
});
-
- $intf->{BOOTPROTO} =~ s/dhcp.*/dhcp/;
-
- setVarsInSh($file, $intf, qw(DEVICE BOOTPROTO IPADDR NETMASK NETWORK BROADCAST ONBOOT HWADDR MII_NOT_SUPPORTED),
- qw(WIRELESS_MODE WIRELESS_ESSID WIRELESS_NWID WIRELESS_FREQ WIRELESS_SENS WIRELESS_RATE WIRELESS_ENC_KEY WIRELESS_RTS WIRELESS_FRAG WIRELESS_IWCONFIG WIRELESS_IWSPY WIRELESS_IWPRIV),
- if_($intf->{BOOTPROTO} eq "dhcp", qw(DHCP_HOSTNAME NEEDHOSTNAME))
- );
- log::explanations("written $intf->{DEVICE} interface configuration in $file");
+ setVarsInSh($file, $intf, qw(DEVICE BOOTPROTO IPADDR NETMASK NETWORK BROADCAST ONBOOT HWADDR), if_($intf->{wireless_eth}, qw(WIRELESS_MODE WIRELESS_ESSID WIRELESS_NWID WIRELESS_FREQ WIRELESS_SENS WIRELESS_RATE WIRELESS_ENC_KEY WIRELESS_RTS WIRELESS_FRAG WIRELESS_IWCONFIG WIRELESS_IWSPY WIRELESS_IWPRIV)));
}
sub add2hosts {
@@ -190,7 +145,7 @@ sub add2hosts {
my $sub_hostname = $hostname =~ /(.*?)\./ ? " $1" : '';
$l{$_} = "\t\t$hostname$sub_hostname" foreach grep { $_ } @ips;
- log::explanations("writing host information to $file");
+ log::l("writing host information to $file");
output($file, map { "$_$l{$_}\n" } keys %l);
}
@@ -203,9 +158,9 @@ sub guessHostname {
write_resolv_conf("$prefix/etc/resolv.conf", $netc);
- my $name = gethostbyaddr(Socket::inet_aton($intf->{IPADDR}), Socket::AF_INET()) or log::explanations("reverse name lookup failed"), return 0;
+ my $name = gethostbyaddr(Socket::inet_aton($intf->{IPADDR}), Socket::AF_INET()) or log::l("reverse name lookup failed"), return 0;
- log::explanations("reverse name lookup worked");
+ log::l("reverse name lookup worked");
add2hash($netc, { HOSTNAME => $name });
1;
@@ -218,16 +173,14 @@ sub addDefaultRoute {
sub sethostname {
my ($netc) = @_;
- my $text;
- syscall_("sethostname", $netc->{HOSTNAME}, length $netc->{HOSTNAME}) ? ($text="set sethostname to $netc->{HOSTNAME}") : ($text="sethostname failed: $!");
- log::explanations($text);
+ syscall_("sethostname", $netc->{HOSTNAME}, length $netc->{HOSTNAME}) or log::l("sethostname failed: $!");
}
sub resolv($) {
my ($name) = @_;
is_ip($name) and return $name;
my $a = join(".", unpack "C4", (gethostbyname $name)[4]);
- #-log::explanations("resolved $name in $a");
+ #-log::l("resolved $name in $a");
$a;
}
@@ -242,31 +195,14 @@ sub findIntf {
$intf->{$device}{DEVICE} = $device;
$intf->{$device};
}
-
+#PAD \s* a la fin
my $ip_regexp = qr/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
-
sub is_ip {
my ($ip) = @_;
my @fields = $ip =~ $ip_regexp or return;
- every { 0 <= $_ && $_ <= 255 } @fields or return;
+ return if grep { $_ < 0 || $_ > 255 } @fields;
@fields;
}
-
-sub ip_compare {
- my ($ip1, $ip2) = @_;
- my (@ip1_fields) = $ip1 =~ $ip_regexp;
- my (@ip2_fields) = $ip2 =~ $ip_regexp;
-
- every { $ip1_fields[$_] eq $ip2_fields[$_] } (0 .. 3);
-}
-
-sub is_ip_forbidden {
- my ($ip) = @_;
- my @forbidden = ('127.0.0.1', '255.255.255.255');
-
- any { ip_compare($ip, $_) } @forbidden;
-}
-
sub is_domain_name {
my ($name) = @_;
my @fields = split /\./, $name;
@@ -276,7 +212,7 @@ sub is_domain_name {
sub netmask {
my ($ip) = @_;
return "255.255.255.0" unless is_ip($ip);
- $ip =~ $ip_regexp or warn "IP_regexp failed\n" and return "255.255.255.0";
+ $ip =~ $ip_regexp;
if ($1 >= 1 && $1 < 127) {
"255.0.0.0"; #-1.0.0.0 to 127.0.0.0
} elsif ($1 >= 128 && $1 <= 191) {
@@ -305,70 +241,168 @@ sub dns {
join(".", @masked);
}
-
sub gateway {
my ($ip) = @_;
my @masked = masked_ip($ip) =~ $ip_regexp;
$masked[3] = 1;
join(".", @masked);
+
}
-sub proxy_configure {
- my ($u) = @_;
- setExportedVarsInSh("$::prefix/etc/profile.d/proxy.sh", $u, qw(http_proxy ftp_proxy));
- setExportedVarsInCsh("$::prefix/etc/profile.d/proxy.csh", $u, qw(http_proxy ftp_proxy));
+sub configureNetworkIntf {
+ my ($netc, $in, $intf, $net_device, $skip, $module) = @_;
+ my $text;
+ my @wireless_modules = qw(aironet_cs aironet4500_cs hermes airo orinoco_cs orinoco airo_cs netwave_cs ray_cs wavelan_cs wvlan_cs airport);
+ my $flag = 0;
+ foreach (@wireless_modules) {
+ $module =~ /$_/ and $flag = 1;
+ }
+ if ($flag) {
+ $intf->{wireless_eth} = 1;
+ $netc->{wireless_eth} = 1;
+ $intf->{WIRELESS_MODE} = "Managed";
+ $intf->{WIRELESS_ESSID} = "any";
+#- $intf->{WIRELESS_NWID} = "";
+#- $intf->{WIRELESS_FREQ} = "";
+#- $intf->{WIRELESS_SENS} = "";
+#- $intf->{WIRELESS_RATE} = "";
+#- $intf->{WIRELESS_ENC_KEY} = "";
+#- $intf->{WIRELESS_RTS} = "";
+#- $intf->{WIRELESS_FRAG} = "";
+#- $intf->{WIRELESS_IWCONFIG} = "";
+#- $intf->{WIRELESS_IWSPY} = "";
+#- $intf->{WIRELESS_IWPRIV} = "";
+ }
+ if ($net_device eq $intf->{DEVICE}) {
+ $skip and return 1;
+ $text = N("WARNING: this device has been previously configured to connect to the Internet.
+Simply accept to keep this device configured.
+Modifying the fields below will override this configuration.");
+ }
+ else {
+ $text = N("Please enter the IP configuration for this machine.
+Each item should be entered as an IP address in dotted-decimal
+notation (for example, 1.2.3.4).");
+ }
+ my $pump = $intf->{BOOTPROTO} =~ /^(dhcp|bootp)$/;
+ delete $intf->{NETWORK};
+ delete $intf->{BROADCAST};
+ my $onboot = 1;
+ my @fields = qw(IPADDR NETMASK);
+ $::isStandalone or $in->set_help('configureNetworkIP');
+ $in->ask_from(N("Configuring network device %s", $intf->{DEVICE}),
+ (N("Configuring network device %s", $intf->{DEVICE}) . ($module ? N(" (driver %s)", $module) : '') . "\n\n") .
+ $text,
+ [ { label => N("IP address"), val => \$intf->{IPADDR}, disabled => sub { $pump } },
+ { label => N("Netmask"), val => \$intf->{NETMASK}, disabled => sub { $pump } },
+ { label => N("Automatic IP"), val => \$pump, type => "bool", text => N("(bootp/dhcp)") },
+ if_($::expert, { label => N("Start at boot"), val => \$onboot, type => "bool" }),
+ if_($intf->{wireless_eth},
+ { label => "WIRELESS_MODE", val => \$intf->{WIRELESS_MODE}, list => [ "Ad-hoc", "Managed", "Master", "Repeater", "Secondary", "Auto" ] },
+ { label => "WIRELESS_ESSID", val => \$intf->{WIRELESS_ESSID} },
+ { label => "WIRELESS_NWID", val => \$intf->{WIRELESS_NWID} },
+ { label => "WIRELESS_FREQ", val => \$intf->{WIRELESS_FREQ} },
+ { label => "WIRELESS_SENS", val => \$intf->{WIRELESS_SENS} },
+ { label => "WIRELESS_RATE", val => \$intf->{WIRELESS_RATE} },
+ { label => "WIRELESS_ENC_KEY", val => \$intf->{WIRELESS_ENC_KEY} },
+ { label => "WIRELESS_RTS", val => \$intf->{WIRELESS_RTS} },
+ { label => "WIRELESS_FRAG", val => \$intf->{WIRELESS_FRAG} },
+ { label => "WIRELESS_IWCONFIG", val => \$intf->{WIRELESS_IWCONFIG} },
+ { label => "WIRELESS_IWSPY", val => \$intf->{WIRELESS_IWSPY} },
+ { label => "WIRELESS_IWPRIV", val => \$intf->{WIRELESS_IWPRIV} }
+ ),
+ ],
+ complete => sub {
+ $intf->{BOOTPROTO} = $pump ? "dhcp" : "static";
+ return 0 if $pump;
+ for (my $i = 0; $i < @fields; $i++) {
+ unless (is_ip($intf->{$fields[$i]})) {
+ $in->ask_warn('', N("IP address should be in format 1.2.3.4"));
+ return (1,$i);
+ }
+ return 0;
+ }
+ if ($intf->{WIRELESS_FREQ} !~ /[0-9.]*[kGM]/) {
+ $in->ask_warn('', N("Freq should have the suffix k, M or G (for example, \"2.46G\" for 2.46 GHz frequency), or add enough \'0\'."));
+ return (1,6);
+ }
+ if ($intf->{WIRELESS_RATE} !~ /[0-9.]*[kGM]/) {
+ $in->ask_warn('', N("Rate should have the suffix k, M or G (for example, \"11M\" for 11M), or add enough \'0\'."));
+ return (1,8);
+ }
+ },
+ focus_out => sub {
+ $intf->{NETMASK} ||= netmask($intf->{IPADDR}) unless $_[0]
+ }
+ ) or return;
+ $intf->{ONBOOT} = bool2yesno($onboot);
+}
+
+sub configureNetworkNet {
+ my ($in, $netc, $intf, @devices) = @_;
+
+ $netc->{dnsServer} ||= dns($intf->{IPADDR});
+ my $gateway_ex = gateway($intf->{IPADDR});
+#- $netc->{GATEWAY} ||= gateway($intf->{IPADDR});
+
+ $::isInstall and $in->set_help('configureNetworkHost');
+ $in->ask_from(N("Configuring network"),
+N("Please enter your host name.
+Your host name should be a fully-qualified host name,
+such as ``mybox.mylab.myco.com''.
+You may also enter the IP address of the gateway if you have one"),
+ [ { label => N("Host name"), val => \$netc->{HOSTNAME} },
+ { label => N("DNS server"), val => \$netc->{dnsServer} },
+ { label => N("Gateway (e.g. %s)", $gateway_ex), val => \$netc->{GATEWAY} },
+ if_(@devices > 1,
+ { label => N("Gateway device"), val => \$netc->{GATEWAYDEV}, list => \@devices },
+ ),
+ ],
+ complete => sub {
+ if ($netc->{dnsServer} and !is_ip($netc->{dnsServer})) {
+ $in->ask_warn('', N("DNS server address should be in format 1.2.3.4"));
+ return 1;
+ }
+ if ($netc->{GATEWAY} and !is_ip($netc->{GATEWAY})) {
+ $in->ask_warn('', N("Gateway address should be in format 1.2.3.4"));
+ return 1;
+ }
+ 0;
+ }
+ );
+}
+
+sub miscellaneousNetwork {
+ my ($in, $clicked, $no_track_net) = @_;
+ my $u = $::o->{miscellaneous} ||= {};
+ $::isInstall and $in->set_help('configureNetworkProxy');
+ $u->{track_network_id} = detect_devices::isLaptop();
+ $::expert || $clicked and ($in->ask_from('',
+ N("Proxies configuration"),
+ [ { label => N("HTTP proxy"), val => \$u->{http_proxy} },
+ { label => N("FTP proxy"), val => \$u->{ftp_proxy} },
+ if_(!$no_track_net, { label => N("Track network card id (useful for laptops)"), val => \$u->{track_network_id}, type => "bool" }),
+ ],
+ complete => sub {
+ $u->{http_proxy} =~ m,^($|http://), or $in->ask_warn('', N("Proxy should be http://...")), return 1,0;
+ $u->{ftp_proxy} =~ m,^($|ftp://|http://), or $in->ask_warn('', N("Url should begin with 'ftp:' or 'http:'")), return 1,1;
+ 0;
+ }
+ ) or return);
+ 1;
}
sub read_all_conf {
- my ($prefix, $netc, $intf, $o_netcnx) = @_;
+ my ($prefix, $netc, $intf) = @_;
$netc ||= {}; $intf ||= {};
- my $netcnx = $o_netcnx || {};
add2hash($netc, read_conf("$prefix/etc/sysconfig/network")) if -r "$prefix/etc/sysconfig/network";
- add2hash($netc, read_resolv_conf());
- add2hash($netc, read_tmdns_conf("$prefix/etc/tmdns.conf")) if -r "$prefix/etc/tmdns.conf";
+ add2hash($netc, read_resolv_conf("$prefix/etc/resolv.conf")) if -r "$prefix/etc/resolv.conf";
foreach (all("$prefix/etc/sysconfig/network-scripts")) {
- if (/^ifcfg-(\w+)$/ && $1 ne 'lo') {
+ if (/ifcfg-(\w+)/ && $1 ne 'lo') {
my $intf = findIntf($intf, $1);
add2hash($intf, { getVarsFromSh("$prefix/etc/sysconfig/network-scripts/$_") });
}
}
- $netcnx->{type} or probe_netcnx_type($prefix, $netc, $intf, $netcnx);
-}
-
-sub probe_netcnx_type {
- my ($prefix, $_netc, $intf, $netcnx) = @_;
- #- try to probe $netcnx->{type} which is used almost everywhere.
- unless ($netcnx->{type}) {
- #- ugly hack to determine network type (avoid saying not configured in summary).
- -e "$prefix/etc/ppp/peers/adsl" and $netcnx->{type} ||= 'adsl'; # enough ?
- -e "$prefix/etc/ppp/ioptions1B" || -e "$prefix/etc/ppp/ioptions2B" and $netcnx->{type} ||= 'isdn'; # enough ?
- $intf->{ppp0} and $netcnx->{type} ||= 'modem';
- $intf->{eth0} and $netcnx->{type} ||= 'lan';
- }
-}
-
-sub easy_dhcp {
- my ($netc, $intf) = @_;
-
- return if text2bool($netc->{NETWORKING});
-
- require modules;
- require network::ethernet;
- modules::load_category('network/main|gigabit|usb');
- my @all_cards = network::ethernet::conf_network_card_backend();
-
- #- only for a single network card
- (any { $_->[0] eq 'eth0' } @all_cards) && (every { $_->[0] ne 'eth1' } @all_cards) or return;
-
- log::explanations("easy_dhcp: found eth0");
-
- network::ethernet::conf_network_card_backend($netc, $intf, 'dhcp', 'eth0');
-
- put_in_hash($netc, {
- NETWORKING => "yes",
- DHCP => "yes",
- });
- 1;
}
#- configureNetwork2 : configure the network interfaces.
@@ -398,22 +432,23 @@ sub easy_dhcp {
sub configureNetwork2 {
my ($in, $prefix, $netc, $intf) = @_;
my $etc = "$prefix/etc";
- if (!$::testing) {
- $netc->{wireless_eth} and $in->do_pkgs->ensure_is_installed('wireless-tools', '/sbin/iwconfig', 'auto');
- write_conf("$etc/sysconfig/network", $netc);
- write_resolv_conf("$etc/resolv.conf", $netc) if ! $netc->{DHCP};
- write_interface_conf("$etc/sysconfig/network-scripts/ifcfg-$_->{DEVICE}", $_, $netc, $prefix) foreach grep { $_->{DEVICE} ne 'ppp0' } values %$intf;
- add2hosts("$etc/hosts", $netc->{HOSTNAME}, map { $_->{IPADDR} } values %$intf) if $netc->{HOSTNAME} && !$netc->{DHCP};
- add2hosts("$etc/hosts", "localhost", "127.0.0.1");
-
- any { $_->{BOOTPROTO} eq "dhcp" } values %$intf and $in->do_pkgs->install($netc->{dhcp_client} || 'dhcp-client');
- $in->do_pkgs->ensure_is_installed('tmdns', '/sbin/tmdns', 'auto') if !$in->do_pkgs->is_installed('bind');
- $in->do_pkgs->ensure_is_installed('zcip', '/sbin/zcip', 'auto');
- $netc->{ZEROCONF_HOSTNAME} and write_zeroconf("$etc/tmdns.conf", $netc->{ZEROCONF_HOSTNAME});
- any { $_->{BOOTPROTO} =~ /^(pump|bootp)$/ } values %$intf and $in->do_pkgs->install('pump');
+
+ $netc->{wireless_eth} and $in->do_pkgs->install(qw(wireless-tools));
+ write_conf("$etc/sysconfig/network", $netc);
+ write_resolv_conf("$etc/resolv.conf", $netc);
+ write_interface_conf("$etc/sysconfig/network-scripts/ifcfg-$_->{DEVICE}", $_, $prefix) foreach grep { $_->{DEVICE} } values %$intf;
+ add2hosts("$etc/hosts", $netc->{HOSTNAME}, map { $_->{IPADDR} } values %$intf);
+
+ if (grep { $_->{BOOTPROTO} =~ /^(dhcp)$/ } values %$intf) {
+ $in->do_pkgs->install($netc->{dhcp_client} ? $netc->{dhcp_client} : 'dhcpcd');
+ }
+ if (grep { $_->{BOOTPROTO} =~ /^(pump|bootp)$/ } values %$intf) {
+ $in->do_pkgs->install('pump');
}
+ #-res_init(); #- reinit the resolver so DNS changes take affect
- proxy_configure($::o->{miscellaneous});
+ any::miscellaneousNetwork();
}
+
1;