From cd1c36f7af530bcc7a32c844faec41cf384fe76d Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 27 Apr 2015 17:50:14 +0000 Subject: [PATCH] remove non-functional traffic shaper (dummynet) from legacy code related to recent kernel cleanup. This will be replaced with more standard components (schedule 15.7) --- src/etc/inc/filter.inc | 25 +- src/etc/inc/priv.defs.inc | 6 - src/etc/inc/shaper.inc | 1196 +---------------- src/etc/inc/upgrade_config.inc | 26 +- .../app/models/OPNsense/Base/Menu/Menu.xml | 1 - .../OPNsense/Core/ACL_Legacy_Page_Map.txt | 1 - src/www/firewall_rules_edit.php | 74 - src/www/firewall_shaper.php | 1 - src/www/firewall_shaper_layer7.php | 1 - src/www/firewall_shaper_queues.php | 1 - src/www/firewall_shaper_vinterface.php | 453 ------- src/www/firewall_shaper_wizards.php | 1 - src/www/guiconfig.inc | 4 - src/www/shortcuts.inc | 4 - 14 files changed, 6 insertions(+), 1788 deletions(-) delete mode 100644 src/www/firewall_shaper_vinterface.php diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc index a3fe8c3d6..9ba0b621f 100644 --- a/src/etc/inc/filter.inc +++ b/src/etc/inc/filter.inc @@ -160,7 +160,7 @@ function filter_delete_states_for_down_gateways() { function filter_configure_sync($delete_states_if_needed = true) { global $config, $g, $after_filter_configure_run, $FilterIflist; - global $time_based_rules, $filterdns, $aliases, $dummynet_name_list; + global $time_based_rules, $filterdns, $aliases; /* Use filter lock to not allow concurrent filter reloads during this run. */ $filterlck = lock('filter', LOCK_EX); @@ -186,8 +186,6 @@ function filter_configure_sync($delete_states_if_needed = true) if(file_exists("/var/run/booting")) echo "."; update_filter_reload_status(gettext("Generating Limiter rules")); - $dummynet_rules = filter_generate_dummynet_rules(); - $dummynet_name_list = get_unique_dnqueue_list(); update_filter_reload_status(gettext("Generating NAT rules")); /* generate nat rules */ $natrules = filter_nat_rules_generate(); @@ -2229,7 +2227,7 @@ function filter_generate_address(& $rule, $target = "source", $isnat = false) { function filter_generate_user_rule($rule) { global $config, $g, $FilterIflist, $GatewaysList; - global $layer7_rules_list, $dummynet_name_list; + global $layer7_rules_list; /* don't include disabled rules */ if(isset($rule['disabled'])) { @@ -2544,21 +2542,6 @@ function filter_generate_user_rule($rule) $aline['queue'] .= ",".$rule['ackqueue']; $aline['queue'] .= ") "; } - if($rule['dnpipe'] <> "") { - if (!empty($dummynet_name_list[$rule['dnpipe']])) { - if($dummynet_name_list[$rule['dnpipe']][0] == "?") { - $aline['dnpipe'] = " dnqueue( "; - $aline['dnpipe'] .= substr($dummynet_name_list[$rule['dnpipe']],1); - if($rule['pdnpipe'] <> "") - $aline['dnpipe'] .= ",".substr($dummynet_name_list[$rule['pdnpipe']], 1); - } else { - $aline['dnpipe'] = " dnpipe ( " . $dummynet_name_list[$rule['dnpipe']]; - if($rule['pdnpipe'] <> "") - $aline['dnpipe'] .= "," . $dummynet_name_list[$rule['pdnpipe']]; - } - $aline['dnpipe'] .= ") "; - } - } /* is a time based rule schedule attached? */ if(!empty($rule['sched']) && !empty($config['schedules'])) { @@ -2588,7 +2571,7 @@ function filter_generate_user_rule($rule) $aline['interface'] . $aline['ipprotocol'] . $aline['prot'] . $aline['src'] . $aline['os'] . $negate_networks . $aline['icmp-type'] . $aline['icmp6-type'] . $aline['tag'] . $aline['tagged'] . $aline['vlanprio'] . $aline['vlanprioset'] . $aline['dscp'] . $aline['allowopts'] . $aline['flags'] . - $aline['queue'] . $aline['dnpipe'] . $aline['schedlabel'] . + $aline['queue'] . $aline['schedlabel'] . " label \"NEGATE_ROUTE: Negate policy routing for destination\"\n"; } @@ -2596,7 +2579,7 @@ function filter_generate_user_rule($rule) $line .= $aline['type'] . $aline['direction'] . $aline['log'] . $aline['quick'] . $aline['interface'] . $aline['reply'] . $aline['route'] . $aline['ipprotocol'] . $aline['prot'] . $aline['src'] . $aline['os'] . $aline['dst'] . $aline['divert'] . $aline['icmp-type'] . $aline['icmp6-type'] . $aline['tag'] . $aline['tagged'] . $aline['dscp'] . - $aline['vlanprio'] . $aline['vlanprioset'] . $aline['allowopts'] . $aline['flags'] . $aline['queue'] . $aline['dnpipe'] . $aline['schedlabel']; + $aline['vlanprio'] . $aline['vlanprioset'] . $aline['allowopts'] . $aline['flags'] . $aline['queue'] . $aline['schedlabel']; unset($aline); diff --git a/src/etc/inc/priv.defs.inc b/src/etc/inc/priv.defs.inc index 6ad310d90..b595aa240 100644 --- a/src/etc/inc/priv.defs.inc +++ b/src/etc/inc/priv.defs.inc @@ -406,12 +406,6 @@ $priv_list['page-firewall-trafficshaper-queues']['descr'] = gettext("Allow acces $priv_list['page-firewall-trafficshaper-queues']['match'] = array(); $priv_list['page-firewall-trafficshaper-queues']['match'][] = "firewall_shaper_queues.php*"; -$priv_list['page-firewall-trafficshaper-limiter'] = array(); -$priv_list['page-firewall-trafficshaper-limiter']['name'] = gettext("WebCfg - Firewall: Traffic Shaper: Limiter page"); -$priv_list['page-firewall-trafficshaper-limiter']['descr'] = gettext("Allow access to the 'Firewall: Traffic Shaper: Limiter' page."); -$priv_list['page-firewall-trafficshaper-limiter']['match'] = array(); -$priv_list['page-firewall-trafficshaper-limiter']['match'][] = "firewall_shaper_vinterface.php*"; - $priv_list['page-firewall-trafficshaper-wizard'] = array(); $priv_list['page-firewall-trafficshaper-wizard']['name'] = gettext("WebCfg - Firewall: Traffic Shaper: Wizard page"); $priv_list['page-firewall-trafficshaper-wizard']['descr'] = gettext("Allow access to the 'Firewall: Traffic Shaper: Wizard' page."); diff --git a/src/etc/inc/shaper.inc b/src/etc/inc/shaper.inc index 3dc7f884c..d9059d0ec 100644 --- a/src/etc/inc/shaper.inc +++ b/src/etc/inc/shaper.inc @@ -56,28 +56,6 @@ function unset_object_by_reference(&$mypath) unset($ptr['queue'][$mypath[$i]]); } -function &get_dn_reference_to_me_in_config(&$mypath) -{ - global $config; - - $ptr =& $config['dnshaper']; - foreach ($mypath as $indeks) { - $ptr =& $ptr['queue'][$indeks]; - } - - return $ptr; -} - -function unset_dn_object_by_reference(&$mypath) -{ - global $config; - - $ptr =& $config['dnshaper']; - for ($i = 0; $i < count($mypath) - 1; $i++) { - $ptr =& $ptr['queue'][$mypath[$i]]; - } - unset($ptr['queue'][$mypath[$i]]); -} function clean_child_queues($type, $mypath) { @@ -205,18 +183,6 @@ function cleanup_queue_from_rules($queue) } } -function cleanup_dnqueue_from_rules($queue) -{ - global $config; - - foreach ($config['filter']['rule'] as $rule) { - if ($rule['dnpipe'] == $queue) - unset($rule['dnpipe']); - if ($rule['pdnpipe'] == $queue) - unset($rule['pdnpipe']); - } -} - class altq_root_queue { var $interface; var $tbrconfig ; @@ -2757,1013 +2723,6 @@ class fairq_queue extends priq_queue { } -/* - * dummynet(4) wrappers. - */ - - -/* - * List of respective objects! - */ -$dummynet_pipe_list = array(); - -class dummynet_class { - var $qname; - var $qnumber; /* dummynet(4) uses numbers instead of names; maybe integrate with pf the same as altq does?! */ - var $qlimit; - var $description; - var $qenabled; - var $link; - var $qparent; /* link to upper class so we do things easily on WF2Q+ rule creation */ - var $plr; - - var $buckets; - /* mask parameters */ - var $mask; - var $noerror; - - /* Accessor functions */ - function SetLink($link) { - $this->link = $link; - } - function GetLink() { - return $this->link; - } - function GetMask() { - if (!isset($this->mask["type"])) - $this->mask["type"] = "none"; - return $this->mask; - } - function SetMask($mask) { - $this->mask = $mask; - } - function &GetParent() { - return $this->qparent; - } - function SetParent(&$parent) { - $this->qparent = &$parent; - } - function GetEnabled() { - return $this->qenabled; - } - function SetEnabled($value) { - $this->qenabled = $value; - } - function CanHaveChildren() { - return false; - } - function CanBeDeleted() { - return true; - } - function GetQname() { - return $this->qname; - } - function SetQname($name) { - $this->qname = trim($name); - } - function GetQlimit() { - return $this->qlimit; - } - function SetQlimit($limit) { - $this->qlimit = $limit; - } - function GetDescription() { - return $this->description; - } - function SetDescription($str) { - $this->description = trim($str); - } - function GetFirstime() { - return $this->firsttime; - } - function SetFirsttime($number) { - $this->firsttime = $number; - } - function GetBuckets() { - return $this->buckets; - } - function SetBuckets($buckets) { - $this->buckets = $buckets; - } - function SetNumber($number) { - $this->qnumber = $number; - } - function GetNumber() { - return $this->qnumber; - } - function GetPlr() { - return $this->plr; - } - function SetPlr($plr) { - $this->plr = $plr; - } - - function build_javascript() { - $javascript .= "\n"; - return $javascript; - } - - function validate_input($data, &$input_errors) { - $reqdfields[] = "bandwidth"; - $reqdfieldsn[] = gettext("Bandwidth"); - $reqdfields[] = "burst"; - $reqdfieldsn[] = gettext("Burst"); - $reqdfields[] = "bandwidthtype"; - $reqdfieldsn[] = gettext("Bandwidthtype"); - $reqdfields[] = "newname"; - $reqdfieldsn[] = gettext("Name"); - - shaper_do_input_validation($data, $reqdfields, $reqdfieldsn, $input_errors); - - if ($data['plr'] && (!is_numeric($data['plr']) || - ($data['plr'] < 0) || ($data['plr'] > 1))) - $input_errors[] = gettext("Plr must be a value between 0 and 1."); - if ($data['buckets'] && (!is_numeric($data['buckets']) || - ($data['buckets'] < 16) || ($data['buckets'] > 65535))) - $input_errors[] = gettext("Buckets must be an integer between 16 and 65535."); - if ($data['qlimit'] && (!is_numeric($data['qlimit']))) - $input_errors[] = gettext("Queue limit must be an integer"); - if (!empty($data['newname']) && !preg_match("/^[a-zA-Z0-9_-]+$/", $data['newname'])) - $input_errors[] = gettext("Queue names must be alphanumeric and _ or - only."); - if (!empty($data['name']) && !preg_match("/^[a-zA-Z0-9_-]+$/", $data['name'])) - $input_errors[] = gettext("Queue names must be alphanumeric and _ or - only."); - if (isset($data['maskbits']) && ($data['maskbits'] <> "")) - if ((!is_numeric($data['maskbits'])) || ($data['maskbits'] <= 0) || ($data['maskbits'] > 32)) - $input_errors[] = gettext("IPV4 bit mask must be blank or numeric value between 1 and 32."); - if (isset($data['maskbitsv6']) && ($data['maskbitsv6'] <> "")) - if ((!is_numeric($data['maskbitsv6'])) || ($data['maskbitsv6'] <= 0) || ($data['maskbitsv6'] > 128)) - $input_errors[] = gettext("IPV6 bit mask must be blank or numeric value between 1 and 128."); - } - - function build_mask_rules(&$pfq_rule) { - $mask = $this->GetMask(); - if (!empty($mask['type'])) { - if ($mask['type'] <> 'none') - $pfq_rule .= " mask"; - switch ($mask['type']) { - case 'srcaddress': - if (!empty($mask['bitsv6']) && ($mask['bitsv6'] <> "")) - $pfq_rule .= " src-ip6 /" . $mask['bitsv6']; - else - $pfq_rule .= " src-ip6 /128"; - if (!empty($mask['bits']) && ($mask['bits'] <> "")) - $pfq_rule .= sprintf(" src-ip 0x%x", gen_subnet_mask_long($mask['bits'])); - else - $pfq_rule .= " src-ip 0xffffffff"; - break; - case 'dstaddress': - if (!empty($mask['bitsv6']) && ($mask['bitsv6'] <> "")) - $pfq_rule .= " dst-ip6 /" . $mask['bitsv6']; - else - $pfq_rule .= " dst-ip6 /128"; - if (!empty($mask['bits']) && ($mask['bits'] <> "")) - $pfq_rule .= sprintf(" dst-ip 0x%x", gen_subnet_mask_long($mask['bits'])); - else - $pfq_rule .= " dst-ip 0xffffffff"; - break; - default: - break; - } - } - } - -} - -class dnpipe_class extends dummynet_class { - var $delay; - var $qbandwidth = array(); - var $qbandwidthtype; - - /* This is here to help on form building and building rules/lists */ - var $subqueues = array(); - - function CanHaveChildren() { - return true; - } - function SetDelay($delay) { - $this->delay = $delay; - } - function GetDelay() { - return $this->delay; - } - function delete_queue() { - cleanup_dnqueue_from_rules($this->GetQname()); - foreach ($this->subqueues as $q) - $q->delete_queue(); - unset_dn_object_by_reference($this->GetLink()); - // TODO: re-enable after kernel fix for dummynet - // @pfSense_pipe_action("pipe delete " . $this->GetNumber()); - } - function GetBandwidth() { - return $this->qbandwidth; - } - function SetBandwidth($bandwidth) { - $this->qbandwidth = $bandwidth; - } - function GetBurst() { - return $this->qburst; - } - function SetBurst($burst) { - $this->qburst = $burst; - } - - function &add_queue($interface, &$queue, &$path, &$input_errors) { - - if (!is_array($this->subqueues)) - $this->subqueues = array(); - - $q =& new dnqueue_class(); - $q->SetLink($path); - $q->SetEnabled("on"); - $q->SetPipe($this->GetQname()); - $q->SetParent($this); - $q->ReadConfig($queue); - $q->validate_input($queue, $input_errors); - if (count($input_errors)) { - log_error("SHAPER: could not create queue " . $q->GetQname() . " on interface {$interface} because: " . print_r($input_errors, true)); - return $q; - } - $number = dnqueue_find_nextnumber(); - $q->SetNumber($number); - $this->subqueues[$q->GetQname()] = &$q; - - return $q; - } - - function &get_queue_list(&$q = null) { - $qlist = array(); - - $qlist[$this->GetQname()] = $this->GetNumber(); - if (is_array($this->subqueues)) { - foreach ($this->subqueues as $queue) - $queue->get_queue_list($qlist); - } - return $qlist; - } - - /* - * Should search even its children - */ - function &find_queue($pipe, $qname) { - if ($qname == $this->GetQname()) - return $this; - foreach ($this->subqueues as $q) { - $result =& $q->find_queue("", $qname); - if ($result) - return $result; - } - } - - function &find_parentqueue($pipe, $qname) { - return NULL; - } - - function validate_input($data, &$input_errors) { - parent::validate_input($data, $input_errors); - - $schedule = 0; - $schedulenone = 0; - $entries = 0; - for ($i = 0; $i < 30; $i++) { - if (!empty($data["bwsched{$i}"])) { - if ($data["bwsched{$i}"] != "none") - $schedule++; - else - $schedulenone++; - } - if (!empty($data["bandwidth{$i}"])) { - if (!is_numeric($data["bandwidth{$i}"])) - $input_errors[] = sprintf(gettext("Bandwidth for schedule %s must be an integer."), $data["bwsched{$i}"]); - else if (($data["burst{$i}"] != "") && (!is_numeric($data["burst{$i}"]))) - $input_errors[] = sprintf(gettext("Burst for schedule %s must be an integer."), $data["bwsched{$i}"]); - else - $entries++; - } - } - if ($schedule == 0 && $entries > 1) - $input_errors[] = gettext("You need to specify a schedule for every additional entry"); - if ($schedulenone > 0 && $entries > 1) - $input_errors[] = gettext("If more than one bandwidth configured all schedules need to be selected"); - if ($entries == 0) - $input_errors[] = gettext("At least one bw specification is necessary"); - if ($data['delay'] && (!is_numeric($data['delay']))) - $input_errors[] = gettext("Delay must be an integer."); - } - - function ReadConfig(&$q) { - if (!empty($q['name']) && !empty($q['newname']) && $q['name'] != $q['newname']) { - $this->SetQname($q['newname']); - } else if (!empty($q['newname'])) { - $this->SetQname($q['newname']); - } else { - $this->SetQname($q['name']); - } - $this->SetNumber($q['number']); - - if (!empty($_POST)) { - $bandwidth = array(); - for ($i = 0; $i < 30; $i++) { - if (isset($q["bandwidth{$i}"]) && $q["bandwidth{$i}"] <> "") { - $bw = array(); - $bw['bw'] = $q["bandwidth{$i}"]; - $bw['burst'] = $q["burst{$i}"]; - if (isset($q["bwtype{$i}"]) && $q["bwtype{$i}"]) - $bw['bwscale'] = $q["bwtype{$i}"]; - if (isset($q["bwsched{$i}"]) && $q["bwsched{$i}"]) - $bw['bwsched'] = $q["bwsched{$i}"]; - $bandwidth[] = $bw; - } - } - $this->SetBandwidth($bandwidth); - } - - if (is_array($q['bandwidth']) && is_array($q['bandwidth']['item'])) { - $this->SetBandwidth($q['bandwidth']['item']); - $this->SetBurst($q['burst']['item']); - } - - if (isset($q['qlimit']) && $q['qlimit'] <> "") - $this->SetQlimit($q['qlimit']); - else - $this->SetQlimit(""); - if (isset($q['mask']) && $q['mask'] <> "") - $masktype = $q['mask']; - else - $masktype = ""; - if (isset($q['maskbits']) && $q['maskbits'] <> "") - $maskbits = $q['maskbits']; - else - $maskbits = ""; - if (isset($q['maskbitsv6']) && $q['maskbitsv6'] <> "") - $maskbitsv6 = $q['maskbitsv6']; - else - $maskbitsv6 = ""; - $this->SetMask(array("type" => $masktype, "bits" => $maskbits, "bitsv6" => $maskbitsv6)); - if (isset($q['buckets']) && $q['buckets'] <> "") - $this->SetBuckets($q['buckets']); - else - $this->SetBuckets(""); - if (isset($q['plr']) && $q['plr'] <> "") - $this->SetPlr($q['plr']); - else - $this->SetPlr(""); - if (isset($q['delay']) && $q['delay'] <> "") - $this->SetDelay($q['delay']); - else - $this->SetDelay(0); - if (isset($q['description']) && $q['description'] <> "") - $this->SetDescription($q['description']); - else - $this->SetDescription(""); - $this->SetEnabled($q['enabled']); - - } - - function build_tree() { - $tree = "
  • GetQname() ."&queue=".$this->GetQname() ."&action=show\">"; - $tree .= $this->GetQname() . ""; - if (is_array($this->subqueues)) { - $tree .= ""; - } - $tree .= "
  • "; - - return $tree; - } - - function build_rules() { - global $config, $time_based_rules; - - if ($this->GetEnabled() == "") - return; - - $pfq_rule = "\npipe ". $this->GetNumber() . " config "; - $found = false; - $bandwidth = $this->GetBandwidth(); - if (is_array($bandwidth)) { - foreach ($bandwidth as $bw) { - if ($bw['bwsched'] != "none") { - $time_based_rules = true; - if (is_array($config['schedules']) && is_array($config['schedules']['schedule'])) { - foreach ($config['schedules']['schedule'] as $schedule) { - if ($bw['bwsched'] == $schedule['name']) { - if (filter_get_time_based_rule_status($schedule)) { - $pfq_rule .= " bw ".trim($bw['bw']).$bw['bwscale']; - if (is_numeric($bw['burst']) && ($bw['burst'] > 0)) - $pfq_rule .= " burst ".trim($bw['burst']); - $found = true; - break; - } - } - } - } else { - $pfq_rule .= " bw 0"; - $found = true; - break; - } - } else { - $pfq_rule .= " bw ".trim($bw['bw']).$bw['bwscale']; - if (is_numeric($bw['burst']) && ($bw['burst'] > 0)) - $pfq_rule .= " burst ".trim($bw['burst']); - $found = true; - break; - } - } - if ($found == false) - $pfq_rule .= " bw 0"; - } else - $pfq_rule .= " bw 0"; - - if ($this->GetQlimit()) - $pfq_rule .= " queue " . $this->GetQlimit(); - if ($this->GetPlr()) - $pfq_rule .= " plr " . $this->GetPlr(); - if ($this->GetBuckets()) - $pfq_rule .= " buckets " . $this->GetBuckets(); - if ($this->GetDelay()) - $pfq_rule .= " delay " . $this->GetDelay(); - $this->build_mask_rules($pfq_rule); - - $pfq_rule .= "\n"; - - if (!empty($this->subqueues) && count($this->subqueues) > 0) { - foreach ($this->subqueues as $q) - $pfq_rule .= $q->build_rules(); - } - $pfq_rule .= " \n"; - - return $pfq_rule; - } - - function update_dn_data(&$data) { - $this->ReadConfig($data); - } - - function build_javascript() { - global $g, $config; - - $javasr = parent::build_javascript(); - - //build list of schedules - $schedules = ""; - if (is_array($config['schedules']) && is_array($config['schedules']['schedule'])) { - foreach ($config['schedules']['schedule'] as $schedule) { - if ($schedule['name'] <> "") - $schedules .= ""; - } - } - $bwopt = ""; - foreach (array("Kb" => "Kbit/s", "Mb" => "Mbit/s", "Gb" => "Gbit/s", "b" => "Bit/s") as $bwidx => $bw) - $bwopt .= ""; - - $javasr .= << -//"; - tr.appendChild(td); - td = d.createElement("td"); - td.innerHTML=""; - tr.appendChild(td); - td = d.createElement("td"); - td.innerHTML=""; - tr.appendChild(td); - td = d.createElement("td"); - td.innerHTML=""; - tr.appendChild(td); - td = d.createElement("td"); - td.rowSpan = "1"; - td.innerHTML = ''; - tr.appendChild(td); - tbody.appendChild(tr); - totalrows++; - }); -})(); - -function removeBwRow(el) { - var cel; - while (el && el.nodeName.toLowerCase() != "tr") - el = el.parentNode; - if (el && el.parentNode) { - cel = el.getElementsByTagName("td").item(0); - el.parentNode.removeChild(el); - } -} -//]]> - - -EOD; - - return $javasr; - } - - function build_form() { - global $g, $config; - - //build list of schedules - $schedules = array(); - $schedules[] = "none";//leave none to leave rule enabled all the time - if (is_array($config['schedules']) && is_array($config['schedules']['schedule'])) { - foreach ($config['schedules']['schedule'] as $schedule) { - if ($schedule['name'] <> "") - $schedules[] = $schedule['name']; - } - } - - $form = "
    "; - $form .= gettext("Enable"); - $form .= ""; - $form .= " GetEnabled() == "on") - $form .= " checked=\"checked\""; - $form .= " /> " . gettext("Enable limiter and its children") . ""; - $form .= ""; - $form .= "
    " . gettext("Name") . ""; - $form .= ""; - $form .= "GetQname()."\" />"; - $form .= "GetQname()."\" />"; - if ($this->GetNumber() > 0) { - $form .= "GetNumber()."\" />"; - } - $form .= ""; - $form .= "" . gettext("Bandwidth"); - $bandwidth = $this->GetBandwidth(); - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - if (is_array($bandwidth)) { - foreach ($bandwidth as $bwidx => $bw) { - $form .= "\n"; - } - } - $form .= "
    Bandwidth
    Burst
    Bw type
    Schedule
    "; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= "
    "; - $form .= ""; - $form .= ""; - $form .= "
    " . gettext("Bandwidth is a rate (e.g. Mbit/s), burst is a total amount of data that will be transferred at full speed after an idle period.") . "
    "; - $form .= ""; - $form .= "" . gettext("Mask") . ""; - $form .= ""; - $form .= ""; - $form .= " 
    "; - $form .= "" . gettext("If 'source' or 'destination' slots is chosen, \n" - . "a dynamic pipe with the bandwidth, delay, packet loss and queue size given above will \n" - . "be created for each source/destination IP address encountered, \n" - . "respectively. This makes it possible to easily specify bandwidth \n" - . "limits per host.") . "
    "; - $form .= "255.255.255.255/  "none") - $form .= $mask['bits']; - $form .= "\""; - if ($mask['type'] == "none") - $form .= " disabled"; - $form .= " />"; - $form .= "  IPV4 mask bits (1-32)
    "; - $form .= "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/  "none") - $form .= $mask['bitsv6']; - $form .= "\""; - if ($mask['type'] == "none") - $form .= " disabled"; - $form .= " />"; - $form .= "  IPV6 mask bits (1-128)
    "; - $form .= "" . gettext("If 'source' or 'destination' slots is chosen, \n" - . "leaving the mask bits blank will create one pipe per host. Otherwise specify \n" - . "the number of 'one' bits in the subnet mask used to group multiple hosts \n" - . "per pipe.") . ""; - $form .= ""; - $form .= "" . gettext("Description") . ""; - $form .= ""; - $form .= "GetDescription(); - $form .= "\" />"; - $form .= "
    "; - $form .= gettext("You may enter a description here for your reference (not parsed).") . ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= "
    "; - $form .= "

    "; - $form .= "

    "; - $form .= ""; - - $form .= "" . gettext("Delay") . ""; - $form .= ""; - $form .= "GetDelay() . "\" />"; - $form .= " ms
    " . gettext("Hint: in most cases, you " - . "should specify 0 here (or leave the field empty)") . "
    "; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Packet loss rate") . ""; - $form .= ""; - $form .= "GetPlr() . "\" />"; - $form .= " 
    " . gettext("Hint: in most cases, you " - . "should specify 0 here (or leave the field empty). " - . "A value of 0.001 means one packet in 1000 gets dropped") . ""; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Queue Size") . ""; - $form .= ""; - $form .= "GetQlimit() . "\" />"; - $form .= " slots
    "; - $form .= "" . gettext("Hint: in most cases, you " - . "should leave the field empty. All packets in this pipe are placed into a fixed-size queue first, " - . "then they are delayed by value specified in the Delay field, and then they " - . "are delivered to their destination.") . ""; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Bucket Size") . ""; - $form .= ""; - $form .= "GetBuckets() . "\" />"; - $form .= " slots
    "; - $form .= "" . gettext("Hint: in most cases, you " - . "should leave the field empty. It increases the hash size set."); - $form .= ""; - - return $form; - - } - - function wconfig() { - $cflink =& get_dn_reference_to_me_in_config($this->GetLink()); - if (!is_array($cflink)) - $cflink = array(); - $cflink['name'] = $this->GetQname(); - $cflink['number'] = $this->GetNumber(); - $cflink['qlimit'] = $this->GetQlimit(); - $cflink['plr'] = $this->GetPlr(); - $cflink['description'] = $this->GetDescription(); - - $bandwidth = $this->GetBandwidth(); - if (is_array($bandwidth)) { - $cflink['bandwidth'] = array(); - $cflink['bandwidth']['item'] = array(); - foreach ($bandwidth as $bwidx => $bw) - $cflink['bandwidth']['item'][] = $bw; - } - - $cflink['enabled'] = $this->GetEnabled(); - $cflink['buckets'] = $this->GetBuckets(); - $mask = $this->GetMask(); - $cflink['mask'] = $mask['type']; - $cflink['maskbits'] = $mask['bits']; - $cflink['maskbitsv6'] = $mask['bitsv6']; - $cflink['delay'] = $this->GetDelay(); - } - -} - -class dnqueue_class extends dummynet_class { - var $pipeparent; - var $weight; - - function GetWeight() { - return $this->weight; - } - function SetWeight($weight) { - $this->weight = $weight; - } - function GetPipe() { - return $this->pipeparent; - } - function SetPipe($pipe) { - $this->pipeparent = $pipe; - } - - /* Just a stub in case we ever try to call this from the frontend. */ - function &add_queue($interface, &$queue, &$path, &$input_errors) { return; } - - function delete_queue() { - cleanup_dnqueue_from_rules($this->GetQname()); - unset_dn_object_by_reference($this->GetLink()); - // TODO: re-enable after kernel fix for dummynet - // @pfSense_pipe_action("queue delete " . $this->GetNumber()); - } - - function validate_input($data, &$input_errors) { - parent::validate_input($data, $input_errors); - - if ($data['weight'] && ((!is_numeric($data['weight'])) || - ($data['weight'] < 1 && $data['weight'] > 100))) - $input_errors[] = gettext("Weight must be an integer between 1 and 100."); - } - - /* - * Should search even its children - */ - function &find_queue($pipe, $qname) { - if ($qname == $this->GetQname()) - return $this; - else - return NULL; - } - - function &find_parentqueue($pipe, $qname) { - return $this->qparent; - } - - function &get_queue_list(&$qlist) { - if ($this->GetEnabled() == "") - return; - $qlist[$this->GetQname()] = "?" .$this->GetNumber(); - } - - function ReadConfig(&$q) { - if (!empty($q['name']) && !empty($q['newname']) && $q['name'] != $q['newname']) { - $this->SetQname($q['newname']); - } else if (!empty($q['newname'])) { - $this->SetQname($q['newname']); - } else { - $this->SetQname($q['name']); - } - $this->SetNumber($q['number']); - if (isset($q['qlimit']) && $q['qlimit'] <> "") - $this->SetQlimit($q['qlimit']); - else - $this->SetQlimit(""); - if (isset($q['mask']) && $q['mask'] <> "") - $masktype = $q['mask']; - else - $masktype = ""; - if (isset($q['maskbits']) && $q['maskbits'] <> "") - $maskbits = $q['maskbits']; - else - $maskbits = ""; - if (isset($q['maskbitsv6']) && $q['maskbitsv6'] <> "") - $maskbitsv6 = $q['maskbitsv6']; - else - $maskbitsv6 = ""; - $this->SetMask(array("type" => $masktype, "bits" => $maskbits, "bitsv6" => $maskbitsv6)); - if (isset($q['buckets']) && $q['buckets'] <> "") - $this->SetBuckets($q['buckets']); - else - $this->SetBuckets(""); - if (isset($q['plr']) && $q['plr'] <> "") - $this->SetPlr($q['plr']); - else - $this->SetPlr(""); - if (isset($q['weight']) && $q['weight'] <> "") - $this->SetWeight($q['weight']); - else - $this->SetWeight(""); - if (isset($q['description']) && $q['description'] <> "") - $this->SetDescription($q['description']); - else - $this->SetDescription(""); - $this->SetEnabled($q['enabled']); - } - - function build_tree() { - $parent =& $this->GetParent(); - $tree = "
  • GetQname() ."&queue=" . $this->GetQname() ."&action=show\">"; - $tree .= $this->GetQname() . ""; - $tree .= "
  • "; - - return $tree; - } - - function build_rules() { - if ($this->GetEnabled() == "") - return; - - $parent =& $this->GetParent(); - $pfq_rule = "queue ". $this->GetNumber() . " config pipe " . $parent->GetNumber(); - if ($this->GetQlimit()) - $pfq_rule .= " queue " . $this->GetQlimit(); - if ($this->GetWeight()) - $pfq_rule .= " weight " . $this->GetWeight(); - if ($this->GetBuckets()) - $pfq_rule .= " buckets " . $this->GetBuckets(); - $this->build_mask_rules($pfq_rule); - $pfq_rule .= "\n"; - - return $pfq_rule; - } - - function build_javascript() { - return parent::build_javascript(); - } - - - function build_form() { - $form = "
    "; - $form .= gettext("Enable/Disable"); - $form .= ""; - $form .= " GetEnabled() == "on") - $form .= " checked=\"checked\""; - $form .= " /> " . gettext("Enable/Disable queue") . ""; - $form .= ""; - $form .= "
    " . gettext("Name") . ""; - $form .= ""; - $form .= "GetQname()."\" />"; - $form .= "GetQname()."\" />"; - if ($this->GetNumber() > 0) { - $form .= "GetNumber()."\" />"; - } - $form .= ""; - $form .= "" . gettext("Mask") . ""; - $form .= ""; - $form .= ""; - $form .= " slots
    "; - $form .= "" . gettext("If 'source' or 'destination' slots is chosen, \n" - . "a dynamic pipe with the bandwidth, delay, packet loss and queue size given above will \n" - . "be created for each source/destination IP address encountered, \n" - . "respectively. This makes it possible to easily specify bandwidth \n" - . "limits per host.") . "
    "; - $form .= "255.255.255.255/  "none") - $form .= $mask['bits']; - $form .= "\""; - if ($mask['type'] == "none") - $form .= " disabled"; - $form .= " />"; - $form .= "  IPV4 mask bits (1-32)
    "; - $form .= "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/  "none") - $form .= $mask['bitsv6']; - $form .= "\""; - if ($mask['type'] == "none") - $form .= " disabled"; - $form .= " />"; - $form .= "  IPV6 mask bits (1-128)
    "; - $form .= "" . gettext("If 'source' or 'destination' slots is chosen, \n" - . "leaving the mask bits blank will create one pipe per host. Otherwise specify \n" - . "the number of 'one' bits in the subnet mask used to group multiple hosts \n" - . "per queue.") . ""; - $form .= ""; - $form .= "" . gettext("Description") . ""; - $form .= ""; - $form .= "GetDescription(); - $form .= "\" />"; - $form .= "
    "; - $form .= gettext("You may enter a description here for your reference (not parsed).") . ""; - $form .= ""; - $form .= ""; - $form .= ""; - $form .= "
    "; - $form .= "

    "; - $form .= "

    "; - $form .= ""; - $form .= "" . gettext("Weight") . ""; - $form .= ""; - $form .= "GetWeight() . "\" />"; - $form .= " 
    " . gettext("Hint: For queues under the same parent " - . "this specifies the share that a queue gets(values range from 1 to 100, you can leave it blank otherwise)") . ""; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Packet loss rate") . ""; - $form .= ""; - $form .= "GetPlr() . "\" />"; - $form .= " 
    " . gettext("Hint: in most cases, you " - . "should specify 0 here (or leave the field empty). " - . "A value of 0.001 means one packet in 1000 gets dropped") . ""; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Queue Size") . ""; - $form .= ""; - $form .= "GetQlimit() . "\" />"; - $form .= " slots
    "; - $form .= "" . gettext("Hint: in most cases, you " - . "should leave the field empty. All packets in this pipe are placed into a fixed-size queue first, " - . "then they are delayed by value specified in the Delay field, and then they " - . "are delivered to their destination.") . ""; - $form .= ""; - $form .= ""; - $form .= "" . gettext("Bucket Size") . ""; - $form .= ""; - $form .= "GetBuckets() . "\" />"; - $form .= " " . gettext("slots") . "
    "; - $form .= "" . gettext("Hint: in most cases, you " - . "should leave the field empty. It increases the hash size set."); - $form .= ""; - - $form .= "GetPipe() . "\" />"; - - return $form; - - } - - function update_dn_data(&$data) { - $this->ReadConfig($data); - } - - function wconfig() { - $cflink =& get_dn_reference_to_me_in_config($this->GetLink()); - if (!is_array($cflink)) - $cflink = array(); - $cflink['name'] = $this->GetQname(); - $cflink['number'] = $this->GetNumber(); - $cflink['qlimit'] = $this->GetQlimit(); - $cflink['description'] = $this->GetDescription(); - $cflink['weight'] = $this->GetWeight(); - $cflink['enabled'] = $this->GetEnabled(); - $cflink['buckets'] = $this->GetBuckets(); - $mask = $this->GetMask(); - $cflink['mask'] = $mask['type']; - $cflink['maskbits'] = $mask['bits']; - $cflink['maskbitsv6'] = $mask['bitsv6']; - } -} - // List of layer7 objects $layer7_rules_list = array(); @@ -3930,12 +2889,10 @@ class layer7 { //This function is necessary to help producing the overload options for keep state function get_unique_structures() { - $unique_structures = array("action" => false, "dummynet" => false, "altq" => false); + $unique_structures = array("action" => false, "altq" => false); foreach($this->rsets as $l7rule) { if($l7rule->GetRStructure() == "action") $unique_structures['action'] = true; - else if($l7rule->GetRStructure() == "limiter") - $unique_structures['dummynet'] = true; else $unique_structures['altq'] = true; } @@ -3992,10 +2949,8 @@ class l7rule { //XXX Do we need to test any particularity for AltQ queues? function build_rules() { - global $dummynet_pipe_list; switch ($this->GetRStructure()) { case "limiter": - read_dummynet_config(); $dn_list =& get_unique_dnqueue_list(); $found = false; if(is_array($dn_list)) { @@ -4190,17 +3145,6 @@ function cleanup_l7_from_rules(&$name) { } } -function get_dummynet_name_list() { - - $dn_name_list =& get_unique_dnqueue_list(); - $dn_name = array(); - if(is_array($dn_name_list)) - foreach($dn_name_list as $key => $value) - $dn_name[] = $key; - - return $dn_name; - -} function get_altq_name_list() { $altq_name_list =& get_unique_queue_list(); @@ -4264,23 +3208,6 @@ function &get_unique_queue_list() { return $qlist; } -function &get_unique_dnqueue_list() { - global $dummynet_pipe_list; - - $qlist = array(); - if (is_array($dummynet_pipe_list)) { - foreach ($dummynet_pipe_list as $dn) { - if ($dn->GetEnabled() == "") - continue; - $tmplist =& $dn->get_queue_list(); - foreach ($tmplist as $qname => $link) { - $qlist[$qname] = $link; - } - } - } - return $qlist; -} - function ref_on_altq_queue_list($parent, $qname) { if (isset($GLOBALS['queue_list'][$qname])) $GLOBALS['queue_list'][$qname]++; @@ -4331,44 +3258,6 @@ function read_altq_config() { } } -function read_dummynet_config() { - global $dummynet_pipe_list, $config; - $path = array(); - - if (!is_array($config['dnshaper'])) - $config['dnshaper'] = array(); - if (!is_array($config['dnshaper']['queue'])) - $config['dnshaper']['queue'] = array(); - $a_int = &$config['dnshaper']['queue']; - - $dummynet_pipe_list = array(); - - if (!is_array($config['dnshaper']['queue']) - || !count($config['dnshaper']['queue'])) - return; - - foreach ($a_int as $key => $conf) { - if (empty($conf['name'])) - continue; /* XXX: grrrrrr at php */ - $root =& new dnpipe_class(); - $root->ReadConfig($conf); - $dummynet_pipe_list[$root->GetQname()] = &$root; - array_push($path, $key); - $root->SetLink($path); - if (is_array($conf['queue'])) { - foreach ($conf['queue'] as $key1 => $q) { - array_push($path, $key1); - /* - * XXX: we completely ignore errors here but anyway we must have - * checked them before so no harm should be come from this. - */ - $root->add_queue($root->GetQname(), $q, $path, $input_errors); - array_pop($path); - } - } - array_pop($path); - } -} function get_interface_list_to_show() { global $altq_list_queues, $config; @@ -4400,89 +3289,6 @@ function filter_generate_altq_queues() { return $altq_rules; } -function dnqueue_find_nextnumber() { - global $dummynet_pipe_list; - - $dnused = array(); - if (is_array($dummynet_pipe_list)) { - foreach ($dummynet_pipe_list as $dn) { - $tmplist =& $dn->get_queue_list(); - foreach ($tmplist as $qname => $link) { - if ($link[0] == "?") - $dnused[$qname] = substr($link, 1); - } - } - } - - sort($dnused, SORT_NUMERIC); - $dnnumber = 0; - $found = false; - foreach ($dnused as $dnnum) { - if (($dnnum - $dnnumber) > 1) { - $dnnumber = $dnnum + 1; - $found = true; - break; - } else - $dnnumber = $dnnum; - } - - if ($found == false) - $dnnumber++; - - unset($dnused, $dnnum, $found); - return $dnnumber; -} - -function dnpipe_find_nextnumber() { - global $dummynet_pipe_list; - - $dnused = array(); - foreach ($dummynet_pipe_list as $dn) - $dnused[] = $dn->GetNumber(); - - sort($dnused, SORT_NUMERIC); - $dnnumber = 0; - $found = false; - foreach ($dnused as $dnnum) { - if (($dnnum - $dnnumber) > 1) { - $dnnumber = $dnnum + 1; - $found = true; - break; - } else - $dnnumber = $dnnum; - } - - if ($found == false) - $dnnumber++; - - unset($dnused, $dnnum, $found); - return $dnnumber; -} - -function filter_generate_dummynet_rules() { -// TODO: re-enable after kernel fix for dummynet -return; - global $g, $dummynet_pipe_list; - - read_dummynet_config(); - - $dn_rules = ""; - foreach ($dummynet_pipe_list as $dn) - $dn_rules .= $dn->build_rules(); - - if (!empty($dn_rules)) { - if (!is_module_loaded("dummynet.ko")) { - mwexec("/sbin/kldload dummynet"); - set_sysctl(array( - "net.inet.ip.dummynet.io_fast" => "1", - "net.inet.ip.dummynet.hash_size" => "256" - )); - } - file_put_contents('/tmp/rules.limiter', $dn_rules); - mwexec('/sbin/ipfw /tmp/rules.limiter'); - } -} - function build_iface_without_this_queue($iface, $qname) { global $g, $altq_list_queues; global $shaperIFlist; diff --git a/src/etc/inc/upgrade_config.inc b/src/etc/inc/upgrade_config.inc index 6b2a00bed..a84696c99 100644 --- a/src/etc/inc/upgrade_config.inc +++ b/src/etc/inc/upgrade_config.inc @@ -2813,7 +2813,7 @@ function upgrade_085_to_086() { } function upgrade_086_to_087() { - global $config, $dummynet_pipe_list; + global $config; if (!is_array($config['filter']) || !is_array($config['filter']['rule'])) return; @@ -2836,30 +2836,6 @@ function upgrade_086_to_087() { unset($dnqueue_number, $dnpipe_number, $qidx, $idx, $dnpipe, $dnqueue); - require_once("shaper.inc"); - read_dummynet_config(); - - $dn_list = array(); - if (is_array($dummynet_pipe_list)) { - foreach ($dummynet_pipe_list as $dn) { - $tmplist =& $dn->get_queue_list(); - foreach ($tmplist as $qname => $link) { - $dn_list[$link] = $qname; - } - } - unset($dummynet_pipe_list); - } - - foreach ($config['filter']['rule'] as $idx => $rule) { - if (!empty($rule['dnpipe'])) { - if (!empty($dn_list[$rule['dnpipe']])) - $config['filter']['rule'][$idx]['dnpipe'] = $dn_list[$rule['dnpipe']]; - } - if (!empty($rule['pdnpipe'])) { - if (!empty($dn_list[$rule['pdnpipe']])) - $config['filter']['rule'][$idx]['pdnpipe'] = $dn_list[$rule['pdnpipe']]; - } - } } function upgrade_087_to_088() { diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml index 91a721bdb..d33d7a66e 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml @@ -64,7 +64,6 @@ - diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.txt b/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.txt index fa88c416d..7be1cd8d5 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.txt +++ b/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.txt @@ -65,7 +65,6 @@ page-firewall-schedules-edit=firewall_schedule_edit.php* page-firewall-trafficshaper=firewall_shaper.php* page-firewall-trafficshaper-layer7=firewall_shaper_layer7.php* page-firewall-trafficshaper-queues=firewall_shaper_queues.php* -page-firewall-trafficshaper-limiter=firewall_shaper_vinterface.php* page-firewall-trafficshaper-wizard=firewall_shaper_wizards.php* page-firewall-virtualipaddresses=firewall_virtual_ip.php* page-firewall-virtualipaddress-edit=firewall_virtual_ip_edit.php* diff --git a/src/www/firewall_rules_edit.php b/src/www/firewall_rules_edit.php index b252c814c..534ea3c86 100644 --- a/src/www/firewall_rules_edit.php +++ b/src/www/firewall_rules_edit.php @@ -208,8 +208,6 @@ if (isset($id) && $a_filter[$id]) { /* Shaper support */ $pconfig['defaultqueue'] = (($a_filter[$id]['ackqueue'] == "none") ? '' : $a_filter[$id]['defaultqueue']); $pconfig['ackqueue'] = (($a_filter[$id]['ackqueue'] == "none") ? '' : $a_filter[$id]['ackqueue']); - $pconfig['dnpipe'] = (($a_filter[$id]['dnpipe'] == "none") ? '' : $a_filter[$id]['dnpipe']); - $pconfig['pdnpipe'] = (($a_filter[$id]['pdnpipe'] == "none") ? '' : $a_filter[$id]['pdnpipe']); $pconfig['l7container'] = (($a_filter[$id]['l7container'] == "none") ? '' : $a_filter[$id]['l7container']); //schedule support @@ -236,8 +234,6 @@ if (isset($_GET['dup']) && is_numericint($_GET['dup'])) read_altq_config(); /* XXX: */ $qlist =& get_unique_queue_list(); -read_dummynet_config(); /* XXX: */ -$dnqlist =& get_unique_dnqueue_list(); read_layer7_config(); $l7clist =& get_l7_unique_list(); $a_gatewaygroups = return_gateway_groups_array(); @@ -484,22 +480,8 @@ if ($_POST) { else if ($_POST['ackqueue'] == $_POST['defaultqueue']) $input_errors[] = gettext("Acknowledge queue and Queue cannot be the same."); } - if (isset($_POST['floating']) && $_POST['pdnpipe'] != "" && (empty($_POST['direction']) || $_POST['direction'] == "any")) - $input_errors[] = gettext("You can not use limiters in Floating rules without choosing a direction."); if (isset($_POST['floating']) && $_POST['gateway'] != "" && (empty($_POST['direction']) || $_POST['direction'] == "any")) $input_errors[] = gettext("You can not use gateways in Floating rules without choosing a direction."); - if ($_POST['pdnpipe'] && $_POST['pdnpipe'] != "") { - if ($_POST['dnpipe'] == "" ) - $input_errors[] = gettext("You must select a queue for the In direction before selecting one for Out too."); - else if ($_POST['pdnpipe'] == $_POST['dnpipe']) - $input_errors[] = gettext("In and Out Queue cannot be the same."); - else if ($dnqlist[$_POST['pdnpipe']][0] == "?" && $dnqlist[$_POST['dnpipe']][0] <> "?") - $input_errors[] = gettext("You cannot select one queue and one virtual interface for IN and Out. both must be from the same type."); - else if ($dnqlist[$_POST['dnpipe']][0] == "?" && $dnqlist[$_POST['pdnpipe']][0] <> "?") - $input_errors[] = gettext("You cannot select one queue and one virtual interface for IN and Out. both must be from the same type."); - if ($_POST['direction'] == "out" && empty($_POST['gateway'])) - $input_errors[] = gettext("Please select a gateway, normaly the interface selected gateway, so the limiters work correctly"); - } if( !empty($_POST['ruleid']) && !ctype_digit($_POST['ruleid'])) $input_errors[] = gettext('ID must be an integer'); if($_POST['l7container'] && $_POST['l7container'] != "") { @@ -705,12 +687,6 @@ if ($_POST) { $filterent['ackqueue'] = $_POST['ackqueue']; } - if ($_POST['dnpipe'] != "") { - $filterent['dnpipe'] = $_POST['dnpipe']; - if ($_POST['pdnpipe'] != "") - $filterent['pdnpipe'] = $_POST['pdnpipe']; - } - if ($_POST['l7container'] != "") { $filterent['l7container'] = $_POST['l7container']; } @@ -1541,56 +1517,6 @@ include("head.inc"); - - - -
    > - " /> - -
    -
    > - / - -
    - ".gettext("The Out selection is applied to traffic leaving the interface where the rule is created, In is applied to traffic coming into the chosen interface.")."
    ".gettext("If you are creating a floating rule, if the direction is In then the same rules apply, if the direction is out the selections are reverted Out is for incoming and In is for outgoing.");?>
    -
    - - - diff --git a/src/www/firewall_shaper.php b/src/www/firewall_shaper.php index 3966cbb52..74c07d68c 100644 --- a/src/www/firewall_shaper.php +++ b/src/www/firewall_shaper.php @@ -408,7 +408,6 @@ include("fbegin.inc"); $tab_array = array(); $tab_array[0] = array(gettext("By Interface"), true, "firewall_shaper.php"); $tab_array[1] = array(gettext("By Queue"), false, "firewall_shaper_queues.php"); - $tab_array[2] = array(gettext("Limiter"), false, "firewall_shaper_vinterface.php"); $tab_array[3] = array(gettext("Layer7"), false, "firewall_shaper_layer7.php"); $tab_array[4] = array(gettext("Wizards"), false, "firewall_shaper_wizards.php"); display_top_tabs($tab_array); diff --git a/src/www/firewall_shaper_layer7.php b/src/www/firewall_shaper_layer7.php index fbda64f10..8c652d79b 100644 --- a/src/www/firewall_shaper_layer7.php +++ b/src/www/firewall_shaper_layer7.php @@ -407,7 +407,6 @@ include("fbegin.inc"); $tab_array = array(); $tab_array[0] = array(gettext("By Interface"), false, "firewall_shaper.php"); $tab_array[1] = array(gettext("By Queue"), false, "firewall_shaper_queues.php"); - $tab_array[2] = array(gettext("Limiter"), false, "firewall_shaper_vinterface.php"); $tab_array[3] = array(gettext("Layer7"), true, "firewall_shaper_layer7.php"); $tab_array[4] = array(gettext("Wizards"), false, "firewall_shaper_wizards.php"); display_top_tabs($tab_array); diff --git a/src/www/firewall_shaper_queues.php b/src/www/firewall_shaper_queues.php index df8966b90..fe6596f61 100644 --- a/src/www/firewall_shaper_queues.php +++ b/src/www/firewall_shaper_queues.php @@ -190,7 +190,6 @@ include("head.inc"); $tab_array = array(); $tab_array[0] = array(gettext("By Interface"), false, "firewall_shaper.php"); $tab_array[1] = array(gettext("By Queue"), true, "firewall_shaper_queues.php"); - $tab_array[2] = array(gettext("Limiter"), false, "firewall_shaper_vinterface.php"); $tab_array[3] = array(gettext("Layer7"), false, "firewall_shaper_layer7.php"); $tab_array[4] = array(gettext("Wizards"), false, "firewall_shaper_wizards.php"); display_top_tabs($tab_array); diff --git a/src/www/firewall_shaper_vinterface.php b/src/www/firewall_shaper_vinterface.php deleted file mode 100644 index 72a9114ca..000000000 --- a/src/www/firewall_shaper_vinterface.php +++ /dev/null @@ -1,453 +0,0 @@ - "") { - mwexec("/usr/bin/killall -9 pfctl"); - exit; -} - -$pgtitle = array(gettext("Firewall"),gettext("Traffic Shaper"), gettext("Limiter")); -$shortcut_section = "trafficshaper-limiters"; - -read_dummynet_config(); -/* - * The whole logic in these code maybe can be specified. - * If you find a better way contact me :). - */ - -if ($_GET) { - if (isset($_GET['queue'])) { - $qname = htmlspecialchars(trim($_GET['queue'])); - } - if (isset($_GET['pipe'])) { - $pipe = htmlspecialchars(trim($_GET['pipe'])); - } - if (isset($_GET['action'])) { - $action = htmlspecialchars($_GET['action']); - } -} -if ($_POST) { - if (isset($_POST['name'])) { - $qname = htmlspecialchars(trim($_POST['name'])); - } else if (isset($_POST['newname'])) { - $qname = htmlspecialchars(trim($_POST['newname'])); - } - if (isset($_POST['pipe'])) { - $pipe = htmlspecialchars(trim($_POST['pipe'])); - } else { - $pipe = htmlspecialchars(trim($qname)); - } - if (isset($_POST['parentqueue'])) { - $parentqueue = htmlspecialchars(trim($_POST['parentqueue'])); - } -} - -if ($pipe) { - $dnpipe = $dummynet_pipe_list[$pipe]; - if ($dnpipe) { - $queue =& $dnpipe->find_queue($pipe, $qname); - } else $addnewpipe = true; -} - -$dontshow = false; -$newqueue = false; -$output_form = ""; - -if ($_GET) { - switch ($action) { - case "delete": - if ($queue) { - if (is_array($config['filter']['rule'])) { - foreach ($config['filter']['rule'] as $rule) { - if ($rule['dnpipe'] == $queue->GetQname() || $rule['pdnpipe'] == $queue->GetQname()) - $input_errors[] = gettext("This pipe/queue is referenced in filter rules, please remove references from there before deleting."); - } - } - if (!$input_errors) { - $queue->delete_queue(); - if (write_config()) - mark_subsystem_dirty('shaper'); - header("Location: firewall_shaper_vinterface.php"); - exit; - } - $output_form .= $queue->build_form(); - } else { - $input_errors[] = sprintf(gettext("No queue with name %s was found!"),$qname); - $output_form .= $dn_default_shaper_msg; - $dontshow = true; - } - break; - case "resetall": - foreach ($dummynet_pipe_list as $dn) - $dn->delete_queue(); - unset($dummynet_pipe_list); - $dummynet_pipe_list = array(); - unset($config['dnshaper']['queue']); - unset($queue); - unset($pipe); - $can_add = false; - $can_enable = false; - $dontshow = true; - foreach ($config['filter']['rule'] as $key => $rule) { - if (isset($rule['dnpipe'])) - unset($config['filter']['rule'][$key]['dnpipe']); - if (isset($rule['pdnpipe'])) - unset($config['filter']['rule'][$key]['pdnpipe']); - } - if (write_config()) { - $retval = 0; - $retval = filter_configure(); - $savemsg = get_std_save_message($retval); - - if (stristr($retval, "error") <> true) - $savemsg = get_std_save_message($retval); - else - $savemsg = $retval; - } else - $savemsg = gettext("Unable to write config.xml (Access Denied?)"); - $output_form = $dn_default_shaper_message; - - break; - case "add": - if ($dnpipe) { - $q = new dnqueue_class(); - $q->SetPipe($pipe); - $output_form .= ""; - } else if ($addnewpipe) { - $q = new dnpipe_class(); - $q->SetQname($pipe); - } else - $input_errors[] = gettext("Could not create new queue/discipline!"); - - if ($q) { - $output_form .= $q->build_form(); - $newjavascript = $q->build_javascript(); - unset($q); - $newqueue = true; - } - break; - case "show": - if ($queue) - $output_form .= $queue->build_form(); - else - $input_errors[] = gettext("Queue not found!"); - break; - case "enable": - if ($queue) { - $queue->SetEnabled("on"); - $output_form .= $queue->build_form(); - $queue->wconfig(); - if (write_config()) - mark_subsystem_dirty('shaper'); - } else - $input_errors[] = gettext("Queue not found!"); - break; - case "disable": - if ($queue) { - $queue->SetEnabled(""); - $output_form .= $queue->build_form(); - $queue->wconfig(); - if (write_config()) - mark_subsystem_dirty('shaper'); - } else - $input_errors[] = gettext("Queue not found!"); - break; - default: - $output_form .= $dn_default_shaper_msg; - $dontshow = true; - break; - } -} else if ($_POST) { - unset($input_errors); - - if ($addnewpipe) { - if (!empty($dummynet_pipe_list[$qname])) - $input_errors[] = gettext("You cannot name a child queue with the same name as a parent limiter"); - else { - $dnpipe =& new dnpipe_class(); - - $dnpipe->ReadConfig($_POST); - $dnpipe->validate_input($_POST, $input_errors); - if (!$input_errors) { - $number = dnpipe_find_nextnumber(); - $dnpipe->SetNumber($number); - unset($tmppath); - $tmppath[] = $dnpipe->GetQname(); - $dnpipe->SetLink($tmppath); - $dnpipe->wconfig(); - if (write_config()) - mark_subsystem_dirty('shaper'); - $can_enable = true; - $can_add = true; - } - - read_dummynet_config(); - $output_form .= $dnpipe->build_form(); - $newjavascript = $dnpipe->build_javascript(); - } - } else if ($parentqueue) { /* Add a new queue */ - if (!empty($dummynet_pipe_list[$qname])) - $input_errors[] = gettext("You cannot name a child queue with the same name as a parent limiter"); - else if ($dnpipe) { - $tmppath =& $dnpipe->GetLink(); - array_push($tmppath, $qname); - $tmp =& $dnpipe->add_queue($pipe, $_POST, $tmppath, $input_errors); - if (!$input_errors) { - array_pop($tmppath); - $tmp->wconfig(); - if (write_config()) { - $can_enable = true; - $can_add = false; - mark_subsystem_dirty('shaper'); - } - } - read_dummynet_config(); - $output_form .= $tmp->build_form(); - } else - $input_errors[] = gettext("Could not add new queue."); - } else if ($_POST['apply']) { - write_config(); - - $retval = 0; - $retval = filter_configure(); - $savemsg = get_std_save_message($retval); - - if (stristr($retval, "error") <> true) - $savemsg = get_std_save_message($retval); - else - $savemsg = $retval; - - /* XXX: TODO Make dummynet pretty graphs */ - // enable_rrd_graphing(); - - clear_subsystem_dirty('shaper'); - - if ($queue) { - $output_form .= $queue->build_form(); - $dontshow = false; - } - else { - $output_form .= $dn_default_shaper_message; - $dontshow = true; - } - - } else if ($queue) { - $queue->validate_input($_POST, $input_errors); - if (!$input_errors) { - $queue->update_dn_data($_POST); - $queue->wconfig(); - if (write_config()) - mark_subsystem_dirty('shaper'); - $dontshow = false; - } - read_dummynet_config(); - $output_form .= $queue->build_form(); - } else { - $output_form .= $dn_default_shaper_msg; - $dontshow = true; - } -} else { - $output_form .= $dn_default_shaper_msg; - $dontshow = true; -} - -if ($queue) { - if ($queue->GetEnabled()) - $can_enable = true; - else - $can_enable = false; - if ($queue->CanHaveChildren()) { - $can_add = true; - } else - $can_add = false; -} - -$tree = "
      "; -if (is_array($dummynet_pipe_list)) { - foreach ($dummynet_pipe_list as $tmpdn) { - $tree .= $tmpdn->build_tree(); - } -} -$tree .= "
    "; - -if (!$dontshow || $newqueue) { - -$output_form .= ""; -$output_form .= gettext("Queue Actions"); -$output_form .= ""; - -$output_form .= ""; -if ($can_add || $addnewaltq) { - $output_form .= "GetQname(); - } - $output_form .= "&action=add\">"; - $output_form .= ""; - $output_form .= ""; -} -$output_form .= "GetQname(); -} -$output_form .= "&action=delete\">"; -$output_form .= ""; -else - $output_form .= " value=\"" . gettext("Delete Limiter") ."\" />"; -$output_form .= ""; -$output_form .= ""; -$output_form .= ""; -} -else - $output_form .= ""; - -$output = ""; -$output .= $output_form; -$closehead = false; -include("head.inc"); -?> - - - - - - - -build_javascript(); -else - echo $newjavascript; - - -$main_buttons = array( - array('label'=>gettext("Create new limiter"), 'href'=>'firewall_shaper_vinterface.php?pipe=new&action=add'), -); - - -include("fbegin.inc"); -?> - - -
    -
    -
    - -
    - - - -

    - ".gettext("You must apply the changes in order for them to take effect."));?>

    - - -
    - - - - - -
    - -
    - - -
    -
    - 0): ?> - - - - - - -
    -
    - - - -
    - -
    - -
    - - - - - - - - - - - diff --git a/src/www/firewall_shaper_wizards.php b/src/www/firewall_shaper_wizards.php index b0031ae05..9ec6bab01 100644 --- a/src/www/firewall_shaper_wizards.php +++ b/src/www/firewall_shaper_wizards.php @@ -93,7 +93,6 @@ include("head.inc"); $tab_array = array(); $tab_array[0] = array(gettext("By Interface"), false, "firewall_shaper.php"); $tab_array[1] = array(gettext("By Queue"), false, "firewall_shaper_queues.php"); - $tab_array[2] = array(gettext("Limiter"), false, "firewall_shaper_vinterface.php"); $tab_array[3] = array(gettext("Layer7"), false, "firewall_shaper_layer7.php"); $tab_array[4] = array(gettext("Wizards"), true, "firewall_shaper_wizards.php"); display_top_tabs($tab_array); diff --git a/src/www/guiconfig.inc b/src/www/guiconfig.inc index f1ecaa22b..1d8e8d030 100644 --- a/src/www/guiconfig.inc +++ b/src/www/guiconfig.inc @@ -459,10 +459,6 @@ function firewall_check_for_advanced_options(&$item) { $item_set .= "vlanprioset {$item['vlanprioset']} "; if($item['gateway']) $item_set .= "gateway {$item['gateway']} "; - if($item['dnpipe']) - $item_set .= "limiter {$item['dnpipe']} "; - if($item['pdnpipe']) - $item_set .= "limiter {$item['pdnpipe']} "; if($item['ackqueue']) $item_set .= "ackqueue {$item['ackqueue']} "; if($item['defaultqueue']) diff --git a/src/www/shortcuts.inc b/src/www/shortcuts.inc index acb3ac01e..cce8cabce 100644 --- a/src/www/shortcuts.inc +++ b/src/www/shortcuts.inc @@ -214,10 +214,6 @@ $shortcuts['trafficshaper'] = array(); $shortcuts['trafficshaper']['main'] = "firewall_shaper.php"; $shortcuts['trafficshaper']['status'] = "status_queues.php"; -$shortcuts['trafficshaper-limiters'] = array(); -$shortcuts['trafficshaper-limiters']['main'] = "firewall_shaper_vinterface.php"; -$shortcuts['trafficshaper-limiters']['status'] = "diag_limiter_info.php"; - $shortcuts['forwarder'] = array(); $shortcuts['forwarder']['main'] = "services_dnsmasq.php"; $shortcuts['forwarder']['log'] = "diag_logs_resolver.php";