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 
  31 METHOD=${1}
  32 INSTANCE=${2}
  33 
  34 DBUS_DESTINATION="org.freedesktop.Hal"
  35 MESSAGE_PREFIX="org.freedesktop.Hal.Device.NetworkDiscovery"
  36 OBJECT_PATH="/org/freedesktop/Hal/devices/network_attached"
  37 SMF_PROPERTY_GROUP="config"
  38 HAL_PROPERTY_GROUP="network_discovery"
  39 SVCS=/usr/bin/svcs
  40 
  41 usage() {
  42         echo "Usage: $0 { start | stop | refresh } { snmp }"
  43         exit $SMF_EXIT_ERR_FATAL
  44 }
  45 
  46 execute() {
  47         echo "$*"
  48         $*
  49 
  50         return $?
  51 }
  52 
  53 start_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 
  68 stop_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 
  77 refresh_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 
  90 case "${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                 ;;
 104 esac
 105 
 106 case "${INSTANCE}" in
 107         'snmp')
 108                 ;;
 109         *)
 110                 usage
 111                 ;;
 112 esac
 113 
 114 ${METHOD}_${INSTANCE}
 115 exit_code=$?
 116 
 117 exit $exit_code