pccard_ether revision 162480
1#!/bin/sh - 2# 3# $FreeBSD: head/etc/pccard_ether 162480 2006-09-20 19:45:30Z 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 ifexists $ifn || exit 1 71 72 if [ -z "$rc_force" ]; then 73 for uif in `ifconfig -ul`; do 74 if [ "${uif}" = "${ifn}" ]; then 75 # Interface is already up, so ignore it. 76 exit 0 77 fi 78 done 79 fi 80 81 /etc/rc.d/netif start $ifn 82 83 # Do route configuration if needed. 84 # XXX: should probably do this by calling rc.d/routing. 85 if [ -n "`ifconfig_getargs $ifn`" ]; then 86 if ! dhcpif $ifn; then 87 setup_routes 88 fi 89 fi 90 91 # IPv6 setup 92 if checkyesno ipv6_enable; then 93 network6_interface_setup $ifn 94 fi 95} 96 97pccard_ether_stop() 98{ 99 if [ -n "`ifconfig_getargs $ifn`" ]; then 100 if ! dhcpif $ifn; then 101 remove_routes 102 fi 103 fi 104 105 /etc/rc.d/netif stop $ifn 106 107 # clean ARP table 108 ifexists $ifn && arp -d -i $ifn -a 109 110 # Clean the routing table 111 if checkyesno removable_route_flush; then 112 route -n flush -inet > /dev/null 113 fi 114} 115 116pccard_ether_restart() 117{ 118 # Hand implemented because the default implementation runs 119 # the equivalent of "$0 start; $0 stop" and this script 120 # doesn't support that syntax 121 pccard_ether_stop 122 pccard_ether_start 123} 124 125ifn=$1 126shift 127if [ -z "$*" ]; then 128 args="start" 129else 130 args=$* 131fi 132 133load_rc_config pccard_ether 134run_rc_command $args 135