pccard_ether revision 165011
114596Snate#!/bin/sh - 214596Snate# 350472Speter# $FreeBSD: head/etc/pccard_ether 165011 2006-12-08 15:48:42Z hrs $ 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 72162480Sbrooks if [ -z "$rc_force" ]; then 73162480Sbrooks for uif in `ifconfig -ul`; do 74162480Sbrooks if [ "${uif}" = "${ifn}" ]; then 75162480Sbrooks # Interface is already up, so ignore it. 76162480Sbrooks exit 0 77162480Sbrooks fi 78162480Sbrooks done 79107761Simp fi 80107761Simp 81147088Sbrooks /etc/rc.d/netif start $ifn 8270349Stoshi 83147088Sbrooks # Do route configuration if needed. 84147088Sbrooks # XXX: should probably do this by calling rc.d/routing. 85147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 86147088Sbrooks if ! dhcpif $ifn; then 87147088Sbrooks setup_routes 8870349Stoshi fi 89147088Sbrooks fi 9070349Stoshi 91165011Shrs # XXX: IPv6 setup should be done in some way. 92150882Sbrooks} 93147088Sbrooks 94150882Sbrookspccard_ether_stop() 95150882Sbrooks{ 96147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 97147088Sbrooks if ! dhcpif $ifn; then 98147088Sbrooks remove_routes 99147088Sbrooks fi 10070349Stoshi fi 10170349Stoshi 102147088Sbrooks /etc/rc.d/netif stop $ifn 10370349Stoshi 104147088Sbrooks # clean ARP table 105161386Sbrooks ifexists $ifn && arp -d -i $ifn -a 106150882Sbrooks} 107150882Sbrooks 108150882Sbrookspccard_ether_restart() 109150882Sbrooks{ 110150882Sbrooks # Hand implemented because the default implementation runs 111150882Sbrooks # the equivalent of "$0 start; $0 stop" and this script 112150882Sbrooks # doesn't support that syntax 113150882Sbrooks pccard_ether_stop 114150882Sbrooks pccard_ether_start 115150882Sbrooks} 116150882Sbrooks 117150882Sbrooksifn=$1 118150882Sbrooksshift 119150882Sbrooksif [ -z "$*" ]; then 120150882Sbrooks args="start" 121150882Sbrookselse 122150882Sbrooks args=$* 123150882Sbrooksfi 124150882Sbrooks 125150882Sbrooksload_rc_config pccard_ether 126150882Sbrooksrun_rc_command $args 127