1#!/sbin/sh 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22# 23# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26# 27 28. /lib/svc/share/smf_include.sh 29. /lib/svc/share/ipf_include.sh 30 31# SERVICE = parent service name 32SERVICE=`echo $SMF_FMRI | /usr/bin/cut -f1,2 -d":"` 33 34case "$1" in 35'start') 36 37isopts=`/usr/sbin/svccfg <<-EOF 38 select $SMF_FMRI 39 listpg cmd_opts 40 41 EOF` 42 43if [ "$isopts" ] ; then 44 45#called by /usr/lib/lpsched; use cmd_opts properties only 46 47 num_notifiers=`/bin/svcprop -p cmd_opts/num_notifiers $SMF_FMRI` 48 49 if [ "$num_notifiers" != "" ] ; then 50 OPTS="$OPTS -n $num_notifiers" 51 fi 52 53 num_filters=`/bin/svcprop -p cmd_opts/num_filters $SMF_FMRI` 54 55 if [ "$num_filters" != "" ] ; then 56 OPTS="$OPTS -f $num_filters" 57 fi 58 59 fd_limit=`/bin/svcprop -p cmd_opts/fd_limit $SMF_FMRI` 60 61 if [ "$fd_limit" != "" ] ; then 62 OPTS="$OPTS -p $fd_limit" 63 fi 64 65 reserved_fds=`/bin/svcprop -p cmd_opts/reserved_fds $SMF_FMRI` 66 67 if [ "$reserved_fds" != "" ] ; then 68 OPTS="$OPTS -r $reserved_fds" 69 fi 70 71# clear out cmd_opts property group 72 73 svccfg <<-EOF 74 select $SMF_FMRI 75 delpg cmd_opts 76 77 EOF 78 79else 80 81# We are here through enable; use lpsched properties 82# Check for saved properties 83 84 num_notifiers=`/bin/svcprop -p lpsched/num_notifiers $SERVICE` 85 if [ "$num_notifiers" != "" ] && [ "$num_notifiers" != "0" ] ; then 86 OPTS="$OPTS -n $num_notifiers" 87 fi 88 89 num_filters=`/bin/svcprop -p lpsched/num_filters $SERVICE` 90 if [ "$num_filters" != "" ] && [ "$num_filters" != "0" ] ; then 91 OPTS="$OPTS -f $num_filters" 92 fi 93 94 fd_limit=`/bin/svcprop -p lpsched/fd_limit $SERVICE` 95 if [ "$fd_limit" != "" ] && [ "$fd_limit" != "0" ]; then 96 OPTS="$OPTS -p $fd_limit" 97 fi 98 99 reserved_fds=`/bin/svcprop -p lpsched/reserved_fds $SERVICE` 100 if [ "$reserved_fds" != "" ] && [ "$reserved_fds" != "0" ] ; then 101 OPTS="$OPTS -r $reserved_fds" 102 fi 103fi 104 105# set temporary or permanent properties from OPTS 106 107 [ -f /usr/lib/lp/local/lpsched ] || exit $SMF_EXIT_ERR_CONFIG 108 109 /usr/lib/lp/local/lpsched ${OPTS} 110 111 ;; 112 113'stop') 114 [ -f /usr/lib/lp/local/lpshut ] || exit $SMF_EXIT_ERR_CONFIG 115 116 /usr/lib/lp/local/lpshut 117 ;; 118 119'ipfilter') 120 FMRI=$2 121 IPP_FMRI="svc:/application/print/ipp-listener:default" 122 RFC1179_FMRI="svc:/application/print/rfc1179:default" 123 IPP_CONF=/etc/apache/httpd-standalone-ipp.conf 124 ip="any" 125 126 policy=`get_policy $FMRI` 127 128 file=`fmri_to_file $RFC1179_FMRI $IPF_SUFFIX` 129 echo "# $RFC1179_FMRI" >$file 130 service_is_enabled ${RFC1179_FMRI} 131 if [ $? -eq 0 ]; then 132 rfc_name=`svcprop -p inetd/name ${RFC1179_FMRI} 2>/dev/null` 133 rfc_proto=`svcprop -p inetd/proto ${RFC1179_FMRI} 2>/dev/null | \ 134 sed 's/6/ /'` 135 rfc_port=`$SERVINFO -p -t -s $rfc_name` 136 generate_rules $FMRI $policy $rfc_proto $ip $rfc_port $file 137 fi 138 139 file=`fmri_to_file $IPP_FMRI $IPF_SUFFIX` 140 echo "# $IPP_FMRI" >$file 141 service_is_enabled ${IPP_FMRI} 142 if [ $? -eq 0 ]; then 143 # 144 # If Listen directives are used, it's possibie to listen on 145 # more than one ports. Process the Port directives only when Listen 146 # directives don't exist. 147 # 148 ipp_ports=`grep '^[ \t]*[^# ]*Listen' ${IPP_CONF} | awk '{print $2}'` 149 150 if [ -z "$ipp_ports" ]; then 151 ipp_ports=`grep '^[ \t]*[^# ]*Port' ${IPP_CONF} | \ 152 awk '{print $2}' | tail -1` 153 fi 154 155 for port in $ipp_ports; do 156 generate_rules $FMRI $policy "tcp" $ip $port $file 157 done 158 fi 159 160 ;; 161 162*) 163 echo "Usage: $0 { start | stop }" 164 exit 1 165 ;; 166esac 167exit $SMF_EXIT_OK 168