summaryrefslogtreecommitdiffstats
path: root/perl-install/network/network.pm
diff options
context:
space:
mode:
authorDamien Chaumette <dchaumette@mandriva.com>2003-05-21 17:16:54 +0000
committerDamien Chaumette <dchaumette@mandriva.com>2003-05-21 17:16:54 +0000
commit7cbb5ee09f03c1d02ce250d0ac995e90b672ad51 (patch)
treefbcacf699703c75e19e5f223a116f0007a4c9b21 /perl-install/network/network.pm
parent74b8f914828de0575905aac17c301fdc33f6c61b (diff)
downloaddrakx-7cbb5ee09f03c1d02ce250d0ac995e90b672ad51.tar
drakx-7cbb5ee09f03c1d02ce250d0ac995e90b672ad51.tar.gz
drakx-7cbb5ee09f03c1d02ce250d0ac995e90b672ad51.tar.bz2
drakx-7cbb5ee09f03c1d02ce250d0ac995e90b672ad51.tar.xz
drakx-7cbb5ee09f03c1d02ce250d0ac995e90b672ad51.zip
add some ip checking (#853)
remove old comments
Diffstat (limited to 'perl-install/network/network.pm')
-rw-r--r--perl-install/network/network.pm40
1 files changed, 25 insertions, 15 deletions
diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm
index 7d684aa4e..48f8785a5 100644
--- a/perl-install/network/network.pm
+++ b/perl-install/network/network.pm
@@ -236,14 +236,31 @@ 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;
@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;
@@ -282,6 +299,7 @@ sub dns {
join(".", @masked);
}
+
sub gateway {
my ($ip) = @_;
my @masked = masked_ip($ip) =~ $ip_regexp;
@@ -303,16 +321,6 @@ sub configureNetworkIntf {
$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;
@@ -333,7 +341,7 @@ notation (for example, 1.2.3.4).");
delete $intf->{NETWORK};
delete $intf->{BROADCAST};
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,
@@ -371,7 +379,11 @@ notation (for example, 1.2.3.4).");
$in->ask_warn('', N("IP address should be in format 1.2.3.4"));
return 1, $bad[0];
}
-
+
+ if (is_ip_forbidden($intf->{IPADDR})) {
+ $in->ask_warn('', N("Warning : IP address %s is usually reserved !", $intf->{IPADDR}));
+ }
+
return 0 if !$intf->{WIRELESS_FREQ};
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' (zeroes)."));
@@ -400,7 +412,6 @@ sub configureNetworkNet {
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,
@@ -437,7 +448,6 @@ want to use the default host name."),
sub miscellaneous_choose {
my ($in, $u, $b_clicked) = @_;
-# $in->set_help('configureNetworkProxy') if $::isInstall;
$in->ask_from('',
N("Proxies configuration"),