pccard_ether revision 161437
114596Snate#!/bin/sh - 214596Snate# 350472Speter# $FreeBSD: head/etc/pccard_ether 161437 2006-08-18 13:19:45Z brooks $ 438738Sbrian# 5150882Sbrooks# pccard_ether interfacename [start|stop|restart] 614596Snate# 7147088Sbrooks# example: pccard_ether fxp0 start 814596Snate# 914596Snate 10147088Sbrooks. /etc/rc.subr 11118840Smbr. /etc/network.subr 12118840Smbr 13150882Sbrooksname="pccard_ether" 14150882Sbrooksstart_precmd="checkauto" 15150882Sbrooksstart_cmd="pccard_ether_start" 16150882Sbrooksstop_precmd="checkauto" 17150882Sbrooksstop_cmd="pccard_ether_stop" 18150882Sbrooksrestart_precmd="checkauto" 19150882Sbrooksrestart_cmd="pccard_ether_restart" 20118840Smbr 21147088Sbrookssetup_routes() 22147088Sbrooks{ 23147088Sbrooks # Add default route into $static_routes 24147088Sbrooks case ${defaultrouter} in 25147088Sbrooks [Nn][Oo] | '') 26118840Smbr ;; 27118840Smbr *) 28147088Sbrooks static_routes="default ${static_routes}" 29147088Sbrooks route_default="default ${defaultrouter}" 30118840Smbr ;; 31118840Smbr esac 3267221Sjoe 33147088Sbrooks # Add private route for this interface into $static_routes 34147088Sbrooks eval ifx_routes=\$static_routes_${ifn} 35147088Sbrooks if [ -n "${ifx_routes}" ]; then 36147088Sbrooks static_routes="${ifx_routes} ${static_routes}" 3767221Sjoe fi 38147088Sbrooks 39147088Sbrooks # Set up any static routes if specified 40147088Sbrooks if [ -n "${static_routes}" ]; then 41147088Sbrooks for i in ${static_routes}; do 42147088Sbrooks eval route_args=\$route_${i} 43147088Sbrooks route add ${route_args} 44147088Sbrooks done 45147088Sbrooks fi 4667221Sjoe} 4767221Sjoe 48147088Sbrooksremove_routes() 49147088Sbrooks{ 50147088Sbrooks # Delete static route if specified 51147088Sbrooks eval ifx_routes=\$static_routes_${ifn} 52147088Sbrooks if [ -n "${ifx_routes}" ]; then 53147088Sbrooks for i in ${ifx_routes}; do 54147088Sbrooks eval route_args=\$route_${i} 55147088Sbrooks route delete ${route_args} 56147088Sbrooks done 57118840Smbr fi 58118840Smbr} 59118840Smbr 60150882Sbrookscheckauto() 61150882Sbrooks{ 62150882Sbrooks if [ -z "$rc_force" ]; then 63150882Sbrooks # Ignore interfaces with the NOAUTO keyword 64150882Sbrooks autoif $ifn || exit 0 65150882Sbrooks fi 66150882Sbrooks} 67147424Sbrooks 68150882Sbrookspccard_ether_start() 69150882Sbrooks{ 70161437Sbrooks ifexists $ifn || exit 1 71161437Sbrooks 72150882Sbrooks if [ -z "$rc_force" -a -x /usr/bin/grep ]; then 73150702Sbrooks if ifconfig $ifn | grep -s '[<,]UP[,>]' > /dev/null 2>&1; then 74118840Smbr # Interface is already up, so ignore it. 75118840Smbr exit 0 76118840Smbr fi 77107761Simp fi 78107761Simp 79147088Sbrooks /etc/rc.d/netif start $ifn 8070349Stoshi 81147088Sbrooks # Do route configuration if needed. 82147088Sbrooks # XXX: should probably do this by calling rc.d/routing. 83147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 84147088Sbrooks if ! dhcpif $ifn; then 85147088Sbrooks setup_routes 8670349Stoshi fi 87147088Sbrooks fi 8870349Stoshi 8967221Sjoe # IPv6 setup 90147088Sbrooks if checkyesno ipv6_enable; then 91147088Sbrooks network6_interface_setup $ifn 92147088Sbrooks fi 93150882Sbrooks} 94147088Sbrooks 95150882Sbrookspccard_ether_stop() 96150882Sbrooks{ 97147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 98147088Sbrooks if ! dhcpif $ifn; then 99147088Sbrooks remove_routes 100147088Sbrooks fi 10170349Stoshi fi 10270349Stoshi 103147088Sbrooks /etc/rc.d/netif stop $ifn 10470349Stoshi 105147088Sbrooks # clean ARP table 106161386Sbrooks ifexists $ifn && arp -d -i $ifn -a 10770349Stoshi 10870349Stoshi # Clean the routing table 109147088Sbrooks if checkyesno removable_route_flush; then 110147088Sbrooks route -n flush -inet > /dev/null 111147088Sbrooks fi 112150882Sbrooks} 113150882Sbrooks 114150882Sbrookspccard_ether_restart() 115150882Sbrooks{ 116150882Sbrooks # Hand implemented because the default implementation runs 117150882Sbrooks # the equivalent of "$0 start; $0 stop" and this script 118150882Sbrooks # doesn't support that syntax 119150882Sbrooks pccard_ether_stop 120150882Sbrooks pccard_ether_start 121150882Sbrooks} 122150882Sbrooks 123150882Sbrooksifn=$1 124150882Sbrooksshift 125150882Sbrooksif [ -z "$*" ]; then 126150882Sbrooks args="start" 127150882Sbrookselse 128150882Sbrooks args=$* 129150882Sbrooksfi 130150882Sbrooks 131150882Sbrooksload_rc_config pccard_ether 132150882Sbrooksrun_rc_command $args 133