X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=src%2Fppp%2Fip-up;h=b059a297d1cf2855e06e5fa8bf585be8196f29e5;hp=b71d6b5da3701cc77c6594c824e13296a4fe42a3;hb=77c863a2f113404a7f30b8591b9972291328980b;hpb=905fbf3e06898ae8a62a5daa2adcea4098bc8458 diff --git a/src/ppp/ip-up b/src/ppp/ip-up index b71d6b5da3..b059a297d1 100644 --- a/src/ppp/ip-up +++ b/src/ppp/ip-up @@ -1,5 +1,23 @@ #!/bin/sh -# +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### . /etc/sysconfig/rc . $rc_functions @@ -14,8 +32,16 @@ if [ "$DNS" == "Automatic" ]; then echo -n "$MS_DNS1" > /var/ipfire/red/dns1 echo -n "$MS_DNS2" > /var/ipfire/red/dns2 else - echo -n "$PRIMARY_DNS" > /var/ipfire/red/dns1 - echo -n "$SECONDARY_DNS" > /var/ipfire/red/dns2 + if [ "$PRIMARY_DNS" == "10.11.12.13" ]; then + echo -n "$DNS1" > /var/ipfire/red/dns1 + else + echo -n "$PRIMARY_DNS" > /var/ipfire/red/dns1 + fi + if [ "$SECONDARY_DNS" == "10.11.12.14" ]; then + echo -n "$DNS2" > /var/ipfire/red/dns2 + else + echo -n "$SECONDARY_DNS" > /var/ipfire/red/dns2 + fi fi else echo -n "$DNS1" > /var/ipfire/red/dns1 @@ -25,9 +51,33 @@ fi echo -n "$1" > /var/ipfire/red/iface echo -n "$4" > /var/ipfire/red/local-ipaddress echo -n "$5" > /var/ipfire/red/remote-ipaddress - touch /var/ipfire/red/active +/sbin/ip route replace default via ${IPREMOTE} dev ppp0 run_subdir ${rc_base}/init.d/networking/red.up/ +#Check if gateway has answerd to ping, if not replace with ping.ipfire.org +TEST=`/usr/bin/ping -c 2 $5 2>/dev/null | tail -2 | head -1 | cut -d"," -f2`; + +grep -v -E "\" /etc/hosts > /tmp/hosts + +if [ "$TEST" == " 2 received" ]; then + #ping the ppp-gateway + echo "$5 gateway" >> /tmp/hosts +else + #no answer + HOST=`host ping.ipfire.org`; + FIRE=`echo $HOST | cut -d" " -f4`; + CHK=`echo $HOST | cut -d" " -f3`; + if [ "$CHK" == "address" ]; then + #use ping.ipfire.org + echo "$FIRE gateway" >> /tmp/hosts + else + #DNS lookup failed use direct ip + echo "81.3.27.38 gateway" >> /tmp/hosts + fi +fi +mv /tmp/hosts /etc/hosts + [ -e "/var/ipfire/ppp/nobeeps" ] || /etc/rc.d/init.d/beep up +