#!/bin/sh # # Configure routing and miscellaneous network tunables # # $FreeBSD: src/etc/rc.d/routing,v 1.138 2003/06/29 17:59:09 mtm Exp $ # # PROVIDE: routing # REQUIRE: netif ppp # BEFORE: NETWORKING . /etc/rc.subr name="routing" start_cmd="routing_start" stop_cmd="routing_stop" extra_commands="options static change" static_cmd="static_start" change_cmd="change_start" options_cmd="options_start" routing_start() { static_start change_start options_start } routing_stop() { route -n flush } static_start() { case ${defaultrouter} in [Nn][Oo] | '') ;; *) static_routes="default ${static_routes}" route_default="default ${defaultrouter}" ;; esac # Setup static routes. This should be done before router discovery. # if [ -n "${static_routes}" ]; then for i in ${static_routes}; do eval route_args=\$route_${i} route add ${route_args} done fi } change_start() { # Change routes. This should be done before router discovery. # if [ -n "${change_routes}" ]; then for i in ${change_routes}; do eval route_args=\$change_route_${i} route change ${route_args} done fi } options_start() { echo -n 'Additional routing options:' case ${tcp_extensions} in [Yy][Ee][Ss] | '') ;; *) echo -n ' tcp extensions=NO' ${SYSCTL_W} net.inet.tcp.rfc1323=0 >/dev/null ;; esac case ${icmp_bmcastecho} in [Yy][Ee][Ss]) echo -n ' broadcast ping responses=YES' ${SYSCTL_W} net.inet.icmp.bmcastecho=1 >/dev/null ;; esac case ${icmp_drop_redirect} in [Yy][Ee][Ss]) echo -n ' ignore ICMP redirect=YES' ${SYSCTL_W} net.inet.icmp.drop_redirect=1 >/dev/null ;; esac case ${icmp_log_redirect} in [Yy][Ee][Ss]) echo -n ' log ICMP redirect=YES' ${SYSCTL_W} net.inet.icmp.log_redirect=1 >/dev/null ;; esac case ${gateway_enable} in [Yy][Ee][Ss]) echo -n ' IP gateway=YES' ${SYSCTL_W} net.inet.ip.forwarding=1 >/dev/null ;; esac case ${forward_sourceroute} in [Yy][Ee][Ss]) echo -n ' do source routing=YES' ${SYSCTL_W} net.inet.ip.sourceroute=1 >/dev/null ;; esac case ${accept_sourceroute} in [Yy][Ee][Ss]) echo -n ' accept source routing=YES' ${SYSCTL_W} net.inet.ip.accept_sourceroute=1 >/dev/null ;; esac case ${tcp_keepalive} in [Nn][Oo]) echo -n ' TCP keepalive=NO' ${SYSCTL_W} net.inet.tcp.always_keepalive=0 >/dev/null ;; esac case ${tcp_drop_synfin} in [Yy][Ee][Ss]) echo -n ' drop SYN+FIN packets=YES' ${SYSCTL_W} net.inet.tcp.drop_synfin=1 >/dev/null ;; esac case ${arpproxy_all} in [Yy][Ee][Ss]) echo -n ' ARP proxyall=YES' ${SYSCTL_W} net.link.ether.inet.proxyall=1 >/dev/null ;; esac case ${ip_portrange_first} in [Nn][Oo] | '') ;; *) echo -n " ip_portrange_first=$ip_portrange_first" ${SYSCTL_W} net.inet.ip.portrange.first=$ip_portrange_first >/dev/null ;; esac case ${ip_portrange_last} in [Nn][Oo] | '') ;; *) echo -n " ip_portrange_last=$ip_portrange_last" ${SYSCTL_W} net.inet.ip.portrange.last=$ip_portrange_last >/dev/null ;; esac echo '.' } load_rc_config $name run_rc_command "$1"