From 38d70ed73e788b7380f20b96e9102fcf4e29097d Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 3 Nov 2015 21:49:15 +0000 Subject: [PATCH] (legacy) style cleanup rc.newwanip, don't try to loop back to configd if not needed. loosly related to https://github.com/opnsense/core/issues/451 --- src/etc/rc.newwanip | 234 +++++++++++++++++++++++--------------------- 1 file changed, 123 insertions(+), 111 deletions(-) diff --git a/src/etc/rc.newwanip b/src/etc/rc.newwanip index 891b06083..342022fa8 100755 --- a/src/etc/rc.newwanip +++ b/src/etc/rc.newwanip @@ -2,30 +2,30 @@ - Copyright (C) 2003-2005 Manuel Kasper . - All rights reserved. + Copyright (C) 2006 Scott Ullrich + Copyright (C) 2003-2005 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: + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - 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. + 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. + 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. */ /* parse the configuration and include all functions used below */ @@ -43,42 +43,43 @@ require_once("unbound.inc"); // Do not process while booting if (file_exists('/var/run/booting')) { - return; + return; } /* Interface IP address has changed */ if (isset($argv[1])) { - $argument = str_replace("\n", "", $argv[1]); + $argument = str_replace("\n", "", $argv[1]); } else { - $argument = null; + $argument = null; } log_error("rc.newwanip: Informational is starting {$argument}."); if (empty($argument)) { - $interface = "wan"; - $interface_real = get_real_interface(); + $interface = "wan"; + $interface_real = get_real_interface(); } else { - $interface = convert_real_interface_to_friendly_interface_name($argument); - $interface_real = $argument; + $interface = convert_real_interface_to_friendly_interface_name($argument); + $interface_real = $argument; } $interface_descr = convert_friendly_interface_to_friendly_descr($interface); /* If the interface is configured and not enabled, bail. We do not need to change settings for disabled interfaces. #3313 */ if (is_array($config['interfaces'][$interface]) && !isset($config['interfaces'][$interface]['enable'])) { - log_error("Interface is disabled, nothing to do."); - return; + log_error("Interface is disabled, nothing to do."); + return; } elseif (empty($interface)) { - log_error("Interface is empty, nothing to do."); - return; + log_error("Interface is empty, nothing to do."); + return; } -if (empty($argument)) - $curwanip = get_interface_ip(); -else { - $curwanip = find_interface_ip($interface_real, true); - if($curwanip == "") - $curwanip = get_interface_ip($interface); +if (empty($argument)) { + $curwanip = get_interface_ip(); +} else { + $curwanip = find_interface_ip($interface_real, true); + if(empty($curwanip)) { + $curwanip = get_interface_ip($interface); + } } log_error("rc.newwanip: on (IP address: {$curwanip}) (interface: {$interface_descr}[{$interface}]) (real interface: {$interface_real})."); @@ -88,83 +89,92 @@ log_error("rc.newwanip: on (IP address: {$curwanip}) (interface: {$interface_des * i.e. OpenVPN might be in tap mode and not have an ip. */ if ($curwanip == "0.0.0.0" || !is_ipaddr($curwanip)) { - if (substr($interface_real, 0, 4) != "ovpn") { - if (!empty($config['interfaces'][$interface]['ipaddr'])) { - log_error("rc.newwanip: Failed to update {$interface} IP, restarting..."); - configd_run("interface reconfigure {$interface}"); - return; - } - } + if (substr($interface_real, 0, 4) != "ovpn") { + if (!empty($config['interfaces'][$interface]['ipaddr'])) { + log_error("rc.newwanip: Failed to update {$interface} IP, restarting..."); + configd_run("interface reconfigure {$interface}"); + return; + } + } } -$oldip = "0.0.0.0"; -if (file_exists("/var/db/{$interface}_cacheip")) - $oldip = file_get_contents("/var/db/{$interface}_cacheip"); + +if (file_exists("/var/db/{$interface}_cacheip")) { + $oldip = file_get_contents("/var/db/{$interface}_cacheip"); +} else { + $oldip = "0.0.0.0"; +} + /* regenerate resolv.conf if DNS overrides are allowed */ system_resolvconf_generate(true); /* write the current interface IP to file */ -if (is_ipaddr($curwanip)) - @file_put_contents("/var/db/{$interface}_ip", $curwanip); +/* used in src/sbin/dhclient-script.ext */ +if (is_ipaddr($curwanip)) { + @file_put_contents("/var/db/{$interface}_ip", $curwanip); +} + link_interface_to_vips($interface, "update"); -unset($gre); $gre = link_interface_to_gre($interface); -if (!empty($gre)) - array_walk($gre, 'interface_gre_configure'); -unset($gif); +if (!empty($gre)) { + array_walk($gre, 'interface_gre_configure'); +} $gif = link_interface_to_gif($interface); -if (!empty($gif)) - array_walk($gif, 'interface_gif_configure'); +if (!empty($gif)) { + array_walk($gif, 'interface_gif_configure'); +} $grouptmp = link_interface_to_group($interface); -if (!empty($grouptmp)) - array_walk($grouptmp, 'interface_group_add_member'); +if (!empty($grouptmp)) { + array_walk($grouptmp, 'interface_group_add_member'); +} unset($bridgetmp); $bridgetmp = link_interface_to_bridge($interface); -if (!empty($bridgetmp)) - interface_bridge_add_member($bridgetmp, $interface_real); +if (!empty($bridgetmp)) { + interface_bridge_add_member($bridgetmp, $interface_real); +} /* make new hosts file */ system_hosts_generate(); /* check tunneled IPv6 interface tracking */ if (isset($config['interfaces'][$interface]['ipaddrv6'])) { - switch($config['interfaces'][$interface]['ipaddrv6']) { - case "6to4": - interface_6to4_configure($interface, $config['interfaces'][$interface]); - break; - case "6rd": - interface_6rd_configure($interface, $config['interfaces'][$interface]); - break; - case "dhcp6": - if (isset($config['interfaces'][$interface]['dhcp6usev4iface'])) - interface_dhcpv6_configure($interface, $config['interfaces'][$interface]); - break; - } + switch($config['interfaces'][$interface]['ipaddrv6']) { + case "6to4": + interface_6to4_configure($interface, $config['interfaces'][$interface]); + break; + case "6rd": + interface_6rd_configure($interface, $config['interfaces'][$interface]); + break; + case "dhcp6": + if (isset($config['interfaces'][$interface]['dhcp6usev4iface'])) { + interface_dhcpv6_configure($interface, $config['interfaces'][$interface]); + } + break; + } } /* Check Gif tunnels */ if(isset($config['gifs']['gif']) && is_array($config['gifs']['gif'])){ - foreach($config['gifs']['gif'] as $gif) { - if($gif['if'] == $interface) { - foreach($config['interfaces'] as $ifname => $ifparent) { - // echo "interface $ifparent, ifname $ifname, gif {$gif['gifif']}\n"; - if(($ifparent['if'] == $gif['gifif']) && (isset($ifparent['enable']))) { - // echo "Running routing configure for $ifname\n"; - $gif['gifif'] = interface_gif_configure($gif); - $confif = convert_real_interface_to_friendly_interface_name($gif['gifif']); - if ($confif <> "") - interface_configure($confif); - system_routing_configure($ifname); - } - } - } - } + foreach($config['gifs']['gif'] as $gif) { + if($gif['if'] == $interface) { + foreach($config['interfaces'] as $ifname => $ifparent) { + if(($ifparent['if'] == $gif['gifif']) && (isset($ifparent['enable']))) { + $gif['gifif'] = interface_gif_configure($gif); + $confif = convert_real_interface_to_friendly_interface_name($gif['gifif']); + if (!empty($confif)) { + interface_configure($confif); + } + system_routing_configure($ifname); + } + } + } + } } /* @@ -173,40 +183,42 @@ if(isset($config['gifs']['gif']) && is_array($config['gifs']['gif'])){ * could be failing back in which case we need to switch IPs back anyhow. */ if (!is_ipaddr($oldip) || $curwanip != $oldip || !is_ipaddrv4($config['interfaces'][$interface]['ipaddr'])) { - /* reconfigure static routes (kernel may have deleted them) */ - system_routing_configure($interface); + /* reconfigure static routes (kernel may have deleted them) */ + system_routing_configure($interface); - /* reconfigure our gateway monitor */ - setup_gateways_monitor(); + /* reconfigure our gateway monitor */ + setup_gateways_monitor(); - if (is_ipaddr($curwanip)) - @file_put_contents("/var/db/{$interface}_cacheip", $curwanip); + if (is_ipaddr($curwanip)) { + @file_put_contents("/var/db/{$interface}_cacheip", $curwanip); + } - /* perform RFC 2136 DNS update */ - services_dnsupdate_process($interface); + /* perform RFC 2136 DNS update */ + services_dnsupdate_process($interface); - /* signal dyndns update */ - services_dyndns_configure($interface); + /* signal dyndns update */ + services_dyndns_configure($interface); - /* reconfigure IPsec tunnels */ - vpn_ipsec_force_reload($interface); + /* reconfigure IPsec tunnels */ + vpn_ipsec_force_reload($interface); - /* start OpenVPN server & clients */ - if (substr($interface_real, 0, 4) != "ovpn") - openvpn_resync_all($interface); + /* start OpenVPN server & clients */ + if (substr($interface_real, 0, 4) != "ovpn") { + openvpn_resync_all($interface); + } - /* reload graphing functions */ - enable_rrd_graphing(); + /* reload graphing functions */ + enable_rrd_graphing(); - /* reload igmpproxy */ - services_igmpproxy_configure(); + /* reload igmpproxy */ + services_igmpproxy_configure(); - /* restart snmp */ - services_snmpd_configure(); + /* restart snmp */ + services_snmpd_configure(); - /* reconfigure ntpd */ - system_ntp_configure(false); + /* reconfigure ntpd */ + system_ntp_configure(false); } -/* signal filter reload */ -filter_configure(); +/* reload filter, don't try to sync to carp slave */ +filter_configure_sync();