Skip to content
This repository has been archived by the owner on Aug 31, 2019. It is now read-only.

Commit

Permalink
Add SMF for bind99
Browse files Browse the repository at this point in the history
  • Loading branch information
Filip Hajny committed May 12, 2012
1 parent 9705b31 commit ae0ae3f
Show file tree
Hide file tree
Showing 2 changed files with 258 additions and 0 deletions.
141 changes: 141 additions & 0 deletions meta/net/bind99/manifest.xml
@@ -0,0 +1,141 @@
<?xml version="1.0"?>
<!--
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
-->
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Copyright 2007 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
ident "@(#)server.xml 1.8 07/06/19 SMI"
-->
<!-- Portions Copyright 2007 Vedran Bender -->
<service_bundle type='manifest' name='dns-server'>
<service name='smartos/@SMF_NAME@' type='service' version='1'>
<dependency name='filesystem_minimal' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local' />
</dependency>
<dependency name='loopback' grouping='require_any' restart_on='error' type='service'>
<service_fmri value='svc:/network/loopback' />
</dependency>
<dependency name='network' grouping='optional_all' restart_on='error' type='service'>
<service_fmri value='svc:/milestone/network' />
</dependency>
<dependency name='config-files' grouping='require_any' restart_on='refresh' type='path'>
<service_fmri value='file://localhost@PKG_SYSCONFDIR@/named.conf' />
</dependency>
<exec_method type='method' name='stop' exec=':kill' timeout_seconds='60' />
<!--
In order to run multiple named(1M) processes with their own
configuration file or properties each must have a unique
instance.
-->
<instance name='default' enabled='false'>
<exec_method type='method' name='start' exec='@PREFIX@/@SMF_METHOD_FILE@ %m %i' timeout_seconds='60'>
<method_context>
<!--
privileges: (see privileges(5) and /etc/security/priv_names)
file_dac_read, file_dac_search:
Necessary for reading the configuration file
even it is restricted by the file permission.
net_privaddr:
Bind to a privileged port number.
sys_resource:
Permit the setting of resource limits (eg. stack
size).
proc_chroot:
Permit use of chroot(2).
-->
<method_credential user='root' group='root' privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr,file_dac_read,file_dac_search,sys_resource,proc_chroot' />
</method_context>
</exec_method>
<!--
SIGHUP causes named to reread its configuration file, but not any
of the properties below.
-->
<exec_method type='method' name='refresh' exec=':kill -HUP' timeout_seconds='60'>
<method_context />
</exec_method>
<property_group name='general' type='framework'>
<!-- manage DNS server state -->
<propval name='action_authorization' type='astring' value='solaris.smf.manage.bind' />
<propval name='value_authorization' type='astring' value='solaris.smf.manage.bind' />
</property_group>
<!-- Default property settings for named(1M) instance. -->
<property_group name='options' type='application'>
<!--
server: specifies an alternative server command. If
not specified the default /usr/sbin/named is used.
-->
<propval name='server' type='astring' value='' />
<!--
configuration_file: specifies an alternative
configuration file to be used. The property is similar
to named(1M) command line option '-c'
-->
<propval name='configuration_file' type='astring' value='' />
<!--
ip_interfaces: specifies which IP transport BIND will
transmit on. Possible values are 'IPv4' or 'IPv6'. Any
other setting assumes 'all', the default.
Equivalent command line option '-4' or '-6'.
-->
<propval name='ip_interfaces' type='astring' value='all' />
<!--
listen_on_port: Specifies the default UDP and TCP port
which will be used to listen for DNS requests.
Equivalent command line option '-p <integer>'.
-->
<propval name='listen_on_port' type='integer' value='0' />
<!--
debug_level: Specifies the default debug level. The
default is 0; no debugging. The Higher the number the
more verbose debug information becomes.
Equivalent command line option '-d <integer>'.
-->
<propval name='debug_level' type='integer' value='0' />
<!--
threads: Specifies the number of cpu worker threads to
create. The default of 0 causes named to try and
determine the number of CPUs present and create one
thread per CPU.
Equivalent command line option '-n <integer>'.
-->
<propval name='threads' type='integer' value='0' />
<!--
chroot_dir: Change the root directory using chroot(2)
to directory after processing the command line
arguments, but before reading the configuration file.
Equivalent command line option '-t <pathname>'.
-->
<propval name='chroot_dir' type='astring' value='' />
</property_group>
</instance>
<stability value='Unstable' />
<template>
<common_name>
<loctext xml:lang='C'>BIND DNS server</loctext>
</common_name>
<documentation>
<manpage title='named' section='1M' manpath='@PREFIX@/man' />
</documentation>
</template>
</service>
</service_bundle>
117 changes: 117 additions & 0 deletions meta/net/bind99/method
@@ -0,0 +1,117 @@
#!/sbin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#pragma ident "@(#)dns-server.sh 1.1 07/03/26 SMI"

# smf_method(5) start/stop script required for server DNS

. /lib/svc/share/smf_include.sh

result=${SMF_EXIT_OK}

# Read command line arguments
method="$1" # %m
instance="$2" # %i

# Set defaults; SMF_FMRI should have been set, but just in case.
if [ -z "$SMF_FMRI" ]; then
SMF_FMRI="svc:/network/dns/server:${instance}"
fi
server="@PREFIX@/sbin/named"
I=`/usr/bin/basename $0`

case "$method" in
'start')
cmdopts=""
properties="debug_level ip_interfaces listen_on_port
threads chroot_dir configuration_file server"

for prop in $properties
do
value=`/usr/bin/svcprop -p options/${prop} ${SMF_FMRI}`
if [ -z "${value}" -o "${value}" = '""' ]; then
continue;
fi

case $prop in
'debug_level')
if [ ${value} -gt 0 ]; then
cmdopts="${cmdopts} -d ${value}"
fi
;;
'ip_interfaces')
case ${value} in
'IPv4')
cmdopts="${cmdopts} -4";;
'IPv6')
cmdopts="${cmdopts} -6";;
'all')
: # Default is all, therefore ignore.
;;
*)
echo "$I: Unrecognised value in service instance property" >&2
echo "$I: options/${prop} : ${value}" >&2
;;
esac
;;
'listen_on_port')
if [ ${value} -gt 0 ]; then
cmdopts="${cmdopts} -p ${value}"
fi
;;
'threads')
if [ ${value} -gt 0 ]; then
cmdopts="${cmdopts} -n ${value}"
fi
;;
'chroot_dir')
cmdopts="${cmdopts} -t ${value}"
;;
'configuration_file')
cmdopts="${cmdopts} -c ${value}"
;;
'server')
set -- `echo ${value} | /usr/bin/sed -e 's/\\\\//g'`
server=$@
;;
esac
done

if [ ${result} = ${SMF_EXIT_OK} ]; then
echo "$I: Executing: ${server} ${cmdopts}"
# Execute named(1M) with relevant command line options.
${server} ${cmdopts}
result=$?
fi
;;
'stop')
smf_kill_contract ${contract} TERM 1
[ $? -ne 0 ] && exit 1
;;
*)
echo "Usage: $I [stop|start] <instance>" >&2
exit 1
;;
esac
exit ${result}

0 comments on commit ae0ae3f

Please sign in to comment.