1#!/bin/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 2007 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25
26#
27# ident	"%Z%%M%	%I%	%E% SMI"
28
29. /lib/svc/share/smf_include.sh
30
31METHOD=${1}
32INSTANCE=${2}
33
34DBUS_DESTINATION="org.freedesktop.Hal"
35MESSAGE_PREFIX="org.freedesktop.Hal.Device.NetworkDiscovery"
36OBJECT_PATH="/org/freedesktop/Hal/devices/network_attached"
37SMF_PROPERTY_GROUP="config"
38HAL_PROPERTY_GROUP="network_discovery"
39SVCS=/usr/bin/svcs
40
41usage() {
42	echo "Usage: $0 { start | stop | refresh } { snmp }"
43	exit $SMF_EXIT_ERR_FATAL
44}
45
46execute() {
47	echo "$*"
48	$*
49
50	return $?
51}
52
53start_snmp() {
54	interval=`/bin/svcprop -p config/interval ${SMF_FMRI} 2>/dev/null`
55	community=`/bin/svcprop -p config/community ${SMF_FMRI} 2>/dev/null`
56	network=`/bin/svcprop -p config/network ${SMF_FMRI} 2>/dev/null`
57	MESSAGE="${MESSAGE_PREFIX}.EnablePrinterScanningViaSNMP"
58	MESSAGE="${MESSAGE} int32:${interval:-60}"
59	MESSAGE="${MESSAGE} string:${community:-public}"
60	MESSAGE="${MESSAGE} string:${network:-0.0.0.0}"
61
62	execute /usr/bin/dbus-send --system --print-reply \
63		--dest=${DBUS_DESTINATION} --type=method_call ${OBJECT_PATH} \
64		${MESSAGE}
65	return $?
66}
67
68stop_snmp() {
69	MESSAGE="${MESSAGE_PREFIX}.DisablePrinterScanningViaSNMP"
70
71	execute /usr/bin/dbus-send --system --print-reply \
72		--dest=${DBUS_DESTINATION} --type=method_call ${OBJECT_PATH} \
73		${MESSAGE}
74	return $?
75}
76
77refresh_snmp() {
78	community=`/bin/svcprop -p config/community ${SMF_FMRI} 2>/dev/null`
79	network=`/bin/svcprop -p config/network ${SMF_FMRI} 2>/dev/null`
80	MESSAGE="${MESSAGE_PREFIX}.EnablePrinterScanningViaSNMP"
81	MESSAGE="${MESSAGE} string:${community:-public}"
82	MESSAGE="${MESSAGE} string:${network:-0.0.0.0}"
83
84	execute /usr/bin/dbus-send --system --print-reply \
85		--dest=${DBUS_DESTINATION} --type=method_call ${OBJECT_PATH} \
86		${MESSAGE}
87	return $?
88}
89
90case "${METHOD}" in
91	'start')
92		;;
93	'stop')
94		count=`$SVCS -o STATE hal 2>>/dev/null | grep -c "^online"`
95		if [ $count -eq 0 ] ; then
96			exit 0	# if HAL isn't running, there is nothing to do
97		fi
98		;;
99	'refresh')
100		;;
101	*)
102		usage
103		;;
104esac
105
106case "${INSTANCE}" in
107	'snmp')
108		;;
109	*)
110		usage
111		;;
112esac
113
114${METHOD}_${INSTANCE}
115exit_code=$?
116
117exit $exit_code
118