summaryrefslogtreecommitdiffstats
path: root/dhcp_wizard
diff options
context:
space:
mode:
authorThierry Vignaud <tvignaud@mandriva.org>2004-07-27 07:43:02 +0000
committerThierry Vignaud <tvignaud@mandriva.org>2004-07-27 07:43:02 +0000
commit49cf8a60fc16ecfd80d330a73d6d633e7affbbea (patch)
tree1f5561f26a073529cc041abdd673401b829366a9 /dhcp_wizard
parentcf4452688cb4c349f554ea10ccc5851702f05dcd (diff)
downloaddrakwizard-49cf8a60fc16ecfd80d330a73d6d633e7affbbea.tar
drakwizard-49cf8a60fc16ecfd80d330a73d6d633e7affbbea.tar.gz
drakwizard-49cf8a60fc16ecfd80d330a73d6d633e7affbbea.tar.bz2
drakwizard-49cf8a60fc16ecfd80d330a73d6d633e7affbbea.tar.xz
drakwizard-49cf8a60fc16ecfd80d330a73d6d633e7affbbea.zip
use new complete callback for better error managment (that is w/o garbaging the
wizard step history stack)
Diffstat (limited to 'dhcp_wizard')
-rwxr-xr-xdhcp_wizard/Dhcp.pm67
1 files changed, 45 insertions, 22 deletions
diff --git a/dhcp_wizard/Dhcp.pm b/dhcp_wizard/Dhcp.pm
index 122a389c..e2066353 100755
--- a/dhcp_wizard/Dhcp.pm
+++ b/dhcp_wizard/Dhcp.pm
@@ -66,14 +66,14 @@ $o->{pages} = {
$o->{var}{ip1} ||= compute_range();
$o->{var}{ip2} ||= compute_range2();
},
- post => \&check,
data => [
{ label => N("Lowest IP address:"), val => \$o->{var}{ip1} },
{ label => N("Highest IP address:"), val => \$o->{var}{ip2} },
{ label => N("Gateway IP address:"), val => \$o->{var}{gateway} },
{ label => N("Enable PXE:"), type => 'bool', val => \$o->{var}{pxe} },
],
- next => 'summary'
+ complete => \&check,
+ post => sub { return keys %{$wiz->{net}{itf}} > 1 ? 'interface' : 'summary' },
},
interface => {
name => N("Interface the dhcp server must listen to"),
@@ -90,21 +90,11 @@ $o->{pages} = {
ignore => 1,
next => 'ip_range'
},
- ip_range_error => {
- name => N("Error") . "\n\n" . N("The IP range specified is not correct."),
- ignore => 1,
- next => 'ip_range'
- },
ip_range_warning => {
name => N("Warning") . "\n\n" . N("The IP range specified is not in server address range."),
ignore => 1,
next => 'summary'
},
- server_in_range => {
- name => N("Error") . "\n\n" . N("The IP of the server must not be in range."),
- ignore => 1,
- next => 'ip_range'
- },
summary => {
name => N("Configuring the DHCP server") . "\n\n" . N("The wizard collected the following parameters needed to configure your DHCP service:"),
pre => sub {
@@ -153,23 +143,56 @@ sub compute_range2 {
sub check {
my $check_ip = sub { return $_[0] < 0 || $_[0] > 255 ? 0 : 1 };
my $r1_trunc = "$1.$2.$3" if $o->{var}{ip1} =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
- foreach ($1, $2, $3, $4) { $check_ip->($_) or return 'ip_range_error' }
+ foreach ($1, $2, $3, $4) {
+ if (!$check_ip->($_)) {
+ $::in->ask_warn(N("Error"), N("The IP specified is not correct: %s", $o->{var}{ip1}));
+ return 1;
+ }
+ }
my $r2_trunc = "$1.$2.$3" if $o->{var}{ip2} =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
- foreach ($1, $2, $3, $4) { $check_ip->($_) or return 'ip_range_error' }
+ foreach ($1, $2, $3, $4) {
+ if (!$check_ip->($_)) {
+ $::in->ask_warn(N("Error"), N("The IP specified is not correct: %s", $o->{var}{ip2}));
+ return 1;
+ }
+ }
my $d1 = $4 if $o->{var}{ip1} =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
my $d2 = $4 if $o->{var}{ip2} =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
my $s_trunc = "$1.$2.$3" if $wiz_ip_server =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
my $ds = $4 if $wiz_ip_server =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
- if (!$r1_trunc) { standalone::explanations("DHCP wizard : incorrect adress range 1"); return 'ip_range_error' }
- if (!$r2_trunc) { standalone::explanations("DHCP wizard : incorrect adress range 2"); return 'ip_range_error' }
+ if (!$r1_trunc) {
+ standalone::explanations("DHCP wizard : incorrect adress range 1");
+ return 1;
+ }
+ if (!$r2_trunc) {
+ standalone::explanations("DHCP wizard : incorrect adress range 2");
+ $::in->ask_warn(N("Error"), N("The IP specified is not correct: %s", $o->{var}{ip2}));
+ ip_range_error($r2_trunc);
+ return 1;
+ }
if ($r1_trunc ne $s_trunc || $r2_trunc ne $s_trunc) {
- standalone::explanations("DHCP wizard : range not in network");
- return 'ip_range_warning';
+ standalone::explanations("DHCP wizard : range not in network");
+ $::in->ask_warn(N("Error"), N("The IP range specified is not correct since it's not in the network"));
+ return 1;
+ }
+ if (!$d1 || !$d2) {
+ standalone::explanations("DHCP wizard : bad range");
+ $::in->ask_warn(N("Error"), N("The IP range specified is not correct"));
+ return 1;
+ }
+ if ($d1 > $d2) {
+ standalone::explanations("DHCP wizard : bad range");
+ $::in->ask_warn(N("Error"), N("The IP range specified is not correct: the end IP is below the first IP"));
+ return 1;
+ }
+ if ($ds >= $d1 && $ds <= $d2) {
+ standalone::explanations("DHCP wizard : server in range");
+ $::in->ask_warn(N("Error"), N("The IP range specified is not correct since the server IP is in:
+%s is included in %s-%s whereas the IP of the server must not be in range.",
+ $wiz_ip_server, $o->{var}{ip1}, $o->{var}{ip2}));
+ return 1;
}
- if (!$d1 || !$d2 || $d1 > $d2) { standalone::explanations("DHCP wizard : bad range"); return 'ip_range_error' }
- if ($ds >= $d1 && $ds <= $d2) { standalone::explanations("DHCP wizard : server in range"); return 'server_in_range' }
- return 'interface' if keys %{$wiz->{net}{itf}} > 1;
- 0
+ return 0
}
sub do_it {