pccard_ether revision 70349
155714Skris#!/bin/sh - 255714Skris# 355714Skris# $FreeBSD: head/etc/pccard_ether 70349 2000-12-25 09:21:18Z toshi $ 455714Skris# 555714Skris# pccard_ether interfacename [start|stop] [ifconfig option] 655714Skris# 755714Skris# example: pccard_ether ep0 start -link0 8280304Sjkim# 955714Skris 1055714Skrisstop_dhcp() { 1155714Skris if [ -s /var/run/dhclient.${interface}.pid ]; then 1255714Skris pidfile="/var/run/dhclient.${interface}.pid" 1355714Skris elif [ -s /var/run/dhcpc.${interface}.pid ]; then 1455714Skris pidfile="/var/run/dhcpc.${interface}.pid" 15280304Sjkim else 1655714Skris return 1755714Skris fi 1855714Skris kill `cat ${pidfile}` 1955714Skris rm -f ${pidfile} 2055714Skris} 2155714Skris 22280304Sjkimstart_dhcp() { 2355714Skris stop_dhcp 2455714Skris if [ -x "${dhcp_program}" ]; then 2555714Skris if [ `basename ${dhcp_program}` = "dhclient" ]; then 2655714Skris pidfile="/var/run/dhclient.${interface}.pid" 2755714Skris dhcp_flags="${dhcp_flags} -pf ${pidfile}" 2855714Skris fi 2955714Skris ${dhcp_program} ${dhcp_flags} ${interface} 3055714Skris else 3155714Skris echo "${dhcp_program}: DHCP client software not available" 3255714Skris fi 3355714Skris} 3455714Skris 3555714Skris# Suck in the configuration variables 3655714Skris# 37280304Sjkimif [ -r /etc/defaults/rc.conf ]; then 3855714Skris . /etc/defaults/rc.conf 3955714Skris source_rc_confs 40280304Sjkimelif [ -r /etc/rc.conf ]; then 4155714Skris . /etc/rc.conf 4255714Skrisfi 4355714Skris 4455714Skrisinterface=$1 4555714Skrisshift 4655714Skrisstartstop=$1 4755714Skrisshift 4855714Skris 4955714Skriscase ${pccard_ifconfig} in 5055714Skris[Nn][Oo] | '') 5155714Skris expr "${removable_interfaces}" : ".*${interface}" > /dev/null || exit 0 52280304Sjkim ;; 5355714Skris*) 5455714Skris # Backward compatible 5555714Skris eval ifconfig_${interface}=\${pccard_ifconfig} 5655714Skris ;; 5755714Skrisesac 5855714Skris 5955714Skriscase ${startstop} in 6055714Skris[Ss][Tt][Aa][Rr][Tt] | '') 6155714Skris if [ -r /etc/start_if.${interface} ]; then 6255714Skris . /etc/start_if.${interface} 63280304Sjkim fi 64280304Sjkim 65280304Sjkim eval ifconfig_args=\$ifconfig_${interface} 66280304Sjkim case ${ifconfig_args} in 67280304Sjkim [Nn][Oo] | '') 68280304Sjkim ;; 69280304Sjkim [Dd][Hh][Cc][Pp]) 70280304Sjkim # Start up the DHCP client program 71280304Sjkim start_dhcp 72280304Sjkim ;; 73280304Sjkim *) 74280304Sjkim # Do the primary ifconfig if specified 75280304Sjkim ifconfig ${interface} ${ifconfig_args} $* 76280304Sjkim 77280304Sjkim # Check to see if aliases need to be added 78280304Sjkim alias=0 79280304Sjkim while : 80280304Sjkim do 81280304Sjkim eval ifx_args=\$ifconfig_${interface}_alias${alias} 82280304Sjkim if [ -n "${ifx_args}" ]; then 83280304Sjkim ifconfig ${interface} ${ifx_args} alias 84280304Sjkim alias=`expr ${alias} + 1` 85280304Sjkim else 86280304Sjkim break; 87280304Sjkim fi 88280304Sjkim done 89280304Sjkim 90280304Sjkim # Do ipx address if specified 91280304Sjkim eval ifx_args=\$ifconfig_${interface}_ipx 92280304Sjkim if [ -n "${ifx_args}" ]; then 93280304Sjkim ifconfig ${interface} ${ifx_args} 94280304Sjkim fi 95280304Sjkim 96280304Sjkim # Add default route into $static_routes 97280304Sjkim case ${defaultrouter} in 98280304Sjkim [Nn][Oo] | '') 9955714Skris ;; 100109998Smarkm *) 101280304Sjkim static_routes="default ${static_routes}" 102280304Sjkim route_default="default ${defaultrouter}" 103280304Sjkim ;; 104280304Sjkim esac 105280304Sjkim 106280304Sjkim # Add private route for this interface into $static_routes 107280304Sjkim eval ifx_routes=\$static_routes_${interface} 10855714Skris if [ -n "${ifx_routes}" ]; then 109280304Sjkim static_routes="${ifx_routes} ${static_routes}" 110280304Sjkim fi 111280304Sjkim 112280304Sjkim # Set up any static routes if specified 113280304Sjkim if [ -n "${static_routes}" ]; then 114280304Sjkim for i in ${static_routes}; do 115280304Sjkim eval route_args=\$route_${i} 11655714Skris route add ${route_args} 117280304Sjkim done 118280304Sjkim fi 119280304Sjkim ;; 120280304Sjkim esac 121280304Sjkim 122280304Sjkim # IPv6 setup 123280304Sjkim case ${ipv6_enable} in 124280304Sjkim [Yy][Ee][Ss]) 125194206Ssimon case ${ipv6_gateway_enable} in 12655714Skris [Yy][Ee][Ss]) 127109998Smarkm ;; 128280304Sjkim *) 129280304Sjkim sysctl -w net.inet6.ip6.forwarding=0 130280304Sjkim sysctl -w net.inet6.ip6.accept_rtadv=1 131280304Sjkim ifconfig ${interface} up 132280304Sjkim rtsol ${interface} 133280304Sjkim ;; 134280304Sjkim esac 135280304Sjkim ;; 136280304Sjkim esac 137280304Sjkim ;; 138280304Sjkim# Stop the interface 13955714Skris*) 140280304Sjkim if [ -r /etc/stop_if.${interface} ]; then 141280304Sjkim . /etc/stop_if.${interface} 142280304Sjkim fi 143280304Sjkim 144280304Sjkim eval ifconfig_args=\$ifconfig_${interface} 145280304Sjkim case ${ifconfig_args} in 14655714Skris [Nn][Oo] | '') 147280304Sjkim ;; 14855714Skris [Dd][Hh][Cc][Pp]) 149280304Sjkim # Stop the DHCP client for this interface 150280304Sjkim stop_dhcp 151280304Sjkim ;; 152280304Sjkim *) 153280304Sjkim # Delelte static route if specified 154280304Sjkim eval ifx_routes=\$static_routes_${interface} 155280304Sjkim if [ -n "${ifx_routes}" ]; then 156280304Sjkim for i in ${ifx_routes}; do 157280304Sjkim eval route_args=\$route_${i} 158280304Sjkim route delete ${route_args} 159280304Sjkim done 160280304Sjkim fi 161280304Sjkim 162280304Sjkim # Delete aliases if exist 163280304Sjkim alias=0 164280304Sjkim while : 165280304Sjkim do 166280304Sjkim eval ifx_args=\$ifconfig_${interface}_alias${alias} 167280304Sjkim if [ -n "${ifx_args}" ]; then 168280304Sjkim ifconfig ${interface} ${ifx_args} alias delete 169280304Sjkim alias=`expr ${alias} + 1` 170280304Sjkim else 171280304Sjkim break; 172280304Sjkim fi 173280304Sjkim done 174280304Sjkim ;; 175280304Sjkim esac 176280304Sjkim 177280304Sjkim # Remove the network interface and cleaning ARP table 178280304Sjkim ifconfig ${interface} delete 179280304Sjkim arp -d -a 180280304Sjkim 181280304Sjkim # Clean the routing table 182280304Sjkim case ${removable_route_flush} in 183280304Sjkim [Nn][Oo]) 184280304Sjkim ;; 185280304Sjkim *) 186280304Sjkim # flush beforehand, just in case.... 187280304Sjkim route -n flush 188280304Sjkim ;; 189280304Sjkim esac 190280304Sjkim ;; 191280304Sjkimesac 192280304Sjkim