1846204b6SHasso Tepper#!/bin/sh 2846204b6SHasso Tepper# 3*8e373f92SAntonio Huete Jimenez# $OpenBSD: src/sbin/dhclient/Attic/dhclient-script,v 1.23 2012/09/18 18:27:55 krw Exp $ 4846204b6SHasso Tepper# 5846204b6SHasso Tepper# Copyright (c) 2003 Kenneth R Westerback <krw@openbsd.org> 6846204b6SHasso Tepper# 7846204b6SHasso Tepper# Permission to use, copy, modify, and distribute this software for any 8846204b6SHasso Tepper# purpose with or without fee is hereby granted, provided that the above 9846204b6SHasso Tepper# copyright notice and this permission notice appear in all copies. 10846204b6SHasso Tepper# 11846204b6SHasso Tepper# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12846204b6SHasso Tepper# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13846204b6SHasso Tepper# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14846204b6SHasso Tepper# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15846204b6SHasso Tepper# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16846204b6SHasso Tepper# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17846204b6SHasso Tepper# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18846204b6SHasso Tepper# 19846204b6SHasso Tepper# 20846204b6SHasso Tepper 21846204b6SHasso Tepper# 22846204b6SHasso Tepper# Helper functions that implement common actions. 23846204b6SHasso Tepper# 24846204b6SHasso Tepper 25846204b6SHasso Tepperdelete_old_address() { 26846204b6SHasso Tepper if [ -n "$old_ip_address" ]; then 277cbe3601SAntonio Huete Jimenez ifconfig $interface inet $old_ip_address delete 2834910103SAntonio Huete Jimenez #route delete "$old_ip_address" 127.0.0.1 >/dev/null 2>&1 29846204b6SHasso Tepper fi 30846204b6SHasso Tepper} 31846204b6SHasso Tepper 32846204b6SHasso Tepperadd_new_address() { 33846204b6SHasso Tepper ifconfig $interface \ 34846204b6SHasso Tepper inet $new_ip_address \ 35846204b6SHasso Tepper netmask $new_subnet_mask \ 367cbe3601SAntonio Huete Jimenez broadcast $new_broadcast_address 37846204b6SHasso Tepper 38846204b6SHasso Tepper # XXX Original TIMEOUT code did not do this unless $new_routers was set? 3934910103SAntonio Huete Jimenez #route add $new_ip_address 127.0.0.1 >/dev/null 2>&1 40846204b6SHasso Tepper} 41846204b6SHasso Tepper 42846204b6SHasso Tepperdelete_old_routes() { 43846204b6SHasso Tepper arp -dan 44846204b6SHasso Tepper} 45846204b6SHasso Tepper 46846204b6SHasso Tepperadd_new_routes() { 47846204b6SHasso Tepper for router in $new_routers; do 483a961bf3SAntonio Huete Jimenez route -q delete default 49846204b6SHasso Tepper if [ "$new_ip_address" = "$router" ]; then 503a961bf3SAntonio Huete Jimenez route -q add default -iface $router 51846204b6SHasso Tepper else 523a961bf3SAntonio Huete Jimenez route -q add default $router 53846204b6SHasso Tepper fi 54846204b6SHasso Tepper # 2nd and subsequent default routers error out, so explicitly 55846204b6SHasso Tepper # stop processing the list after the first one. 56846204b6SHasso Tepper break 57846204b6SHasso Tepper done 58846204b6SHasso Tepper} 59846204b6SHasso Tepper 60846204b6SHasso Tepperadd_new_resolv_conf() { 61b976f566SAntonio Huete Jimenez # Create resolv.conf when either $new_domain_name_servers or 62b976f566SAntonio Huete Jimenez # $new_domain_name are provided. As reported in PR#3135, some ISPs 63b976f566SAntonio Huete Jimenez # provide only $new_domain_name_servers. 64846204b6SHasso Tepper 65846204b6SHasso Tepper rm -f /etc/resolv.conf.std 66846204b6SHasso Tepper 67846204b6SHasso Tepper if [ -n "$new_domain_name" ]; then 68846204b6SHasso Tepper echo "search $new_domain_name" >>/etc/resolv.conf.std 69846204b6SHasso Tepper fi 70846204b6SHasso Tepper 71846204b6SHasso Tepper if [ -n "$new_domain_name_servers" ]; then 72846204b6SHasso Tepper for nameserver in $new_domain_name_servers; do 73846204b6SHasso Tepper echo "nameserver $nameserver" >>/etc/resolv.conf.std 74846204b6SHasso Tepper done 75846204b6SHasso Tepper fi 76846204b6SHasso Tepper 77846204b6SHasso Tepper if [ -f /etc/resolv.conf.std ]; then 78846204b6SHasso Tepper if [ -f /etc/resolv.conf.tail ]; then 79846204b6SHasso Tepper cat /etc/resolv.conf.tail >>/etc/resolv.conf.std 80846204b6SHasso Tepper fi 81846204b6SHasso Tepper 82846204b6SHasso Tepper # In case (e.g. during OpenBSD installs) /etc/resolv.conf 83846204b6SHasso Tepper # is a symbolic link, take care to preserve the link and write 84846204b6SHasso Tepper # the new data in the correct location. 85846204b6SHasso Tepper 86846204b6SHasso Tepper if [ -f /etc/resolv.conf ]; then 87846204b6SHasso Tepper cat /etc/resolv.conf > /etc/resolv.conf.save 88846204b6SHasso Tepper fi 89846204b6SHasso Tepper cat /etc/resolv.conf.std > /etc/resolv.conf 90846204b6SHasso Tepper rm -f /etc/resolv.conf.std 91846204b6SHasso Tepper 92846204b6SHasso Tepper # Try to ensure correct ownership and permissions. 93846204b6SHasso Tepper chown -RL root:wheel /etc/resolv.conf 94846204b6SHasso Tepper chmod -RL 644 /etc/resolv.conf 95846204b6SHasso Tepper 96846204b6SHasso Tepper return 0 97846204b6SHasso Tepper fi 98846204b6SHasso Tepper 99846204b6SHasso Tepper return 1 100846204b6SHasso Tepper} 101846204b6SHasso Tepper 102846204b6SHasso Tepper# 103846204b6SHasso Tepper# Start of active code. 104846204b6SHasso Tepper# 105846204b6SHasso Tepper 106846204b6SHasso Teppercase $reason in 107846204b6SHasso TepperMEDIUM) 1087cbe3601SAntonio Huete Jimenez # Not called by OpenBSD dhclient(8). 109846204b6SHasso Tepper ;; 110846204b6SHasso Tepper 111846204b6SHasso TepperPREINIT) 1127cbe3601SAntonio Huete Jimenez # Not called by OpenBSD dhclient(8). 113601f8f90SAntonio Huete Jimenez ;; 114601f8f90SAntonio Huete Jimenez 115601f8f90SAntonio Huete JimenezARPSEND) 1167cbe3601SAntonio Huete Jimenez # Not called by OpenBSD dhclient(8). 117601f8f90SAntonio Huete Jimenez exit 1 118846204b6SHasso Tepper ;; 119846204b6SHasso Tepper 1207cbe3601SAntonio Huete JimenezARPCHECK) 1217cbe3601SAntonio Huete Jimenez # Not called by OpenBSD dhclient(8). 1227cbe3601SAntonio Huete Jimenez # Always succeed. i.e. accept lease. 1237cbe3601SAntonio Huete Jimenez ;; 1247cbe3601SAntonio Huete Jimenez 125846204b6SHasso TepperBOUND|RENEW|REBIND|REBOOT) 126846204b6SHasso Tepper if [ -n "$old_ip_address" ]; then 127846204b6SHasso Tepper if [ "$old_ip_address" != "$new_ip_address" ]; then 128846204b6SHasso Tepper delete_old_address 129846204b6SHasso Tepper delete_old_routes 130846204b6SHasso Tepper fi 131846204b6SHasso Tepper fi 132846204b6SHasso Tepper if [ "$reason" = BOUND ] || 133846204b6SHasso Tepper [ "$reason" = REBOOT ] || 134846204b6SHasso Tepper [ -z "$old_ip_address" ] || 135846204b6SHasso Tepper [ "$old_ip_address" != "$new_ip_address" ]; then 136846204b6SHasso Tepper add_new_address 137846204b6SHasso Tepper add_new_routes 138846204b6SHasso Tepper fi 139846204b6SHasso Tepper add_new_resolv_conf 140846204b6SHasso Tepper ;; 141846204b6SHasso Tepper 142846204b6SHasso TepperEXPIRE|FAIL) 143846204b6SHasso Tepper if [ -n "$old_ip_address" ]; then 144846204b6SHasso Tepper delete_old_address 145846204b6SHasso Tepper delete_old_routes 146846204b6SHasso Tepper fi 147846204b6SHasso Tepper if [ -f /etc/resolv.conf.save ]; then 148846204b6SHasso Tepper cat /etc/resolv.conf.save > /etc/resolv.conf 149*8e373f92SAntonio Huete Jimenez rm -f /etc/resolv.conf.save 150846204b6SHasso Tepper fi 151846204b6SHasso Tepper ;; 152846204b6SHasso Tepper 153846204b6SHasso TepperTIMEOUT) 154846204b6SHasso Tepper add_new_address 155846204b6SHasso Tepper sleep 1 156846204b6SHasso Tepper if [ -n "$new_routers" ]; then 157846204b6SHasso Tepper set "$new_routers" 158846204b6SHasso Tepper if ping -q -c 1 -w 1 "$1"; then 159846204b6SHasso Tepper add_new_routes 160846204b6SHasso Tepper if add_new_resolv_conf; then 161846204b6SHasso Tepper exit 0 162846204b6SHasso Tepper fi 163846204b6SHasso Tepper fi 164846204b6SHasso Tepper fi 165057c89ffSAntonio Huete Jimenez ifconfig $interface inet $new_ip_address delete 166846204b6SHasso Tepper # XXX Why not a delete_old_address as before all other invocations of 167846204b6SHasso Tepper # delete_old_routes? 168846204b6SHasso Tepper delete_old_routes 169846204b6SHasso Tepper exit 1 170846204b6SHasso Tepper ;; 171846204b6SHasso Tepperesac 172846204b6SHasso Tepper 173846204b6SHasso Tepperexit 0 174