diff -ru webmin-1.480/net/edit_bifc.cgi /usr/libexec/webmin/net/edit_bifc.cgi
--- webmin-1.480/net/edit_bifc.cgi 2009-06-10 19:47:38.000000000 -0400
+++ /usr/libexec/webmin/net/edit_bifc.cgi 2009-07-07 18:25:50.000000000 -0400
@@ -202,6 +202,12 @@
: $vlanid.&ui_hidden("vlanid", $vlanid));
}
+if($in{'virtual'}){
+print qq!
| $text{'bulk_a_or'} |
| $text{'bulk_aliases'} |
+ |
+
+!;
+}
print &ui_table_end();
# Generate and show buttons at end of the form
diff -ru webmin-1.480/net/lang/en /usr/libexec/webmin/net/lang/en
--- webmin-1.480/net/lang/en 2009-06-10 19:47:38.000000000 -0400
+++ /usr/libexec/webmin/net/lang/en 2009-07-07 18:31:39.000000000 -0400
@@ -293,3 +293,6 @@
hdelete_enone=None selected
idelete_err=Failed to delete IPv6 host addresses
+bulk_aliases=Bulk Aliases
(One ip per line)
+bulk_a_or=OR:
+bifc_bulk_no_address=No new address in the bulk list
diff -ru webmin-1.480/net/save_bifc.cgi /usr/libexec/webmin/net/save_bifc.cgi
--- webmin-1.480/net/save_bifc.cgi 2009-06-10 19:47:38.000000000 -0400
+++ /usr/libexec/webmin/net/save_bifc.cgi 2009-07-07 18:40:07.000000000 -0400
@@ -45,7 +45,7 @@
if (defined($oldb->{'virtual'}));
$b->{'code'} = $oldb->{'code'};
}
- elsif (defined($in{'virtual'})) {
+ elsif (defined($in{'virtual'}) && $in{'virtual'}>$min_virtual_number) {
# creating a virtual interface
$in{'virtual'} =~ /^\d+$/ ||
&error($text{'bifc_evirt'});
@@ -63,6 +63,20 @@
&can_create_iface() || &error($text{'ifcs_ecannot'});
&can_iface($b) || &error($text{'ifcs_ecannot'});
}
+ elsif (defined($in{'bulk_aliases'})){
+ $b->{'virtual'}=$min_virtual_number+1;
+ foreach $eb (@boot) {
+ if ($eb->{'name'} eq $in{'name'}) {
+ if($eb->{'virtual'}>$b->{'virtual'}){
+ $b->{'virtual'}=$eb->{'virtual'}+1;
+ }
+ }
+ }
+ $b->{'name'} = $in{'name'};
+ &can_create_iface() || &error($text{'ifcs_ecannot'});
+ &can_iface($b) || &error($text{'ifcs_ecannot'});
+
+ }
elsif ($in{'name'} =~ /^([a-z]+\d*(\.\d+)?):(\d+)$/) {
# also creating a virtual interface
foreach $eb (@boot) {
@@ -122,6 +136,24 @@
$auto++;
}
else {
+ if(defined($in{'bulk_aliases'})){
+ @bulk_lines=split(/\r\n/,$in{'bulk_aliases'});
+ local $i=0;
+ foreach my $bl (@bulk_lines) {
+ chomp($bl);
+ $bulk_lines[$i++]=$bl;
+ }
+ foreach $eb (@boot){
+ @bulk_lines=grep {!/$eb->{'address'}/} @bulk_lines;
+ }
+ undef %sawbl;
+ @bulk_lines = grep(!$sawbl{$_}++, @bulk_lines);
+ if(@bulk_lines < 1 ){
+ &error(&text('bifc_bulk_no_address'));
+ }
+ $in{'address'}=$bulk_lines[0];
+ $in{'broadcast'}=&compute_broadcast($in{'address'}, $b->{'netmask'});
+ }
&valid_boot_address($in{'address'}) ||
&error(&text('bifc_eip', $in{'address'}));
$b->{'address'} = $in{'address'};
@@ -132,7 +164,7 @@
$b->{'desc'} = $in{'desc'};
}
- if ($virtual_netmask && $b->{'virtual'} ne "") {
+ if ($virtual_netmask && $b->{'virtual'} ne "" ) {
# Always use this netmask for virtuals
$b->{'netmask'} = $virtual_netmask;
}
@@ -220,8 +252,32 @@
else{
$b->{'fullname'} = $b->{'name'}.( $b->{'virtual'} eq '' ? '' : ':'.$b->{'virtual'});
}
- &save_interface($b);
+if(defined($in{'bulk_aliases'})){
+ $b->{'netmask'} = $virtual_netmask;
+ foreach my $l (@bulk_lines) {
+ $b->{'address'}=$l;
+ $b->{'broadcast'} = &compute_broadcast($b->{'address'}, $b->{'netmask'});
+ &save_interface($b);
+
+ if($in{'activate'}){
+ &error_setup($text{'bifc_err3'});
+ $b->{'up'}++;
+ $b->{'address'} = &to_ipaddress($b->{'address'});
+ if (defined(&apply_interface)) {
+ $err = &apply_interface($b);
+ $err && &error("$err
");
+ }
+ else {
+ if($in{'bond'}) {&load_module($b);}
+ &activate_interface($b);
+ }
+ }
+ $b->{'up'}--;
+ $b->{'virtual'}++;
+ }
+} else{
+ &save_interface($b);
if ($in{'activate'}) {
# Make this interface active (if possible)
&error_setup($text{'bifc_err3'});
@@ -236,6 +292,7 @@
&activate_interface($b);
}
}
+ }
&webmin_log($in{'new'} ? 'create' : 'modify',
"bifc", $b->{'fullname'}, $b);
}