pccard_ether revision 161386
1#!/bin/sh - 2# 3# $FreeBSD: head/etc/pccard_ether 161386 2006-08-17 03:03:38Z brooks $ 4# 5# pccard_ether interfacename [start|stop|restart] 6# 7# example: pccard_ether fxp0 start 8# 9 10. /etc/rc.subr 11. /etc/network.subr 12 13name="pccard_ether" 14start_precmd="checkauto" 15start_cmd="pccard_ether_start" 16stop_precmd="checkauto" 17stop_cmd="pccard_ether_stop" 18restart_precmd="checkauto" 19restart_cmd="pccard_ether_restart" 20 21setup_routes() 22{ 23 # Add default route into $static_routes 24 case ${defaultrouter} in 25 [Nn][Oo] | '') 26 ;; 27 *) 28 static_routes="default ${static_routes}" 29 route_default="default ${defaultrouter}" 30 ;; 31 esac 32 33 # Add private route for this interface into $static_routes 34 eval ifx_routes=\$static_routes_${ifn} 35 if [ -n "${ifx_routes}" ]; then 36 static_routes="${ifx_routes} ${static_routes}" 37 fi 38 39 # Set up any static routes if specified 40 if [ -n "${static_routes}" ]; then 41 for i in ${static_routes}; do 42 eval route_args=\$route_${i} 43 route add ${route_args} 44 done 45 fi 46} 47 48remove_routes() 49{ 50 # Delete static route if specified 51 eval ifx_routes=\$static_routes_${ifn} 52 if [ -n "${ifx_routes}" ]; then 53 for i in ${ifx_routes}; do 54 eval route_args=\$route_${i} 55 route delete ${route_args} 56 done 57 fi 58} 59 60checkauto() 61{ 62 if [ -z "$rc_force" ]; then 63 # Ignore interfaces with the NOAUTO keyword 64 autoif $ifn || exit 0 65 fi 66} 67 68pccard_ether_start() 69{ 70 if [ -z "$rc_force" -a -x /usr/bin/grep ]; then 71 if ifconfig $ifn | grep -s '[<,]UP[,>]' > /dev/null 2>&1; then 72 # Interface is already up, so ignore it. 73 exit 0 74 fi 75 fi 76 77 /etc/rc.d/netif start $ifn 78 79 # Do route configuration if needed. 80 # XXX: should probably do this by calling rc.d/routing. 81 if [ -n "`ifconfig_getargs $ifn`" ]; then 82 if ! dhcpif $ifn; then 83 setup_routes 84 fi 85 fi 86 87 # IPv6 setup 88 if checkyesno ipv6_enable; then 89 network6_interface_setup $ifn 90 fi 91} 92 93pccard_ether_stop() 94{ 95 if [ -n "`ifconfig_getargs $ifn`" ]; then 96 if ! dhcpif $ifn; then 97 remove_routes 98 fi 99 fi 100 101 /etc/rc.d/netif stop $ifn 102 103 # clean ARP table 104 ifexists $ifn && arp -d -i $ifn -a 105 106 # Clean the routing table 107 if checkyesno removable_route_flush; then 108 route -n flush -inet > /dev/null 109 fi 110} 111 112pccard_ether_restart() 113{ 114 # Hand implemented because the default implementation runs 115 # the equivalent of "$0 start; $0 stop" and this script 116 # doesn't support that syntax 117 pccard_ether_stop 118 pccard_ether_start 119} 120 121ifn=$1 122shift 123if [ -z "$*" ]; then 124 args="start" 125else 126 args=$* 127fi 128 129load_rc_config pccard_ether 130run_rc_command $args 131