svc-route revision eb1a34638eba7c5add1421327f3eb225a8ea7518
908f1e1388f616898b4e515d343c0414f2a6472esd#!/sbin/sh
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# CDDL HEADER START
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# The contents of this file are subject to the terms of the
908f1e1388f616898b4e515d343c0414f2a6472esd# Common Development and Distribution License (the "License").
908f1e1388f616898b4e515d343c0414f2a6472esd# You may not use this file except in compliance with the License.
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
908f1e1388f616898b4e515d343c0414f2a6472esd# or http://www.opensolaris.org/os/licensing.
908f1e1388f616898b4e515d343c0414f2a6472esd# See the License for the specific language governing permissions
908f1e1388f616898b4e515d343c0414f2a6472esd# and limitations under the License.
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# When distributing Covered Code, include this CDDL HEADER in each
908f1e1388f616898b4e515d343c0414f2a6472esd# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
908f1e1388f616898b4e515d343c0414f2a6472esd# If applicable, add the following below this CDDL HEADER, with the
908f1e1388f616898b4e515d343c0414f2a6472esd# fields enclosed by brackets "[]" replaced with your own identifying
908f1e1388f616898b4e515d343c0414f2a6472esd# information: Portions Copyright [yyyy] [name of copyright owner]
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# CDDL HEADER END
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
908f1e1388f616898b4e515d343c0414f2a6472esd# Use is subject to license terms.
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd. /lib/svc/share/smf_include.sh
908f1e1388f616898b4e515d343c0414f2a6472esd. /lib/svc/share/routing_include.sh
908f1e1388f616898b4e515d343c0414f2a6472esd. /lib/svc/share/ipf_include.sh
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esdsmf_configure_ip || exit $SMF_EXIT_OK
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esdcreate_ipf_rules()
908f1e1388f616898b4e515d343c0414f2a6472esd{
908f1e1388f616898b4e515d343c0414f2a6472esd FMRI=$1
908f1e1388f616898b4e515d343c0414f2a6472esd file=`fmri_to_file ${FMRI} $IPF_SUFFIX`
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd #
908f1e1388f616898b4e515d343c0414f2a6472esd # route:default is enabled iff route discovery is required. Allow
908f1e1388f616898b4e515d343c0414f2a6472esd # incoming icmp from routers for successful discovery.
908f1e1388f616898b4e515d343c0414f2a6472esd echo "# $FMRI" >$file
908f1e1388f616898b4e515d343c0414f2a6472esd gen_IRDP_rules $file
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd #
908f1e1388f616898b4e515d343c0414f2a6472esd # A potential router so apply policy to RIP, 520 udp
908f1e1388f616898b4e515d343c0414f2a6472esd #
908f1e1388f616898b4e515d343c0414f2a6472esd policy=`get_policy $FMRI`
908f1e1388f616898b4e515d343c0414f2a6472esd iana_name=`svcprop -p $FW_CONTEXT_PG/name ${FMRI} 2>/dev/null`
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd tport=`$SERVINFO -p -t -s $iana_name 2>/dev/null`
908f1e1388f616898b4e515d343c0414f2a6472esd uport=`$SERVINFO -p -u -s $iana_name 2>/dev/null`
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd if [ -n "$tport" ]; then
908f1e1388f616898b4e515d343c0414f2a6472esd generate_rules $FMRI $policy "tcp" "any" $tport $file
908f1e1388f616898b4e515d343c0414f2a6472esd fi
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd if [ -n "$uport" ]; then
908f1e1388f616898b4e515d343c0414f2a6472esd generate_rules $FMRI $policy "udp" "any" $uport $file
908f1e1388f616898b4e515d343c0414f2a6472esd fi
908f1e1388f616898b4e515d343c0414f2a6472esd}
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esdif [ -n "$1" -a "$1" = "ipfilter" ]; then
908f1e1388f616898b4e515d343c0414f2a6472esd create_ipf_rules $2
908f1e1388f616898b4e515d343c0414f2a6472esd exit "$SMF_EXIT_OK"
908f1e1388f616898b4e515d343c0414f2a6472esdfi
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esddaemon_args=`get_daemon_args $SMF_FMRI`
908f1e1388f616898b4e515d343c0414f2a6472esdoptions="AdghmnqsStvVzT:F:P:"
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# Handle upgrade - routing/daemon-args property must be mapped to properties
908f1e1388f616898b4e515d343c0414f2a6472esd# in routeadm property group. Note that the SMF-incompatible -t option is not
908f1e1388f616898b4e515d343c0414f2a6472esd# supported, since it requires that in.routed run in the foreground.
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esdif [ -n "$daemon_args" ]; then
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "A" ignore_auth false true
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_ordered_multivalue_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "F" minimize_routes
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "g" offer_default_route true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "h" advertise_host_routes false true
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "m" advertise_host_routes_primary true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "n" install_routes false true
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_ordered_multivalue_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "P" parameters
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "q" quiet_mode true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "s" supply_routes true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "S" default_routes_only true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_value_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "T" log_file
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "v" debug true false
908f1e1388f616898b4e515d343c0414f2a6472esd set_daemon_boolean_property "$SMF_FMRI" "$daemon_args" \
908f1e1388f616898b4e515d343c0414f2a6472esd "$options" "z" debug true
908f1e1388f616898b4e515d343c0414f2a6472esd clear_daemon_args $SMF_FMRI
908f1e1388f616898b4e515d343c0414f2a6472esdfi
908f1e1388f616898b4e515d343c0414f2a6472esd
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esd# Assemble arguments to daemon from properties
908f1e1388f616898b4e515d343c0414f2a6472esd#
908f1e1388f616898b4e515d343c0414f2a6472esdargs="`get_daemon_option_from_boolean_property $SMF_FMRI ignore_auth \
908f1e1388f616898b4e515d343c0414f2a6472esd A false`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd offer_default_route g true`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd advertise_host_routes h false`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd advertise_host_routes_primary m true`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd install_routes n false`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd quiet_mode q true`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
908f1e1388f616898b4e515d343c0414f2a6472esd supply_routes s true`"
908f1e1388f616898b4e515d343c0414f2a6472esdargs="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
default_routes_only S true`"
args="$args`get_daemon_option_from_boolean_property $SMF_FMRI \
debug z true`"
if [ -n "$args" ]; then
args="-${args}"
fi
args="$args `get_daemon_ordered_multivalue_option_from_property $SMF_FMRI \
minimize_routes F`"
args="$args `get_daemon_ordered_multivalue_option_from_property \
$SMF_FMRI parameters P`"
args="$args `get_daemon_option_from_property $SMF_FMRI \
log_file T`"
/usr/sbin/in.routed $args
[ "$?" = 0 ] || exit $SMF_EXIT_ERR_FATAL
exit "$SMF_EXIT_OK"