#!/usr/local/bin/perl # edit_bifc.cgi # Edit or create a bootup interface require './net-lib.pl'; &ReadParse(); if ($in{'new' && $in{'bonding'}}) { &ui_print_header(undef, $text{'bifc_create'}, ""); &can_create_iface() || &error($text{'ifcs_ecannot'}); } elsif ($in{'new'}) { &ui_print_header(undef, $text{'vlan_create'}, ""); &can_create_iface() || &error($text{'ifcs_ecannot'}); } else { @boot = &boot_interfaces(); $b = $boot[$in{'idx'}]; &can_iface($b) || &error($text{'ifcs_ecannot_this'}); &ui_print_header(undef, $text{'bifc_edit'}, ""); } print "
\n"; print "\n"; print "\n"; if($in{'vlan'} == 1) { print "\n"; } elsif($in{'bond'} == 1) { print "\n"; } print "\n"; print "\n"; print "
", $in{'virtual'} || $b && $b->{'virtual'} ne "" ? $text{'bifc_desc2'} : $text{'bifc_desc1'}, "
\n"; # Comment, if allowed if (defined(&can_iface_desc) && &can_iface_desc($b)) { print "\n"; print "\n"; } # Interface name print "\n"; # IP address print "\n", $b && !$b->{'bootp'} && !$b->{'dhcp'} ? $b->{'address'} : ""; # Netmask print "\n"; if ($in{'virtual'} && $in{'new'} && $virtual_netmask) { # Virtual netmask cannot be edited print "\n"; } elsif (&can_edit("netmask", $b) && $access{'netmask'}) { printf "\n", $b ? $b->{'netmask'} : $config{'def_netmask'}; } else { printf "\n", $b ? $b->{'netmask'} : $text{'ifcs_auto'}; } print "\n"; if (&can_edit("broadcast", $b) && $access{'broadcast'}) { printf "\n", $b ? $b->{'broadcast'} : $config{'def_broadcast'}; } else { printf "\n", $b ? $b->{'broadcast'} : $text{'ifcs_auto'}; } print "\n"; if (&can_edit("mtu", $b) && $access{'mtu'}) { printf "\n", $b ? $b->{'mtu'} : $config{'def_mtu'}; } else { printf "\n", $b && $b->{'mtu'} ? $b->{'mtu'} : $text{'ifcs_auto'}; } print "\n"; if (&can_edit("up", $b) && $access{'up'}) { printf "\n", $b && !$b->{'up'} ? "checked" : ""; } else { printf "\n", !$b ? $text{'yes'} : $b->{'up'} ? $text{'yes'} : $text{'no'}; } print "\n"; if ($b && $b->{'virtual'} eq "") { print "\n"; $vcount = 0; foreach $vb (@boot) { if ($vb->{'virtual'} ne "" && $vb->{'name'} eq $b->{'name'}) { $vcount++; } } print "\n"; } print "\n"; # Special parameters for teaming print "\n"; if($in{'bond'} or (&iface_type($b->{'name'}) eq 'Bonded')) { # Select bonding teampartner print "\n"; print "\n"; @mode = ("balance-rr", "activebackup", "balance-xor", "broadcast", "802.3ad", "balance-tlb", "balance-alb"); # Select teaming mode print "\n"; print "\n"; print "\n"; # Select mii Monitoring Interval print "\n"; print "\n"; # Select updelay print "\n"; print "\n"; print "\n"; print "\n"; # Select downdelay print "\n"; print "\n"; } print "\n"; # Special Parameter for vlan tagging if(($in{'vlan'}) or (&iface_type($b->{'name'}) =~ /^(.*) (VLAN)$/)) { $b->{'name'} =~ /(\S+)\.(\d+)/; $physical = $1; $vlanid = $2; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "
$text{'ifcs_desc'}", &ui_textbox("desc", $b ? $b->{'desc'} : undef, 60), "
$text{'ifcs_name'} \n"; if ($in{'new'} && $in{'virtual'}) { print "\n"; print "$in{'virtual'}:\n"; } elsif ($in{'new'}) { if($in{'vlan'} == 1) { print "auto"; print "" } else { print "\n"; } } else { print "$b->{'fullname'}\n"; } print "$text{'ifcs_ip'} \n"; $virtual = (!$b && $in{'virtual'}) || ($b && $b->{'virtual'} ne ""); $dhcp = &can_edit("dhcp") && !$virtual; $bootp = &can_edit("bootp") && !$virtual; if ($dhcp) { printf " %s\n", $b && $b->{'dhcp'} ? "checked" : "", $text{'ifcs_dhcp'}; } if ($bootp) { printf " %s\n", $b && $b->{'bootp'} ? "checked" : "", $text{'ifcs_bootp'}; } if ($dhcp || $bootp) { printf " %s\n", !$b || (!$b->{'bootp'} && !$b->{'dhcp'}) ? "checked" : "", $text{'ifcs_static'}; } else { print "\n"; } printf "
$text{'ifcs_mask'}$virtual_netmask%s$text{'ifcs_broad'}%s
$text{'ifcs_mtu'}%s$text{'ifcs_act'} $text{'yes'}\n", !$b || $b->{'up'} ? "checked" : ""; printf " $text{'no'}%s
$text{'ifcs_virts'}$vcount\n"; if ($access{'virt'} && !$noos_support_add_virtifcs) { print "(", "$text{'ifcs_addvirt'})\n"; } print "
$text{'bonding_teamparts'}\n"; print ""; print "$text{'bonding_teammode'}\n"; print "\n"; print "
$text{'bonding_miimon'}\n"; print "{'miimon'} . "\"/> ms\n"; print "$text{'bonding_updelay'}\n"; print "{'updelay'} . "\" /> ms\n"; print "
$text{'bonding_downdelay'}\n"; print "{'downdelay'} . "\" /> ms\n"; print "
$text{'vlan_physical'}\n"; if(!$in{'new'}) { print "$physical"; print "\n"; } else { print ""; } print "VLAN-ID\n"; if(!$in{'new'}) { print "$vlanid"; print "\n"; } else { print "\n"; print "
\n"; print "\n"; if ($access{'bootonly'}) { # Can only save both boot-time and active if ($in{'new'}) { print "\n"; } else { print "\n"; if ($access{'delete'}) { print "\n"; } } } else { # Show buttons to save both boot-time and/or active if ($in{'new'}) { print "\n"; print "\n"; } else { print "\n" unless $always_apply_ifcs; if (!($b->{'bootp'} || $b->{'dhcp'}) || defined(&apply_interface)) { print "\n"; } if ($access{'delete'}) { print "\n"; print "\n" unless $noos_support_delete_ifcs; } } } print "
\n"; &ui_print_footer("list_ifcs.cgi?mode=boot", $text{'ifcs_return'});