From 849ae9e3bd2877bfb784b88b10d41dc772127f2a Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 12 Feb 2013 10:49:10 -0200 Subject: Move RIP back to packages. It fixes #2810 --- config/routed/routed.inc | 67 ++++++++++++++++------------- config/routed/routed.xml | 109 +++++++++++++++++++++++------------------------ 2 files changed, 91 insertions(+), 85 deletions(-) (limited to 'config/routed') diff --git a/config/routed/routed.inc b/config/routed/routed.inc index 59967e8c..f7ace8a5 100644 --- a/config/routed/routed.inc +++ b/config/routed/routed.inc @@ -32,43 +32,42 @@ function setup_routed() { global $config; $gw = ""; + if (!is_array($config['installedpackages']['routed'])) + return; + if (!is_array($config['installedpackages']['routed']['config'])) + return; if (isset($config['installedpackages']['routed']['config'][0]['enable']) && - $config['installedpackages']['routed']['config'][0]['enable'] == "on") { - /* if user selected individual interfaces */ - $ifdescrs = array ("wan", "lan"); - for ($j = 1; isset($config['interfaces']['opt' . $j]); $j++) { - if(isset($config['interfaces']['opt' . $j]['enable'])) - $ifdescrs['opt' . $j] = "opt" . $j; - } - - $ifarr = explode(",", $config['installedpackages']['routed']['config'][0]['iface_array']); - if (count($ifarr) != 0) { - foreach($ifdescrs as $ifdescr => $ifname) { - if (in_array($ifname, $ifarr)) { - $gw .= setup_etc_gateways($ifname, 'enable'); - } else { - $gw .= setup_etc_gateways($ifname, 'disable'); + $config['installedpackages']['routed']['config'][0]['enable'] == "on") { + /* if user selected individual interfaces */ + $ifarr = array_flip(explode(",", $config['installedpackages']['routed']['config'][0]['iface_array'])); + $allifs = get_interface_arr(); + if (!empty($ifarr)) { + foreach($allifs as $ifname) { + $friendly_ifname = convert_real_interface_to_friendly_interface_name($ifname); + if (array_key_exists($friendly_ifname, $ifarr)) + $gw .= setup_etc_gateways($ifname, 'enable'); + else + $gw .= setup_etc_gateways($ifname, 'disable'); } - } - } else { - /* setup for all interfaces */ - $gw = setup_etc_gateways(); - } - $fd = fopen("/etc/gateways", "w"); - fwrite($fd, $gw); - fclose($fd); + } else + /* setup for all interfaces */ + $gw = setup_etc_gateways(); + conf_mount_rw(); + file_put_contents("/etc/gateways", $gw); + conf_mount_ro(); restart_routed(); - } else { + } else stop_routed(); - } } function setup_etc_gateways($iface="", $mode="") { global $config; + $ret = ""; if ($iface != "") { - $realif=convert_friendly_interface_to_real_interface_name(strtoupper($iface)); - $ret = "if={$realif} "; + $realif=convert_friendly_interface_to_real_interface_name($iface); + if (!empty($realif)) + $ret = "if={$realif} "; } switch($mode) { @@ -79,10 +78,18 @@ function setup_etc_gateways($iface="", $mode="") { if ($passwd != "") { $ret .= "passwd={$passwd} "; } + $add_no_ag = $config['installedpackages']['routed']['config'][0]['enable_no_ag']; + $add_no_super_ag = $config['installedpackages']['routed']['config'][0]['enable_no_super_ag']; + if($add_no_ag == "on") { + $ret .= "no_ag "; + } + if($add_no_super_ag == "on") { + $ret .= "no_super_ag "; + } } break; case "disable": - $ret .= "no_rip "; + $ret .= "no_rip_out no_solicit no_rdisc no_rdisc_adv"; break; default: @@ -95,11 +102,11 @@ function setup_etc_gateways($iface="", $mode="") { } function start_routed() { - mwexec("/sbin/routed"); + mwexec_bg("/sbin/routed"); } function stop_routed() { - mwexec("killall routed"); + killbyname("routed"); } function restart_routed() { diff --git a/config/routed/routed.xml b/config/routed/routed.xml index d7767a5b..ca46cb14 100644 --- a/config/routed/routed.xml +++ b/config/routed/routed.xml @@ -1,55 +1,44 @@ - - - - + /* $Id$ */ + /* + part of pfSense (http://www.pfsense.org/) - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper . - All rights reserved. - */ -/* ========================================================================== */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + Copyright (C) 2006 Bill Marquette - bill.marquette@gmail.com. + All rights reserved. - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ + routed 1.1 Services: RIP - pkg_edit.php?xml=routed.xml&id=0 routed.inc + + + http://www.pfsense.org/packages/config/routed/routed.inc + + RIP @@ -61,15 +50,12 @@ ROUTED Settings /pkg_edit.php?xml=routed.xml - + ['installedpackages']['routed']['config'] - - http://www.pfsense.org/packages/config/routed/routed.inc - @@ -78,29 +64,29 @@ enable Enables the Routing Information Protocol daemon checkbox - iface_array,ripversion,passwd + iface_array[],ripversion,passwd,enable_no_ag,enable_no_super_ag Interfaces iface_array - Select the interfaces that RIP will bind to. You can use the CTRL or COMMAND key to select multiple interfaces. - interfaces_selection - 3 - lan true + 3 + interfaces_selection + Select the interfaces that RIP will bind to. You can use the CTRL or COMMAND key to select multiple interfaces. + RIP Version ripversion select - 2 Select which RIP version the daemon will listen/advertise using. + RIPv2 password @@ -110,14 +96,27 @@ input + + no_ag + enable_no_ag + turns off aggregation of subnets in RIPv1 and RIPv2 responses. + checkbox + + + no_super_ag + enable_no_super_ag + turns off aggregation of networks into supernets in RIPv2 responses. + checkbox + - - + pkg_edit.php?xml=routed.xml&id=0 + + conf_mount_rw(); - setup_routed(); + setup_routed(); conf_mount_ro(); -- cgit v1.2.3