#!/bin/sh # # ppp-linkdown # # part of pfSense (https://www.pfsense.org) # Copyright (c) 2004-2016 Electric Sheep Fencing, LLC # All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. IF="${1}" PROTOCOL="${2}" LOCAL_IP="${3}" if [ -f /tmp/${IF}up ] && [ -f /conf/${IF}.log ]; then seconds=$((`date -j +%s` - `/usr/bin/stat -f %m /tmp/${IF}up`)) /usr/local/sbin/ppp-log-uptime.sh $seconds ${IF} & fi /etc/rc.kill_states ${IF} ${LOCAL_IP} if [ "${PROTOCOL}" == "inet" && -s "/tmp/${IF}_defaultgw" ]; then GW=`head -n 1 /tmp/${IF}_defaultgw` DGW=`/sbin/route -n get -inet default | /usr/bin/awk '/gateway:/ {print $2}'` # Only remove the default gateway if it matches the gateway for this interface. See redmine #1837 if [ "${GW}" = "${DGW}" ]; then /sbin/route -q delete default ${GW} fi fi if [ "${PROTOCOL}" == "inet6" ]; then /usr/local/sbin/ppp-ipv6 ${IF} down fi # delete the node just in case mpd cannot do that /usr/sbin/ngctl shutdown ${IF}: if [ -f "/var/etc/nameserver_${IF}" ]; then # Remove old entries for nameserver in `cat /var/etc/nameserver_${IF}`; do /sbin/route -q delete ${nameserver} >/dev/null 2>&1 done /bin/rm -f /var/etc/nameserver_${IF} fi # Do not remove gateway used during filter reload. /bin/rm -f /tmp/${IF}_router /bin/rm -f /tmp/${IF}up /bin/rm -f /tmp/${IF}_ip /usr/local/sbin/pfSctl -c 'service reload dns'