10696600cSBjoern A. Zeeb#!/bin/sh - 20696600cSBjoern A. Zeeb# 30696600cSBjoern A. Zeeb# 40696600cSBjoern A. Zeeb# pccard_ether interfacename [start|stop|restart] 50696600cSBjoern A. Zeeb# 60696600cSBjoern A. Zeeb# example: pccard_ether fxp0 start 70696600cSBjoern A. Zeeb# 80696600cSBjoern A. Zeeb 90696600cSBjoern A. Zeeb. /etc/rc.subr 100696600cSBjoern A. Zeeb. /etc/network.subr 110696600cSBjoern A. Zeeb 120696600cSBjoern A. Zeebname="pccard_ether" 130696600cSBjoern A. Zeebstart_precmd="checkauto" 140696600cSBjoern A. Zeebstart_cmd="pccard_ether_start" 150696600cSBjoern A. Zeebstop_precmd="checkauto" 160696600cSBjoern A. Zeebstop_cmd="pccard_ether_stop" 170696600cSBjoern A. Zeebrestart_precmd="checkauto" 180696600cSBjoern A. Zeebrestart_cmd="pccard_ether_restart" 190696600cSBjoern A. Zeebstartchildren_cmd="pccard_ether_startchildren" 200696600cSBjoern A. Zeebstopchildren_cmd="pccard_ether_stopchildren" 210696600cSBjoern A. Zeebextra_commands="startchildren stopchildren" 220696600cSBjoern A. Zeeb 230696600cSBjoern A. Zeebsetup_routes() 240696600cSBjoern A. Zeeb{ 250696600cSBjoern A. Zeeb # Add default route into $static_routes 260696600cSBjoern A. Zeeb case ${defaultrouter} in 270696600cSBjoern A. Zeeb [Nn][Oo] | '') 280696600cSBjoern A. Zeeb ;; 290696600cSBjoern A. Zeeb *) 300696600cSBjoern A. Zeeb static_routes="default ${static_routes}" 310696600cSBjoern A. Zeeb route_default="default ${defaultrouter}" 320696600cSBjoern A. Zeeb ;; 330696600cSBjoern A. Zeeb esac 340696600cSBjoern A. Zeeb 350696600cSBjoern A. Zeeb # Add private route for this interface into $static_routes 360696600cSBjoern A. Zeeb eval ifx_routes=\$static_routes_${ifn} 370696600cSBjoern A. Zeeb if [ -n "${ifx_routes}" ]; then 380696600cSBjoern A. Zeeb static_routes="${ifx_routes} ${static_routes}" 390696600cSBjoern A. Zeeb fi 400696600cSBjoern A. Zeeb 410696600cSBjoern A. Zeeb # Set up any static routes if specified 420696600cSBjoern A. Zeeb if [ -n "${static_routes}" ]; then 430696600cSBjoern A. Zeeb for i in ${static_routes}; do 440696600cSBjoern A. Zeeb eval route_args=\$route_${i} 450696600cSBjoern A. Zeeb route add ${route_args} 460696600cSBjoern A. Zeeb done 470696600cSBjoern A. Zeeb fi 480696600cSBjoern A. Zeeb} 490696600cSBjoern A. Zeeb 500696600cSBjoern A. Zeebremove_routes() 510696600cSBjoern A. Zeeb{ 520696600cSBjoern A. Zeeb # Delete static route if specified 530696600cSBjoern A. Zeeb eval ifx_routes=\$static_routes_${ifn} 540696600cSBjoern A. Zeeb if [ -n "${ifx_routes}" ]; then 550696600cSBjoern A. Zeeb for i in ${ifx_routes}; do 560696600cSBjoern A. Zeeb eval route_args=\$route_${i} 570696600cSBjoern A. Zeeb route delete ${route_args} 580696600cSBjoern A. Zeeb done 590696600cSBjoern A. Zeeb fi 600696600cSBjoern A. Zeeb} 610696600cSBjoern A. Zeeb 620696600cSBjoern A. Zeebcheckauto() 630696600cSBjoern A. Zeeb{ 640696600cSBjoern A. Zeeb if [ -z "$rc_force" ]; then 650696600cSBjoern A. Zeeb # Ignore interfaces with the NOAUTO keyword 660696600cSBjoern A. Zeeb autoif $ifn || exit 0 670696600cSBjoern A. Zeeb fi 680696600cSBjoern A. Zeeb} 690696600cSBjoern A. Zeeb 700696600cSBjoern A. Zeebpccard_ether_start() 710696600cSBjoern A. Zeeb{ 72*6d3bc576SEugene Grosbein ifisup $ifn 73*6d3bc576SEugene Grosbein case $? in 74*6d3bc576SEugene Grosbein 0) # Interface is already up, so ignore it. 750696600cSBjoern A. Zeeb if [ -z "$rc_force"]; then 760696600cSBjoern A. Zeeb exit 0 770696600cSBjoern A. Zeeb fi 78*6d3bc576SEugene Grosbein ;; 79*6d3bc576SEugene Grosbein 2) # Interface does not exist. 80*6d3bc576SEugene Grosbein exit 1 81*6d3bc576SEugene Grosbein ;; 82*6d3bc576SEugene Grosbein esac 830696600cSBjoern A. Zeeb 840696600cSBjoern A. Zeeb /etc/rc.d/netif quietstart $ifn 850696600cSBjoern A. Zeeb 860696600cSBjoern A. Zeeb # Do route configuration if needed. 870696600cSBjoern A. Zeeb # XXX: should probably do this by calling rc.d/routing. 880696600cSBjoern A. Zeeb if [ -n "`ifconfig_getargs $ifn`" ]; then 890696600cSBjoern A. Zeeb if ! dhcpif $ifn; then 900696600cSBjoern A. Zeeb setup_routes 910696600cSBjoern A. Zeeb fi 920696600cSBjoern A. Zeeb fi 930696600cSBjoern A. Zeeb 940696600cSBjoern A. Zeeb # XXX: IPv6 setup should be done in some way. 950696600cSBjoern A. Zeeb} 960696600cSBjoern A. Zeeb 970696600cSBjoern A. Zeebpccard_ether_stop() 980696600cSBjoern A. Zeeb{ 990696600cSBjoern A. Zeeb if [ -n "`ifconfig_getargs $ifn`" ]; then 1000696600cSBjoern A. Zeeb if ! dhcpif $ifn; then 1010696600cSBjoern A. Zeeb remove_routes 1020696600cSBjoern A. Zeeb fi 1030696600cSBjoern A. Zeeb fi 1040696600cSBjoern A. Zeeb 1050696600cSBjoern A. Zeeb /etc/rc.d/netif quietstop $ifn 1060696600cSBjoern A. Zeeb 1070696600cSBjoern A. Zeeb # clean ARP table 1080696600cSBjoern A. Zeeb ifexists $ifn && arp -d -i $ifn -a 1090696600cSBjoern A. Zeeb} 1100696600cSBjoern A. Zeeb 1110696600cSBjoern A. Zeebpccard_ether_restart() 1120696600cSBjoern A. Zeeb{ 1130696600cSBjoern A. Zeeb # Hand implemented because the default implementation runs 1140696600cSBjoern A. Zeeb # the equivalent of "$0 start; $0 stop" and this script 1150696600cSBjoern A. Zeeb # doesn't support that syntax 1160696600cSBjoern A. Zeeb pccard_ether_stop 1170696600cSBjoern A. Zeeb pccard_ether_start 1180696600cSBjoern A. Zeeb} 1190696600cSBjoern A. Zeeb 1200696600cSBjoern A. Zeebpccard_ether_startchildren() 1210696600cSBjoern A. Zeeb{ 1220696600cSBjoern A. Zeeb for child in `get_if_var $ifn wlans_IF`; do 1230696600cSBjoern A. Zeeb if ifexists $child; then 1240696600cSBjoern A. Zeeb continue 1250696600cSBjoern A. Zeeb fi 1260696600cSBjoern A. Zeeb /etc/rc.d/netif quietstart $child 1270696600cSBjoern A. Zeeb done 1280696600cSBjoern A. Zeeb} 1290696600cSBjoern A. Zeeb 1300696600cSBjoern A. Zeebpccard_ether_stopchildren() 1310696600cSBjoern A. Zeeb{ 1320696600cSBjoern A. Zeeb for child in `get_if_var $ifn wlans_IF`; do 1330696600cSBjoern A. Zeeb /etc/rc.d/netif quietstop $child 1340696600cSBjoern A. Zeeb done 1350696600cSBjoern A. Zeeb} 1360696600cSBjoern A. Zeeb 1370696600cSBjoern A. Zeebifn=$1 1380696600cSBjoern A. Zeebshift 1390696600cSBjoern A. Zeebif [ -z "$*" ]; then 1400696600cSBjoern A. Zeeb args="start" 1410696600cSBjoern A. Zeebelse 1420696600cSBjoern A. Zeeb args=$* 1430696600cSBjoern A. Zeebfi 1440696600cSBjoern A. Zeeb 1450696600cSBjoern A. Zeebload_rc_config pccard_ether 1460696600cSBjoern A. Zeebload_rc_config network 1470696600cSBjoern A. Zeebrun_rc_command $args 148