3 # Create, save or delete a boot-time address range
5 require './net-lib.pl';
6 $access{'ifcs'} == 2 || $access{'ifcs'} == 3 || &error($text{'ifcs_ecannot'});
8 @boot = &boot_interfaces();
10 sub check_restricted_interfaces() {
11 if ($access{'ifcs'} == 3) {
12 map { $can_interfaces{$_}++ } split(/\s+/, $access{'interfaces'});
13 if (! $can_interfaces{$b->{'name'}}) {
14 &error($text{'ifcs_ecannot_this'});
19 if ($in{'delete'} || $in{'unapply'}) {
21 &error_setup($text{'range_err1'});
22 $b = $boot[$in{'idx'}];
23 &check_restricted_interfaces();
26 # Shut down this range
27 &error_setup($text{'range_err4'});
28 $err = &unapply_interface($act);
29 $err && &error("<pre>$err</pre>");
31 &delete_interface($b);
32 &webmin_log("delete", "range", $b->{'fullname'}, $b);
35 # Save or create interface
36 &error_setup($text{'range_err2'});
38 $b = $boot[$in{'idx'}];
43 &parse_range($b, \%in);
44 &check_restricted_interfaces();
47 if ($in{'activate'}) {
48 # Make this interface active (if possible)
49 &error_setup($text{'range_err3'});
50 $err = &apply_interface($b);
51 $err && &error("<pre>$err</pre>");
53 &webmin_log($in{'new'} ? 'create' : 'modify',
54 "range", $b->{'fullname'}, $b);
56 &redirect("list_ifcs.cgi?mode=boot");