mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
The ISC client was far worse then the WIDE client was, back to plan A
Revert "Merge changes required for using the ISC dhclient in pfSense with prefix delegation. This should hopefully be a bit more reliable in the long run."
This reverts commit 651018775c.
Conflicts:
etc/inc/interfaces.inc
This commit is contained in:
parent
dcb4155504
commit
d53a9a5100
@ -37,7 +37,7 @@
|
||||
|
||||
pfSense_BUILDER_BINARIES: /sbin/dhclient /bin/sh /usr/bin/grep /usr/bin/xargs /usr/bin/awk /usr/local/sbin/choparp
|
||||
pfSense_BUILDER_BINARIES: /sbin/ifconfig /sbin/route /usr/sbin/ngctl /usr/sbin/arp /bin/kill /usr/local/sbin/mpd5
|
||||
pfSense_BUILDER_BINARIES: /usr/local/sbin/dhclient
|
||||
pfSense_BUILDER_BINARIES: /usr/local/sbin/dhcp6c
|
||||
pfSense_MODULE: interfaces
|
||||
|
||||
*/
|
||||
@ -2611,7 +2611,7 @@ function find_dhclient_process($interface) {
|
||||
|
||||
function find_dhcp6c_process($interface) {
|
||||
if ($interface)
|
||||
$pid = `/bin/ps auxww|grep "[d]hclient[ ]-6" |grep "{$interface}"|awk '{print $2}'`;
|
||||
$pid = `/bin/ps auxw|grep "[d]hcp6c" |grep "{$interface}"|awk '{print $2}'`;
|
||||
else
|
||||
return(false);
|
||||
|
||||
@ -3047,21 +3047,10 @@ function interface_track6_dhcp6_configure($interface = "lan") {
|
||||
if (empty($wancfg))
|
||||
$wancfg = array();
|
||||
|
||||
$realwanif = get_real_interface($wanif);
|
||||
if(is_readable("{$g['vardb_path']}/{$realwanif}_pd_ipv6")) {
|
||||
$ifcfgipv6pfx = file_get_contents("{$g['vardb_path']}/{$realwanif}_pd_ipv6");
|
||||
} else {
|
||||
log_error("No DHCP-PD delegated prefix found, exiting");
|
||||
return false;
|
||||
}
|
||||
|
||||
log_error("Delegated IPv6 prefix is {$ifcfgipv6pfx}");
|
||||
$ifcfgipv6pfxarr = explode("/", $ifcfgipv6pfx);
|
||||
$ifcfgipv6 = $ifcfgipv6pfxarr[0];
|
||||
|
||||
$ifcfgipv6 = find_interface_ipv6($lanif);
|
||||
if(is_ipaddrv6($ifcfgipv6)) {
|
||||
$dhcp6lanarr = explode(":", Net_IPv6::uncompress($ifcfgipv6));
|
||||
/* we need to fold the $lancfg['track6-prefix-id'] into this address */
|
||||
$dhcp6lanarr[4] = 0;
|
||||
$dhcp6lanarr[5] = 0;
|
||||
$dhcp6lanarr[6] = 0;
|
||||
@ -3069,8 +3058,6 @@ function interface_track6_dhcp6_configure($interface = "lan") {
|
||||
$dhcp6lan = Net_IPv6::compress(implode(":", $dhcp6lanarr));
|
||||
log_error("dhcp6 {$interface} with ipv6 address {$dhcp6lan} based on {$lancfg['track6-interface']}");
|
||||
mwexec("/sbin/ifconfig {$lanif} inet6 {$dhcp6lan} prefixlen 64");
|
||||
} else {
|
||||
log_error("The DHCP-PD interface {$interface} address {$ifcfgipv6} is not a valid IPv6 address");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -3262,49 +3249,105 @@ function interface_dhcpv6_configure($interface = "wan") {
|
||||
|
||||
$wanif = get_real_interface($interface);
|
||||
|
||||
/* Add ISC IPv6 dhclient here */
|
||||
/* wide-dhcp6c works for now. */
|
||||
$fd = fopen("{$g['varetc_path']}/dhcp6c_{$interface}.conf", "w");
|
||||
if (!$fd) {
|
||||
printf("Error: cannot open dhcp6c_{$interface}.conf in interface_dhcpv6_configure() for writing.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
$dhcp6cconf = "interface \"{$wanif}\" {\n";
|
||||
$dhcp6cconf .= "script \"/sbin/dhclient6-script\";\n";
|
||||
$dhcp6cconf .= "}\n";
|
||||
$dhcp6cconf = "";
|
||||
$dhcp6cconf .= "interface {$wanif} {\n";
|
||||
|
||||
/* for SLAAC interfaces we do fire off a dhcp6 client for just our name servers */
|
||||
if($wancfg['ipaddrv6'] == "slaac") {
|
||||
$dhcp6cconf .= " information-only;\n";
|
||||
$dhcp6cconf .= " request domain-name-servers;\n";
|
||||
$dhcp6cconf .= " request domain-name;\n";
|
||||
$dhcp6cconf .= " script \"{$g['varetc_path']}/dhcp6c_{$interface}_script.sh\"; # we'd like some nameservers please\n";
|
||||
$dhcp6cconf .= "};\n";
|
||||
} else {
|
||||
|
||||
$dhcp6cconf .= " send ia-na 0; # request stateful address\n";
|
||||
if(is_numeric($wancfg['dhcp6-ia-pd-len'])) {
|
||||
$dhcp6cconf .= " send ia-pd 0; # request prefix delegation\n";
|
||||
}
|
||||
$dhcp6cconf .= "request domain-name-servers;\n";
|
||||
$dhcp6cconf .= "request domain-name;\n";
|
||||
$dhcp6cconf .= "script \"{$g['varetc_path']}/dhcp6c_{$interface}_script.sh\"; # we'd like some nameservers please\n";
|
||||
|
||||
$dhcp6cconf .= "};\n";
|
||||
$dhcp6cconf .= "id-assoc na 0 { };\n";
|
||||
if(is_numeric($wancfg['dhcp6-ia-pd-len'])) {
|
||||
/* Setup the prefix delegation */
|
||||
$dhcp6cconf .= "id-assoc pd 0 {\n";
|
||||
foreach($iflist as $friendly => $ifdescr) {
|
||||
if($config['interfaces'][$friendly]['track6-interface'] != $interface)
|
||||
continue;
|
||||
if(is_numeric($config['interfaces'][$friendly]['track6-prefix-id'])) {
|
||||
log_error("setting up $friendly - {$config['interfaces'][$friendly]['track6-prefix-id']}");
|
||||
$realif = get_real_interface($friendly);
|
||||
$dhcp6cconf .= " prefix-interface {$realif} {\n";
|
||||
$dhcp6cconf .= " sla-id {$config['interfaces'][$friendly]['track6-prefix-id']};\n";
|
||||
$dhcp6cconf .= " sla-len {$wancfg['dhcp6-ia-pd-len']};\n";
|
||||
$dhcp6cconf .= " };\n";
|
||||
}
|
||||
}
|
||||
$dhcp6cconf .= "};\n";
|
||||
}
|
||||
}
|
||||
fwrite($fd, $dhcp6cconf);
|
||||
fclose($fd);
|
||||
|
||||
/* Add wide-dhcp6c shell script here. Because we can not pass a argument to it. */
|
||||
$fds = fopen("{$g['varetc_path']}/dhcp6c_{$interface}_script.sh", "w");
|
||||
if (!$fds) {
|
||||
printf("Error: cannot open dhcp6c_{$interface}_script.sh in interface_dhcpv6_configure() for writing.\n");
|
||||
return 1;
|
||||
}
|
||||
$dhcp6cscript = "#!/bin/sh\n";
|
||||
$dhcp6cscript .= "# This shell script launches /etc/rc.newwanipv6 with a interface argument.\n";
|
||||
$dhcp6cscript .= "/etc/rc.newwanipv6 $interface \n";
|
||||
|
||||
fwrite($fds, $dhcp6cscript);
|
||||
fclose($fds);
|
||||
chmod("{$g['varetc_path']}/dhcp6c_{$interface}_script.sh", 0755);
|
||||
|
||||
|
||||
/* accept router advertisements for this interface */
|
||||
mwexec("/sbin/sysctl -w net.inet6.ip6.accept_rtadv=1");
|
||||
log_error("Accept router advertisements on interface {$wanif} ");
|
||||
mwexec("/sbin/ifconfig {$wanif} inet6 accept_rtadv");
|
||||
|
||||
/* run a filter configure so that the filter rules allow traffic before we launch the client */
|
||||
filter_configure_sync();
|
||||
filter_configure();
|
||||
sleep(3);
|
||||
|
||||
/* dhclient -6
|
||||
* -T temprorary address
|
||||
* -S information only
|
||||
* -P Prefix
|
||||
* -N request address with temporary or prefix
|
||||
*/
|
||||
|
||||
$dhcp6c_options = "";
|
||||
if($wancfg['ipaddrv6'] == "slaac") {
|
||||
$dhcp6c_options .= "-S ";
|
||||
}
|
||||
if($wancfg['ipaddrv6'] == "dhcp6") {
|
||||
$dhcp6c_options .= "-N ";
|
||||
}
|
||||
if(is_numeric($wancfg['dhcp6-ia-pd-len'])) {
|
||||
$dhcp6c_options .= "-P ";
|
||||
}
|
||||
/* fire up dhcp6c for IPv6 first, this backgrounds immediately */
|
||||
mwexec_bg("/usr/local/sbin/dhclient -6 {$dhcp6c_options} -cf {$g['varetc_path']}/dhcp6c_{$interface}.conf -lf {$g['varetc_path']}/dhcp6c_{$interface}.leases -pf {$g['varrun_path']}/dhcp6c_{$interface}.pid {$wanif}");
|
||||
sleep(5);
|
||||
mwexec("/usr/local/sbin/dhcp6c -d -c {$g['varetc_path']}/dhcp6c_{$interface}.conf {$wanif}");
|
||||
sleep(1);
|
||||
exec("/sbin/rtsol -d {$wanif} 2>&1", $out, $ret);
|
||||
if(!empty($out)) {
|
||||
foreach($out as $line) {
|
||||
if((stristr($line, "received")) && (!stristr($line, "unexpected"))) {
|
||||
$parts = explode(" ", $line);
|
||||
if(is_ipaddrv6($parts[3])) {
|
||||
log_error("Found IPv6 default gateway '{$parts[3]}' by RA.");
|
||||
file_put_contents("{$g['tmp_path']}/{$wanif}_routerv6", "{$parts[3]}\n");
|
||||
file_put_contents("{$g['tmp_path']}/{$wanif}_defaultgwv6", "{$parts[3]}\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* worst case is that the rc.newwanipv6 handles setting up the track6 interface */
|
||||
if($wancfg['ippaddrv6'] != "slaac") {
|
||||
/* configure dependent interfaces */
|
||||
foreach($iflist as $if => $ifname) {
|
||||
if($config['interfaces'][$if]['track6-interface'] == $interface)
|
||||
interface_track6_configure($if);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -1595,24 +1595,4 @@ function get_possible_listen_ips() {
|
||||
return $listenips;
|
||||
}
|
||||
|
||||
/* Pick up IPv6 router advertisements on the interface */
|
||||
function pickup_ipv6_router_advertisement($interface) {
|
||||
global $g;
|
||||
$realif = get_real_interface($interface);
|
||||
exec("/sbin/rtsol -d {$realif} 2>&1", $out, $ret);
|
||||
if(!empty($out)) {
|
||||
foreach($out as $line) {
|
||||
if((stristr($line, "received")) && (!stristr($line, "unexpected"))) {
|
||||
$parts = explode(" ", $line);
|
||||
if(is_ipaddrv6($parts[3])) {
|
||||
log_error("Found IPv6 default gateway '{$parts[3]}' on interface {$realif} by RA.");
|
||||
file_put_contents("{$g['tmp_path']}/{$realif}_routerv6", "{$parts[3]}\n");
|
||||
file_put_contents("{$g['tmp_path']}/{$realif}_defaultgwv6", "{$parts[3]}\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -49,6 +49,15 @@ if($g['booting'])
|
||||
exit;
|
||||
|
||||
|
||||
// echo print_r($_ENV, true);
|
||||
/*Array
|
||||
(
|
||||
[REASON] => NBI
|
||||
[new_domain_name_servers] => 2001:470:20::2
|
||||
[new_domain_name] => domain.nl.
|
||||
)
|
||||
*/
|
||||
|
||||
function restart_packages() {
|
||||
global $oldip, $curwanipv6, $g;
|
||||
|
||||
@ -61,16 +70,24 @@ function restart_packages() {
|
||||
|
||||
log_error("rc.newwanipv6: Informational is starting.");
|
||||
|
||||
/* Interface IP address has changed */
|
||||
$argument = str_replace("\n", "", $argv[1]);
|
||||
/* FIXME: how can we find out about the correct interface name? */
|
||||
/* switch to ISC dhcp6 client? */
|
||||
$curwanipv6 = get_interface_ipv6();
|
||||
$interface = "wan";
|
||||
$interface_real = get_real_interface();
|
||||
|
||||
if($argument != "")
|
||||
$interface = convert_real_interface_to_friendly_interface_name($argument);
|
||||
else
|
||||
$interface = "wan";
|
||||
$name_servers = explode(" ", $_ENV['new_domain_name_servers']);
|
||||
$valid_ns = array();
|
||||
foreach($name_servers as $ns) {
|
||||
if(is_ipaddrv6(trim($ns)))
|
||||
$valid_ns[] = trim($ns);
|
||||
}
|
||||
if(count($valid_ns > 0))
|
||||
file_put_contents("{$g['varetc_path']}/nameserver_v6{$interface}", implode("\n", $valid_ns));
|
||||
|
||||
$interface_real = get_real_interface($interface);
|
||||
$curwanipv6 = get_interface_ipv6($interface_real);
|
||||
if(!empty($_ENV['new_domain_name'])) {
|
||||
file_put_contents("{$g['varetc_path']}/searchdomain_v6{$interface}", $_ENV['new_domain_name']);
|
||||
}
|
||||
|
||||
log_error("rc.newwanipv6: on (IP address: {$curwanipv6}) (interface: {$interface}) (real interface: {$interface_real}).");
|
||||
|
||||
@ -100,10 +117,6 @@ system_resolvconf_generate(true);
|
||||
/* write current WAN IPv6 to file */
|
||||
file_put_contents("{$g['vardb_path']}/{$interface}_ipv6", $curwanipv6);
|
||||
|
||||
/* pickup ipv6 router advertisements */
|
||||
pickup_ipv6_router_advertisement($interface_real);
|
||||
sleep(3);
|
||||
|
||||
/* check native IPv6 interface tracking */
|
||||
switch($config['interfaces'][$interface]['ipaddrv6']) {
|
||||
case "dhcp6":
|
||||
@ -145,6 +158,9 @@ services_dnsupdate_process($interface);
|
||||
/* signal dyndns update */
|
||||
services_dyndns_configure($interface);
|
||||
|
||||
/* wait for the dhcp6c process to configure the LAN interface */
|
||||
sleep(5);
|
||||
|
||||
/* reconfigure IPsec tunnels */
|
||||
vpn_ipsec_force_reload();
|
||||
|
||||
|
||||
@ -1,244 +0,0 @@
|
||||
#!/bin/sh
|
||||
# $Id$
|
||||
# $OpenBSD: dhclient-script,v 1.6 2004/05/06 18:22:41 claudio Exp $
|
||||
# $FreeBSD: src/sbin/dhclient/dhclient-script,v 1.4 2005/06/10 03:41:18 brooks Exp $
|
||||
#
|
||||
# Copyright (c) 2003 Kenneth R Westerback <krw@openbsd.org>
|
||||
#
|
||||
# Permission to use, copy, modify, and distribute this software for any
|
||||
# purpose with or without fee is hereby granted, provided that the above
|
||||
# copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
#
|
||||
|
||||
NETSTAT=/usr/bin/netstat
|
||||
GREP=/usr/bin/grep
|
||||
AWK=/usr/bin/awk
|
||||
HOSTNAME=/bin/hostname
|
||||
GREP=/usr/bin/grep
|
||||
ROUTE=/sbin/route
|
||||
SED=/usr/bin/sed
|
||||
ARP=/usr/sbin/arp
|
||||
IFCONFIG=/sbin/ifconfig
|
||||
|
||||
LOCALHOST=::1
|
||||
|
||||
if [ -x /usr/bin/logger ]; then
|
||||
LOGGER="/usr/bin/logger -s -p user.notice -t dhclient6"
|
||||
else
|
||||
LOGGER=echo
|
||||
fi
|
||||
|
||||
#
|
||||
# Helper functions that implement common actions.
|
||||
#
|
||||
|
||||
check_hostname() {
|
||||
current_hostname=`$HOSTNAME`
|
||||
if [ -z "$current_hostname" ]; then
|
||||
$LOGGER "New Hostname ($interface): $new_host_name"
|
||||
$HOSTNAME $new_host_name
|
||||
elif [ "$current_hostname" = "$old_host_name" -a \
|
||||
"$new_host_name" != "$old_host_name" ]; then
|
||||
$LOGGER "New Hostname ($interface): $new_host_name"
|
||||
$HOSTNAME $new_host_name
|
||||
fi
|
||||
}
|
||||
|
||||
delete_old_states() {
|
||||
$LOGGER "Starting delete_old_states()"
|
||||
# If the IP changed, remove states from the old one
|
||||
if [ -f /var/db/${interface}_ipv6 ]; then
|
||||
OLD_IPv6 = `cat /var/db/${interface}_ipv6`
|
||||
$LOGGER "Comparing IPv6s: Old: ${OLD_IPv6} New: ${new_ip6_address}"
|
||||
if [ -n "${OLD_IPv6}" ] && [ "${OLD_IPv6}" != "${new_ip6_address}" ]; then
|
||||
$LOGGER "Removing states from old IPv6 '${OLD_IPv6}' (new IP '${new_ip6_address}')"
|
||||
/sbin/pfctl -k :: -k ${OLD_IPv6}/128
|
||||
/sbin/pfctl -k ${OLD_IPv6}/128
|
||||
pfctl -K ${OLD_IPv6}/128
|
||||
fi
|
||||
fi
|
||||
# Delete states through old gateway if it's not the same
|
||||
# FIXME: dhcp6 doesn't know about routers. Needs fixing elsewhere.
|
||||
}
|
||||
|
||||
delete_old_address() {
|
||||
/bin/rm -f /var/db/${interface}_ipv6
|
||||
$IFCONFIG $interface inet6 -alias $old_ip6_address
|
||||
}
|
||||
|
||||
add_new_address() {
|
||||
if [ -z $new_ip6_address ]; then
|
||||
return;
|
||||
fi
|
||||
|
||||
$LOGGER "Starting add_new_address()"
|
||||
$LOGGER "ifconfig $interface inet6 $new_ip6_address prefixlen $new_ip6_prefixlen"
|
||||
$IFCONFIG $interface \
|
||||
inet6 $new_ip6_address \
|
||||
prefixlen $new_ip6_prefixlen
|
||||
|
||||
$LOGGER "New IPv6 Address ($interface): $new_ip6_address"
|
||||
$LOGGER "New Prefix Length ($interface): $new_ip6_prefixlen"
|
||||
|
||||
echo $new_ip6_address > /var/db/${interface}_ipv6
|
||||
}
|
||||
|
||||
add_new_prefix() {
|
||||
if [ -z $new_ip6_prefix ]; then
|
||||
return
|
||||
fi
|
||||
$LOGGER "Starting add_new_prefix()"
|
||||
echo $new_ip6_prefix > /var/db/${interface}_pd_ipv6
|
||||
}
|
||||
|
||||
delete_old_prefix() {
|
||||
if [ -z $old_ip6_prefix ]; then
|
||||
return
|
||||
fi
|
||||
$LOGGER "Starting delete_old_prefix()"
|
||||
rm -f /var/db/${interface}_pd_ipv6
|
||||
}
|
||||
|
||||
delete_old_alias() {
|
||||
if [ -n "$alias_ip6_address" ]; then
|
||||
$IFCONFIG $interface inet6 -alias $alias_ip6_address > /dev/null 2>&1
|
||||
$ROUTE delete -inet6 $alias_ip6_address $LOCALHOST > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
add_new_alias() {
|
||||
if [ -n "$alias_ip6_address" ]; then
|
||||
$IFCONFIG $interface inet6 alias $alias_ip6_address prefixlen $new_ip6_prefixlen
|
||||
$ROUTE add -inet6 $alias_ip6_address $LOCALHOST
|
||||
fi
|
||||
}
|
||||
|
||||
add_new_resolv_conf() {
|
||||
$LOGGER "Creating resolv.conf"
|
||||
if [ -f "/var/etc/nameserver_v6$interface" ]; then
|
||||
# Remove old entries
|
||||
for nameserver in `cat /var/etc/nameserver_v6$interface`; do
|
||||
$ROUTE delete -inet6 $nameserver >/dev/null 2>&1
|
||||
done
|
||||
fi
|
||||
if [ -n "$new_dhcp6_name_servers" ]; then
|
||||
/bin/rm -f /var/etc/nameserver_v6$interface
|
||||
ALLOWOVERRIDE=`/usr/bin/grep dnsallowoverride /conf/config.xml | /usr/bin/wc -l`
|
||||
for nameserver in $new_dhcp6_name_servers; do
|
||||
# Add a route to the nameserver out the correct interface
|
||||
# so that mulitple wans work correctly with multiple dns
|
||||
# also backup the nameserver for later route removal
|
||||
if [ $ALLOWOVERRIDE -gt 0 ]; then
|
||||
echo $nameserver >>/var/etc/nameserver_v6$interface
|
||||
$ROUTE add -inet6 $nameserver -iface $interface
|
||||
fi
|
||||
done
|
||||
echo $new_dhcp6_domain_search >/var/etc/searchdomain_v6$interface
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Notify rc.newwanip of changes to an interface
|
||||
notify_rc_newwanipv6() {
|
||||
/etc/rc.newwanipv6 $interface
|
||||
# /usr/local/sbin/pfSctl -c "interface newipv6 $interface"
|
||||
}
|
||||
|
||||
#
|
||||
# Start of active code.
|
||||
#
|
||||
|
||||
# Invoke the local dhcp client enter hooks, if they exist.
|
||||
if [ -f /etc/dhclient-enter-hooks ]; then
|
||||
$LOGGER "dhclient-enter-hooks"
|
||||
exit_status=0
|
||||
. /etc/dhclient-enter-hooks
|
||||
# allow the local script to abort processing of this state
|
||||
# local script must set exit_status variable to nonzero.
|
||||
if [ $exit_status -ne 0 ]; then
|
||||
exit $exit_status
|
||||
fi
|
||||
fi
|
||||
|
||||
$LOGGER $reason
|
||||
case $reason in
|
||||
PREINIT6)
|
||||
delete_old_alias
|
||||
delete_old_prefix
|
||||
$IFCONFIG $interface inet6 up
|
||||
delete_old_states
|
||||
;;
|
||||
|
||||
BOUND6|RENEW6|REBIND6|REBOOT6)
|
||||
|
||||
set
|
||||
check_hostname
|
||||
changes="no"
|
||||
if [ "$old_ip6_address" != "$new_ip6_address" ]; then
|
||||
delete_old_states
|
||||
fi
|
||||
if [ -n "$old_ip6_address" ]; then
|
||||
if [ "$old_ip6_address" != "$alias_ip6_address" ]; then
|
||||
delete_old_alias
|
||||
changes="yes"
|
||||
fi
|
||||
fi
|
||||
if [ "$old_ip6_prefix" != "$new_ip6_prefix" ]; then
|
||||
delete_old_prefix
|
||||
changes="yes"
|
||||
fi
|
||||
if [ "$reason" = BOUND6 ] || \
|
||||
[ "$reason" = REBOOT6 ] || \
|
||||
[ "$reason" = REBIND6 ] || \
|
||||
[ -z "$old_ip6_address" ] || \
|
||||
[ "$old_ip6_address" || "$new_ip6_address" ]; then
|
||||
add_new_address
|
||||
add_new_prefix
|
||||
changes="yes"
|
||||
fi
|
||||
if [ -n "$alias_ip6_address" ] && \
|
||||
[ "$new_ip6_address" != "$alias_ip6_address" ]; then
|
||||
add_new_alias
|
||||
changes="yes"
|
||||
fi
|
||||
add_new_resolv_conf
|
||||
if [ "$changes" = "yes" ] ; then
|
||||
notify_rc_newwanipv6
|
||||
fi
|
||||
;;
|
||||
|
||||
EXPIRE6|FAIL6)
|
||||
delete_old_alias
|
||||
delete_old_states
|
||||
if [ -n "$old_ip6_address" ]; then
|
||||
delete_old_address
|
||||
fi
|
||||
;;
|
||||
|
||||
TIMEOUT6)
|
||||
delete_old_alias
|
||||
add_new_address
|
||||
/bin/sleep 1
|
||||
$IFCONFIG $interface inet6 -alias $new_ip6_address $medium
|
||||
delete_old_states
|
||||
;;
|
||||
esac
|
||||
|
||||
# Invoke the local dhcp client exit hooks, if they exist.
|
||||
if [ -f /etc/dhclient-exit-hooks ]; then
|
||||
$LOGGER "dhclient-exit-hooks"
|
||||
exit_status=0
|
||||
. /etc/dhclient-exit-hooks
|
||||
# allow the local script to abort processing of this state
|
||||
# local script must set exit_status variable to nonzero.
|
||||
exit $exit_status
|
||||
fi
|
||||
Loading…
Reference in New Issue
Block a user