pccard_ether revision 150882
114596Snate#!/bin/sh - 214596Snate# 350472Speter# $FreeBSD: head/etc/pccard_ether 150882 2005-10-03 18:20:44Z 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{ 70150882Sbrooks if [ -z "$rc_force" -a -x /usr/bin/grep ]; then 71150702Sbrooks if ifconfig $ifn | grep -s '[<,]UP[,>]' > /dev/null 2>&1; then 72118840Smbr # Interface is already up, so ignore it. 73118840Smbr exit 0 74118840Smbr fi 75107761Simp fi 76107761Simp 77147088Sbrooks /etc/rc.d/netif start $ifn 7870349Stoshi 79147088Sbrooks # Do route configuration if needed. 80147088Sbrooks # XXX: should probably do this by calling rc.d/routing. 81147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 82147088Sbrooks if ! dhcpif $ifn; then 83147088Sbrooks setup_routes 8470349Stoshi fi 85147088Sbrooks fi 8670349Stoshi 8767221Sjoe # IPv6 setup 88147088Sbrooks if checkyesno ipv6_enable; then 89147088Sbrooks network6_interface_setup $ifn 90147088Sbrooks fi 91150882Sbrooks} 92147088Sbrooks 93150882Sbrookspccard_ether_stop() 94150882Sbrooks{ 95147088Sbrooks if [ -n "`ifconfig_getargs $ifn`" ]; then 96147088Sbrooks if ! dhcpif $ifn; then 97147088Sbrooks remove_routes 98147088Sbrooks fi 9970349Stoshi fi 10070349Stoshi 101147088Sbrooks /etc/rc.d/netif stop $ifn 10270349Stoshi 103147088Sbrooks # clean ARP table 10470349Stoshi arp -d -a 10570349Stoshi 10670349Stoshi # Clean the routing table 107147088Sbrooks if checkyesno removable_route_flush; then 108147088Sbrooks route -n flush -inet > /dev/null 109147088Sbrooks fi 110150882Sbrooks} 111150882Sbrooks 112150882Sbrookspccard_ether_restart() 113150882Sbrooks{ 114150882Sbrooks # Hand implemented because the default implementation runs 115150882Sbrooks # the equivalent of "$0 start; $0 stop" and this script 116150882Sbrooks # doesn't support that syntax 117150882Sbrooks pccard_ether_stop 118150882Sbrooks pccard_ether_start 119150882Sbrooks} 120150882Sbrooks 121150882Sbrooksifn=$1 122150882Sbrooksshift 123150882Sbrooksif [ -z "$*" ]; then 124150882Sbrooks args="start" 125150882Sbrookselse 126150882Sbrooks args=$* 127150882Sbrooksfi 128150882Sbrooks 129150882Sbrooksload_rc_config pccard_ether 130150882Sbrooksrun_rc_command $args 131