BATOSAY Shell
Server IP : 170.10.162.208  /  Your IP : 216.73.216.181
Web Server : LiteSpeed
System : Linux altar19.supremepanel19.com 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64
User : deltahospital ( 1806)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /tmp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /tmp/phpcYKxbl
bin/net-snmp-config000075500000100064150553041150010246 0ustar00#!/bin/sh
#
# $Id$
#
# this shell script is designed to merely dump the configuration
# information about how the net-snmp package was compiled.  The
# information is particularly useful for applications that need to
# link against the net-snmp libraries and hence must know about any
# other libraries that must be linked in as well.

check_build_dir()
{
      build_dir=$1

      if test "x$build_dir" = "x" ; then
         echo "You must specify a build directory."
         exit 1
      fi
      # is it the src dir?
      if test -f $build_dir/net-snmp-config.in ; then
         return
      fi
      # make sure we can find build dir
      if test ! -d $build_dir/snmplib/.libs ; then
         echo "$build_dir does not appear to be a build directory."
         exit 1
      fi
}

# usage: index n arguments
# effect: returns the (n+1)th argument
index()
{
    eval echo \$`expr $1 + 1`
}

# usage: count arguments
# effect: returns the number of arguments
count()
{
    echo $#
}

prefix=/opt/alt/net-snmp11/usr
exec_prefix=/opt/alt/net-snmp11/usr
includedir=/opt/alt/net-snmp11/usr/include
libdir=/opt/alt/net-snmp11/usr/lib64
datarootdir=${prefix}/share
NSC_LDFLAGS="-Wl,-z,relro -Wl,-z,now -lm"

NSC_LIBS=""
NSC_LNETSNMPLIBS="  -lssl  -lssl -lcrypto"
NSC_LAGENTLIBS=" "
NSC_LMIBLIBS="-lsensors -ldl -lrpm -lrpmio  "

NSC_INCLUDEDIR=${includedir}
NSC_LIBDIR=-L${libdir}

NSC_SNMPLIBS="-lnetsnmp ${NSC_LNETSNMPLIBS}"
NSC_SUBAGENTLIBS="-lnetsnmpagent ${NSC_LAGENTLIBS} ${NSC_SNMPLIBS}"
NSC_AGENTLIBS="-lnetsnmpmibs ${NSC_LMIBLIBS} ${NSC_SUBAGENTLIBS}"

NSC_PREFIX=$prefix
NSC_EXEC_PREFIX=$exec_prefix
NSC_SRCDIR=.
NSC_INCDIR=${NSC_PREFIX}/include

NSC_BASE_SNMP_LIBS="-lnetsnmp"
NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent ${NSC_BASE_SNMP_LIBS}"
NSC_BASE_AGENT_LIBS="-lnetsnmpmibs ${NSC_BASE_SUBAGENT_LIBS}"

NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs"
NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a snmplib/.libs/libnetsnmp.a"

if test "x$NSC_SRCDIR" = "x." ; then
   NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
elif test "x$NSC_SRCDIR" = "x" ; then
   NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
fi

if test "x$1" = "x"; then
  usage="yes"
else
  while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
  case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
  esac

  unset shifted
  case $1 in
    --prefix=*)
      prefix=$optarg
      NSC_PREFIX=${prefix}
      NSC_INCLUDEDIR=${prefix}/include
      NSC_LIBDIR=-L${prefix}/lib
      ;;

    --exec-prefix=*)
      exec_prefix=$optarg
      NSC_EXEC_PREFIX=${exec_prefix}
      NSC_LIBDIR=-L${exec_prefix}/lib
      ;;

    --debug-tokens|--deb*|--dbg*)
      echo "find $NSC_SRCDIR -name \"*.c\" -print | xargs grep DEBUGMSGT | grep \\\" | cut -f 2 -d\\\" | sort -u"
      if test "x$NSC_SRCDIR" != "xNET-SNMP-SOURCE-DIR" ; then
        /usr/bin/find $NSC_SRCDIR -name "*.c" -print | xargs grep DEBUGMSGT | grep \" | cut -f 2 -d\" | sort -u
      fi
      ;;
    --indent-options|--in*)
      echo "indent -orig -nbc -bap -nut -nfca `(cd $NSC_INCDIR/net-snmp; perl -n -e 'print "-T $1 " if (/}\s*(netsnmp_\w+)\s*;/);' */*.h)`"
      ;;
    --configure-options|--con*)
      echo " '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--exec-prefix=/opt/alt/net-snmp11/usr' '--bindir=/opt/alt/net-snmp11/usr/bin' '--sbindir=/opt/alt/net-snmp11/usr/sbin' '--datadir=/opt/alt/net-snmp11/usr/share' '--includedir=/opt/alt/net-snmp11/usr/include' '--libdir=/opt/alt/net-snmp11/usr/lib64' '--libexecdir=/opt/alt/net-snmp11/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/opt/alt/net-snmp11/usr/share/man' '--infodir=/opt/alt/net-snmp11/usr/share/info' '--disable-agent' '--disable-applications' '--disable-debugging' '--disable-embedded-perl' '--disable-manuals' '--disable-scripts' '--disable-static' '--enable-as-needed' '--enable-blumenthal-aes' '--enable-ipv6' '--enable-local-smux' '--enable-mfd-rewrites' '--enable-shared' '--enable-ucd-snmp-compatibility' '--prefix=/opt/alt/net-snmp11/usr' '--sysconfdir=/etc' '--with-cflags=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include' '--with-defaults' '--with-install-prefix=/opt/alt/net-snmp11/usr' '--with-ldflags=-Wl,-z,relro -Wl,-z,now -lm' '--with-logfile=/var/log/snmpd.log' '--with-mib-modules=host agentx smux       ucd-snmp/diskio tcp-mib udp-mib mibII/mta_sendmail       ip-mib/ipv4InterfaceTable ip-mib/ipv6InterfaceTable       ip-mib/ipAddressPrefixTable/ipAddressPrefixTable       ip-mib/ipDefaultRouterTable/ipDefaultRouterTable       ip-mib/ipv6ScopeZoneIndexTable ip-mib/ipIfStatsTable       sctp-mib rmon-mib etherlike-mib ucd-snmp/lmsensorsMib' '--with-openssl=/opt/alt/opnessl11' '--with-perl-modules=INSTALLDIRS=vendor' '--with-persistent-directory=/var/lib/net-snmp' '--with-pic' '--with-security-modules=tsm' '--with-sys-contact=Unknown' '--with-sys-location=Unknown' '--with-systemd' '--with-temp-file-pattern=/run/net-snmp/snmp-tmp-XXXXXX' '--with-transports=DTLSUDP TLSTCP' '--without-perl-modules' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include' 'LDFLAGS=-L/opt/alt/openssl11/lib64 -L/opt/alt/libssh211/usr/lib64 -Wl,-rpath=/opt/alt/openssl11/lib64,-rpath=/opt/alt/libssh211/usr/lib64' 'CPPFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include' 'PKG_CONFIG_PATH=:/opt/alt/net-snmp11/usr/lib64/pkgconfig:/opt/alt/net-snmp11/usr/share/pkgconfig'"
      ;;
    --snmpd-module-list|--mod*)
echo  ip-mib/ipAddressPrefixTable/ipAddressPrefixTable ip-mib/ipDefaultRouterTable/ipDefaultRouterTable mibII/mta_sendmail ucd-snmp/diskio ucd-snmp/lmsensorsMib agentx/master agentx/subagent host/hrh_storage host/hrh_filesys host/hrSWInstalledTable host/hrSWRunTable host/hr_system host/hr_device host/hr_other host/hr_proc host/hr_network host/hr_print host/hr_disk host/hr_partition ip-mib/ipAddressTable/ipAddressTable ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get ip-mib/ipIfStatsTable/ipIfStatsTable ip-mib/ipIfStatsTable/ipIfStatsTable_interface ip-mib/ipIfStatsTable/ipIfStatsTable_data_access ip-mib/ipv4InterfaceTable/ipv4InterfaceTable ip-mib/ipv6InterfaceTable/ipv6InterfaceTable ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable sctp-mib/sctpScalars smux/smux util_funcs/header_simple_table agentx/protocol agentx/master_admin agentx/agentx_config agentx/client etherlike-mib/dot3StatsTable/dot3StatsTable etherlike-mib/dot3StatsTable/dot3StatsTable_data_get etherlike-mib/dot3StatsTable/dot3StatsTable_data_set etherlike-mib/dot3StatsTable/dot3StatsTable_data_access etherlike-mib/dot3StatsTable/dot3StatsTable_interface host/data_access/swinst host/data_access/swrun host/hrSWRunPerfTable util_funcs if-mib/data_access/interface ip-mib/ipAddressTable/ipAddressTable_interface ip-mib/ipAddressTable/ipAddressTable_data_access ip-mib/data_access/defaultrouter_common ip-mib/data_access/defaultrouter_linux ip-mib/data_access/systemstats_common ip-mib/data_access/systemstats_linux ip-mib/ipIfStatsTable/ipIfStatsTable_data_get if-mib/ifTable/ifTable_interface if-mib/ifTable/ifTable_data_access if-mib/ifTable/ifTable ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_access ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access rmon-mib/etherStatsTable/etherStatsTable rmon-mib/etherStatsTable/etherStatsTable_data_get rmon-mib/etherStatsTable/etherStatsTable_data_set rmon-mib/etherStatsTable/etherStatsTable_data_access rmon-mib/etherStatsTable/etherStatsTable_interface sctp-mib/sctpScalars_common sctp-mib/sctpScalars_linux sctp-mib/sctpTables_common sctp-mib/sctpAssocRemAddrTable sctp-mib/sctpAssocLocalAddrTable sctp-mib/sctpLookupLocalPortTable sctp-mib/sctpLookupRemPortTable sctp-mib/sctpLookupRemHostNameTable sctp-mib/sctpLookupRemPrimIPAddrTable sctp-mib/sctpLookupRemIPAddrTable sctp-mib/sctpAssocTable sctp-mib/sctpTables_linux util_funcs/get_pid_from_inode tcp-mib/tcpConnectionTable/tcpConnectionTable tcp-mib/tcpListenerTable/tcpListenerTable hardware/sensors/hw_sensors hardware/sensors/lmsensors_v3 udp-mib/udpEndpointTable/udpEndpointTable etherlike-mib/data_access/dot3stats_linux hardware/memory/hw_mem hardware/memory/memory_linux hardware/fsys/hw_fsys hardware/fsys/fsys_mntent host/data_access/swinst_rpm host/data_access/swrun_procfs_status hardware/cpu/cpu hardware/cpu/cpu_linux util_funcs/header_generic if-mib/data_access/interface_linux if-mib/data_access/interface_ioctl ip-mib/data_access/ipaddress_common ip-mib/data_access/ipaddress_linux ip-mib/data_access/ipv6scopezone_common ip-mib/data_access/ipv6scopezone_linux rmon-mib/data_access/etherstats_linux tcp-mib/data_access/tcpConn_common tcp-mib/data_access/tcpConn_linux tcp-mib/tcpConnectionTable/tcpConnectionTable_interface tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access tcp-mib/tcpListenerTable/tcpListenerTable_interface tcp-mib/tcpListenerTable/tcpListenerTable_data_access udp-mib/udpEndpointTable/udpEndpointTable_interface udp-mib/udpEndpointTable/udpEndpointTable_data_access ip-mib/data_access/ipaddress_ioctl udp-mib/data_access/udp_endpoint_common udp-mib/data_access/udp_endpoint_linux
      ;;
    --default-mibs|--mibs|--MIBS)
      echo :EtherLike-MIB:HOST-RESOURCES-MIB:HOST-RESOURCES-TYPES:MTA-MIB:NETWORK-SERVICES-MIB:RMON-MIB:SCTP-MIB:TCP-MIB:UCD-DISKIO-MIB:LM-SENSORS-MIB:UDP-MIB
      ;;
    --default-mibdirs|--mibdirs|--MIBDIRS)
      echo $HOME/.snmp/mibs:/opt/alt/net-snmp11/usr/share/snmp/mibs
      ;;
    --env-separator)
      echo ":"
      ;;
    --exeext)
      echo ""
      ;;
    --snmpconfpath|--SNMPCONFPATH)
      echo "/etc/snmp:/opt/alt/net-snmp11/usr/share/snmp:/opt/alt/net-snmp11/usr/lib64/snmp:$HOME/.snmp:/var/lib/net-snmp"
      ;;
    --persistent-directory|--persistent-dir)
      echo /var/lib/net-snmp
      ;;
    --perlprog|--perl)
      echo /usr/bin/perl
      ;;
    #################################################### compile
    --base-cflags)
      echo -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -DNETSNMP_ENABLE_IPV6 -fno-strict-aliasing -DNETSNMP_REMOVE_U64 -O2 -g -pipe -Wall  -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -Ulinux -Dlinux=linux -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -I${NSC_INCLUDEDIR}
      ;;
    --cflags|--cf*)
      echo -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -DNETSNMP_ENABLE_IPV6 -fno-strict-aliasing -DNETSNMP_REMOVE_U64 -O2 -g -pipe -Wall  -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -Ulinux -Dlinux=linux  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -I. -I${NSC_INCLUDEDIR}
      ;;
    --srcdir)
      echo $NSC_SRCDIR
      ;;
    #################################################### linking
    --libdir|--lib-dir)
      echo $NSC_LIBDIR
      ;;
    --ldflags|--ld*)
      echo $NSC_LDFLAGS
      ;;
    --build-lib-dirs)
      shift
      build_dir=$1
      check_build_dir $build_dir
      for dir in $NSC_SRC_LIBDIRS; do
          result="$result -L$build_dir/$dir"
      done
      echo $result
      ;;
    --build-lib-deps)
      shift
      build_dir=$1
      check_build_dir $build_dir
      for dir in $NSC_SRC_LIBDEPS; do
          result="$result $build_dir/$dir"
      done
      echo $result
      ;;
    --build-includes)
      shift
      build_dir=$1
      check_build_dir $build_dir
      result="-I$build_dir/include"
      if test "$build_dir" != "$NSC_SRCDIR" -a "$NSC_SRCDIR" != "NET-SNMP-SOURCE-DIR"
      then
          result="$result -I$NSC_SRCDIR/include"
      fi
      echo $result
      ;;
    --build-command)
      echo "gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -DNETSNMP_ENABLE_IPV6 -fno-strict-aliasing -DNETSNMP_REMOVE_U64 -O2 -g -pipe -Wall  -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -Ulinux -Dlinux=linux  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include"
      ;;
    #################################################### client lib
    --libs)
      # use this one == --netsnmp-libs + --external-libs
      echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
      ;;
    --netsnmp-libs)
      echo $NSC_LIBDIR $NSC_BASE_SNMP_LIBS
      ;;
    --external-libs)
      echo $NSC_LDFLAGS $NSC_LNETSNMPLIBS $NSC_LIBS 
      ;;
    #################################################### agent lib
    --base-agent-libs)
      echo $NSC_BASE_AGENT_LIBS
      ;;
    --base-subagent-libs)
      echo $NSC_BASE_SUBAGENT_LIBS
      ;;
    --agent-libs)
      # use this one == --netsnmp-agent-libs + --external-libs
      echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_AGENTLIBS $NSC_LIBS
      ;;
    --netsnmp-agent-libs)
      echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
      ;;
    --external-agent-libs)
      echo $NSC_LDFLAGS $NSC_LMIBLIBS $NSC_LAGENTLIBS $NSC_LNETSNMPLIBS $NSC_LIBS
      ;;
    ####################################################
    --version|--ver*)
      echo 5.8
      ;;
    --help)
      usage="yes"
      ;;
    --prefix|--pre*)
      echo $NSC_PREFIX
      ;;
    --exec-prefix)
      echo $NSC_EXEC_PREFIX
      ;;
    ####################################################
    --create-snmpv3-user)
      done=1
      shift
      net-snmp-create-v3-user $*
      exit $?
      ;;

    ####################################################
    --compile-subagent)
      shift
      shifted=1
      while test "x$done" = "x" -a "x$1" != "x" ; do
	case $1 in
            --norm)
	        norm=1
	        shift
		;;
            --cflags)
	        shift
	        if test "x$1" = "x" ; then
	            echo "You must specify the extra cflags"
	            exit 1
	        fi
	        cflags="$1"
	        echo "setting extra cflags: $cflags"
	        shift
		;;
            --ldflags)
	        shift
	        if test "x$1" = "x" ; then
	            echo "You must specify the extra ldflags"
	            exit 1
	        fi
	        ldflags="$1"
	        echo "setting extra ldflags: $ldflags"
	        shift
		;;
 	    --*)
		echo "unknown suboption to --compile-subagent: $1"
		exit 1
		;;
	    *)
                if test "x$outname" = "x"; then
                  outname=$1
                  shift
                else
	          done=1
                fi
		;;
	esac
      done
      tmpfile=netsnmptmp.$$.c
      if test -f $tmpfile; then
	echo "Ack.  Can't create $tmpfile: already exists"
	exit 1
      fi
      echo "generating the temporary code file: $tmpfile"
      rm -f $tmpfile
      cat > $tmpfile <<EOF
/* generated from net-snmp-config */
#include <net-snmp/net-snmp-config.h>
#ifdef HAVE_SIGNAL
#include <signal.h>
#endif /* HAVE_SIGNAL */
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif /*  HAVE_SYS_STAT_H */
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif /* HAVE_FCNTL_H */
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
EOF

    # If we were only given a single filename
    # (and no explicit output name)
    # then use that as the base of the output name
    #
    # If we weren't even given that, then bomb out
    if test "x$1" = "x"; then
      if test "x$outname" = "x"; then
        echo "No MIB module codefile specified"
        rm -f $tmpfile
        exit 1
      else
        cfiles=$outname
        outname=`basename $cfiles | sed 's/\.[co]$//'`
        if test -f $outname.h; then
          if grep "init_$outname" $outname.h; then
            echo "  #include \"$outname.h\"" >> $tmpfile
          fi
        fi
      fi
    fi

    # add include files
    while test "$1" != ""; do
      cfiles="$cfiles $1"
      name=`basename $1 | sed 's/\.[co]$//'`
      if test -f $name.h; then
        if grep "init_$name" $name.h; then
          echo "  #include \"$name.h\"" >> $tmpfile
        fi
      fi
      shift
    done

      cat >> $tmpfile <<EOF
const char *app_name = "$outname";
static int reconfig = 0;

extern int netsnmp_running;

RETSIGTYPE
stop_server(int a) {
    netsnmp_running = 0;
}

#ifdef SIGHUP
RETSIGTYPE
hup_handler(int sig)
{
    reconfig = 1;
    signal(SIGHUP, hup_handler);
}
#endif

static void
usage(const char *prog)
{
    fprintf(stderr,
            "USAGE: %s [OPTIONS]\n"
            "\n"
            "OPTIONS:\n", prog);

    fprintf(stderr,
            "  -c FILE[,...]\t\tread FILE(s) as configuration file(s)\n"
            "  -C\t\t\tdo not read the default configuration files\n"
            "  -d\t\t\tdump all traffic\n"
            "  -D TOKEN[,...]\tturn on debugging output for the specified "
            "TOKENs\n"
            "\t\t\t   (ALL gives extremely verbose debugging output)\n"
            "  -f\t\t\tDo not fork() from the calling shell.\n"
            "  -h\t\t\tdisplay this help message\n"
            "  -H\t\t\tdisplay a list of configuration file directives\n"
            "  -L LOGOPTS\t\tToggle various defaults controlling logging:\n");
    snmp_log_options_usage("\t\t\t  ", stderr);
#ifndef DISABLE_MIB_LOADING
    fprintf(stderr,
            "  -m MIB[" ENV_SEPARATOR "...]\t\tload given list of MIBs (ALL loads "
            "everything)\n"
            "  -M DIR[" ENV_SEPARATOR "...]\t\tlook in given list of directories for MIBs\n");
#endif /* DISABLE_MIB_LOADING */
    fprintf(stderr,
            "  -p FILE\t\tstore process id in FILE\n");
#ifndef DISABLE_MIB_LOADING
    fprintf(stderr,
            "  -P MIBOPTS\t\tToggle various defaults controlling mib "
            "parsing:\n");
    snmp_mib_toggle_options_usage("\t\t\t  ", stderr);
#endif /* DISABLE_MIB_LOADING */
    fprintf(stderr,
            "  -v\t\t\tdisplay package version number\n"
            "  -x TRANSPORT\tconnect to master agent using TRANSPORT\n");
    exit(1);
}

static void
version(void)
{
    fprintf(stderr, "NET-SNMP version: %s\n", netsnmp_get_version());
    exit(0);
}

int
main (int argc, char **argv)
{
  int arg;
  char* cp = NULL;
  int dont_fork = 0, do_help = 0;
  char* pid_file = NULL;

  while ((arg = getopt(argc, argv, "c:CdD:fhHL:"
#ifndef DISABLE_MIB_LOADING
                       "m:M:"
#endif /* DISABLE_MIB_LOADING */
                       "n:p:"
#ifndef DISABLE_MIB_LOADING
                       "P:"
#endif /* DISABLE_MIB_LOADING */
                       "vx:")) != EOF) {
    switch (arg) {
      case 'c':
        if (optarg != NULL) {
          netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
                                NETSNMP_DS_LIB_OPTIONALCONFIG, optarg);
        } else {
          usage(argv[0]);
        }
        break;

      case 'C':
        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
                               NETSNMP_DS_LIB_DONT_READ_CONFIGS, 1);
        break;

    case 'd':
      netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
                             NETSNMP_DS_LIB_DUMP_PACKET, 1);
      break;

    case 'D':
      debug_register_tokens(optarg);
      snmp_set_do_debugging(1);
      break;

    case 'f':
      dont_fork = 1;
      break;

    case 'h':
      usage(argv[0]);
      break;

    case 'H':
      do_help = 1;
      break;

    case 'L':
      if (snmp_log_options(optarg, argc, argv) < 0) {
        exit(1);
      }
      break;

#ifndef DISABLE_MIB_LOADING
    case 'm':
      if (optarg != NULL) {
        setenv("MIBS", optarg, 1);
      } else {
        usage(argv[0]);
      }
      break;

    case 'M':
      if (optarg != NULL) {
        setenv("MIBDIRS", optarg, 1);
      } else {
        usage(argv[0]);
      }
      break;
#endif /* DISABLE_MIB_LOADING */

    case 'n':
      if (optarg != NULL) {
        app_name = optarg;
        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
                              NETSNMP_DS_LIB_APPTYPE, app_name);
      } else {
        usage(argv[0]);
      }
      break;

    case 'p':
      if (optarg != NULL) {
        pid_file = optarg;
      } else {
        usage(argv[0]);
      }
      break;

#ifndef DISABLE_MIB_LOADING
    case 'P':
      cp = snmp_mib_toggle_options(optarg);
      if (cp != NULL) {
        fprintf(stderr, "Unknown parser option to -P: %c.\n", *cp);
        usage(argv[0]);
      }
      break;
#endif /* DISABLE_MIB_LOADING */

    case 'v':
      version();
      break;

    case 'x':
      if (optarg != NULL) {
        netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
                              NETSNMP_DS_AGENT_X_SOCKET, optarg);
      } else {
        usage(argv[0]);
      }
      break;

    default:
      fprintf(stderr, "invalid option: -%c\n", arg);
      usage(argv[0]);
      break;
    }
  }

  if (do_help) {
    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
                           NETSNMP_DS_AGENT_NO_ROOT_ACCESS, 1);
  } else {
    /* we are a subagent */
    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
                           NETSNMP_DS_AGENT_ROLE, 1);

    if (!dont_fork) {
      if (netsnmp_daemonize(1, snmp_stderrlog_status()) != 0)
        exit(1);
    }

#if HAVE_GETPID
    if (pid_file != NULL) {
      /*
       * unlink the pid_file, if it exists, prior to open.  Without
       * doing this the open will fail if the user specified pid_file
       * already exists.
       */
      int fd;
      unlink(pid_file);
      fd = open(pid_file, O_CREAT | O_EXCL | O_WRONLY, 0600);
      if (fd == -1) {
        snmp_log_perror(pid_file);
        if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                    NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
          exit(1);
        }
      } else {
        char buf[3 + sizeof(long) * 3];
        int len = snprintf(buf, sizeof(buf), "%ld\n", (long int)getpid());
        write(fd, buf, len);
        close(fd);
      }
    }
#endif

    /* initialize tcpip, if necessary */
    SOCK_STARTUP;
  }

  /* initialize the agent library */
  init_agent(app_name);

  /* initialize your mib code here */
EOF

    # add init routines
    for i in $cfiles ; do
      name=`basename $i | sed 's/\.[co]$//'`
      echo checking for init_$name in $i
      if grep "init_$name" $i ; then
        echo "  init_${name}();" >> $tmpfile
      fi
    done

    # handle the main loop
    cat >> $tmpfile <<EOF

  /* $outname will be used to read $outname.conf files. */
  init_snmp("$outname");

  if (do_help) {
    fprintf(stderr, "Configuration directives understood:\n");
    read_config_print_usage("  ");
    exit(0);
  }

  /* In case we received a request to stop (kill -TERM or kill -INT) */
  netsnmp_running = 1;
#ifdef SIGTERM
  signal(SIGTERM, stop_server);
#endif
#ifdef SIGINT
  signal(SIGINT, stop_server);
#endif
#ifdef SIGHUP
  signal(SIGHUP, hup_handler);
#endif

  /* main loop here... */
  while(netsnmp_running) {
    if (reconfig) {
      free_config();
      read_configs();
      reconfig = 0;
    }
    agent_check_and_process(1);
  }

  /* at shutdown time */
  snmp_shutdown(app_name);

  /* deinitialize your mib code here */
EOF

    # add shutdown routines

    i=`count $cfiles`
    while [ $i -gt 0 ] ; do
      fullname=`index $i $cfiles`
      name=`basename $fullname | sed 's/\.[co]$//'`
      echo checking for shutdown_$name in $fullname
      if grep "shutdown_$name" $fullname ; then
        echo "  shutdown_${name}();" >> $tmpfile
      fi
      i=`expr $i - 1`
    done

    # finish file
    cat >> $tmpfile <<EOF

  /* shutdown the agent library */
  shutdown_agent();

  if (pid_file != NULL) {
    unlink(pid_file);
  }

  SOCK_CLEANUP;
  exit(0);
}
EOF
      if test "$?" != 0 -o ! -f "$tmpfile" ; then
        echo "Ack.  Can't create $tmpfile."
	exit 1
      fi
      cmd="gcc $cflags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -DNETSNMP_ENABLE_IPV6 -fno-strict-aliasing -DNETSNMP_REMOVE_U64 -O2 -g -pipe -Wall  -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/opt/alt/openssl11/include -Ulinux -Dlinux=linux  -I. -I${NSC_INCLUDEDIR} -o $outname $tmpfile $cfiles $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS $ldflags"
      echo "running: $cmd"
      `$cmd`
      result=$?
      if test "x$norm" != "x1" ; then
        echo "removing the temporary code file: $tmpfile"
        rm -f $tmpfile
      else
        echo "leaving the temporary code file: $tmpfile"
      fi
      if test "$result" = "0" -a -f "$outname" ; then
        echo "subagent program $outname created"
      fi
      exit $result
      ;;

    *)
      echo "unknown option $1"
      usage="yes"
      ;;
  esac
  if [ "x$shifted" = "x" ] ; then
      shift
  fi
  done
fi

if test "x$usage" = "xyes"; then
  echo ""
  echo "Usage:"
  echo "  net-snmp-config [--cflags] [--agent-libs] [--libs] [--version]"
  echo "                  ... [see below for complete flag list]"
  echo ""
  echo "    --version         displays the net-snmp version number"
  echo "    --indent-options  displays the indent options from the Coding Style"
  echo "    --debug-tokens    displays a example command line to search to source"
  echo "                      code for a list of available debug tokens"
  echo ""
  echo "  SNMP Setup commands:"
  echo ""
  echo "    --create-snmpv3-user creates a SNMPv3 user in Net-SNMP config file."
  echo "                         See net-snmp-create-v3-user --help for list of"
  echo "                         accepted options."
  echo ""
  echo "  These options produce the various compilation flags needed when"
  echo "  building external SNMP applications:"
  echo ""
  echo "    --base-cflags     lists additional compilation flags needed"
  echo "    --cflags          lists additional compilation flags needed"
  echo "                      (includes -I. and extra developer warning flags)"
  echo ""
  echo "  These options produce the various link flags needed when"
  echo "  building external SNMP applications:"
  echo ""
  echo "    --libs            lists libraries needed for building applications"
  echo "    --agent-libs      lists libraries needed for building subagents"
  echo ""
  echo "  These options produce various link flags broken down into parts."
  echo "  (Most of the time the simple options above should be used.)"
  echo ""
  echo "    --libdir              path to netsnmp libraries"
  echo ""
  echo "    --base-agent-libs     netsnmp specific agent libraries"
  echo ""
  echo "    --netsnmp-libs        netsnmp specific libraries (with path)"
  echo "    --netsnmp-agent-libs  netsnmp specific agent libraries (with path)"
  echo ""
  echo "    --ldflags             link flags for external libraries"
  echo "    --external-libs       external libraries needed by netsnmp libs"
  echo "    --external-agent-libs external libraries needed by netsnmp agent libs"
  echo ""
  echo "  These options produce various link flags used when linking an"
  echo "  external application against an uninstalled build directory."
  echo ""
  echo "    --build-includes      include path to build/source includes"
  echo "    --build-lib-dirs      link path to libraries"
  echo "    --build-lib-deps      path to libraries for dependency target"
  echo "    --build-command       command to compile \$3... to \$2"
  echo ""
  echo "  Automated subagent building (produces an OUTPUTNAME binary file):"
  echo "  [this feature has not been tested very well yet.  use at your risk.]"
  echo ""
  echo "    --compile-subagent OUTPUTNAME [--norm] [--cflags flags]"
  echo "                                  [--ldflags flags] mibmodule1.c [...]]"
  echo ""
  echo "         --norm           leave the generated .c file around to read."
  echo "         --cflags flags   extra cflags to use (e.g. -I...)."
  echo "         --ldflags flags  extra ld flags to use (e.g. -L... -l...)."
  echo ""
  echo "  Details on how the net-snmp package was compiled:"
  echo ""
  echo "    --configure-options   display original configure arguments"
  echo "    --prefix              display the installation prefix"
  echo "    --snmpd-module-list   display the modules compiled into the agent"
  echo "    --default-mibs        display default list of MIBs"
  echo "    --default-mibdirs     display default list of MIB directories"
  echo "    --snmpconfpath        display default SNMPCONFPATH"
  echo "    --persistent-directory display default persistent directory"
  echo "    --perlprog            display path to perl for the perl modules"
  echo ""
  exit
fi  
bin/net-snmp-create-v3-user000075500000006030150553041200011540 0ustar00#!/bin/sh
#
# $Id$
#
# this shell script is designed to add new SNMPv3 users
# to Net-SNMP config file.

if /usr/bin/ps -e | egrep ' snmpd *$' > /dev/null 2>&1 ; then
    echo "Apparently at least one snmpd demon is already running."
    echo "You must stop them in order to use this command."
    exit 1
fi

Aalgorithm="MD5"
Xalgorithm="DES"
token=rwuser

while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
esac

unset shifted
case $1 in
    --version|--ver*)
      echo 5.8
      ;;
    --help)
      usage="yes"
      ;;

    -A|-a)
	shift
	if test "x$1" = "x" ; then
	    echo "You must specify an authentication algorithm or pass phrase"
	    exit 1
	fi
        case $1 in
            MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224)
	    Aalgorithm=$1
	    shift
	    ;;
            md5|sha)
	    Aalgorithm=`echo $1 | tr a-z A-Z`
	    shift
	    ;;
            *)
	    apassphrase=$1
	    shift
	    ;;
        esac
        ;;
    -X|-x)
	shift
	if test "x$1" = "x" ; then
	    echo "You must specify an encryption algorithm or pass phrase"
	    exit 1
	fi
        case $1 in
            DES|AES|AES128)
	    Xalgorithm=$1
	    shift
	    ;;
            des|aes|aes128)
	    Xalgorithm=`echo $1 | tr a-z A-Z`
	    shift
	    ;;
            *)
	    xpassphrase=$1
	    shift
	    ;;
	esac
	;;
    -ro)
        token="rouser"
	shift
	;;
    -*)
	echo "unknown suboption to $0: $1"
	usage=yes
	done=1
	;;
    *)
        done=1
        ;;
    esac
done

if test "x$usage" = "xyes"; then
    echo ""
    echo "Usage:"
    echo "  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]"
    echo "                          [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-x DES|AES] [username]"
    echo ""
    exit
fi

if test "x$1" = "x" ; then
    prompt=yes
    echo "Enter a SNMPv3 user name to create: "
    read user
else
    user=$1
    shift
fi
if test "x$user" = "x" ; then
    echo "You must specify a user name"
    exit 1
fi
if test "x$apassphrase" = "x" ; then
    prompt=yes
    echo "Enter authentication pass-phrase: "
    read apassphrase
fi
if test "x$apassphrase" = "x" ; then
    echo "You must specify an authentication pass-phrase"
    exit 1
fi
    if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
    echo "Enter encryption pass-phrase: "
    echo "  [press return to reuse the authentication pass-phrase]"
    read xpassphrase
fi
outdir="/var/lib/net-snmp"
outfile="$outdir/snmpd.conf"
line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm \"$xpassphrase\""
echo "adding the following line to $outfile:"
echo "  " $line
# in case it hasn't ever been started yet, start it.
if test ! -d $outdir ; then
    mkdir $outdir
fi
if test ! -d $outfile ; then
    touch $outfile
fi
echo $line >> $outfile
prefix="/opt/alt/net-snmp11/usr"
datarootdir="${prefix}/share"
outfile="/etc/snmp/snmpd.conf"
line="$token $user"
echo "adding the following line to $outfile:"
echo "  " $line
if test ! -d $outfile ; then
    touch $outfile
fi
echo $line >> $outfile
share/snmp/mibs/NOTIFICATION-LOG-MIB.txt000064400000060166150553041200013234 0ustar00NOTIFICATION-LOG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Unsigned32,
    TimeTicks, Counter32, Counter64,
    IpAddress, Opaque, mib-2       FROM SNMPv2-SMI
    TimeStamp, DateAndTime,
    StorageType, RowStatus,
    TAddress, TDomain              FROM SNMPv2-TC
    SnmpAdminString, SnmpEngineID  FROM SNMP-FRAMEWORK-MIB
    MODULE-COMPLIANCE, OBJECT-GROUP     FROM SNMPv2-CONF;

notificationLogMIB MODULE-IDENTITY
    LAST-UPDATED "200011270000Z"            -- 27 November 2000
    ORGANIZATION "IETF Distributed Management Working Group"
    CONTACT-INFO "Ramanathan Kavasseri
                  Cisco Systems, Inc.
                  170 West Tasman Drive,
                  San Jose CA 95134-1706.
                  Phone: +1 408 527 2446
                  Email: ramk@cisco.com"
    DESCRIPTION
     "The MIB module for logging SNMP Notifications, that is, Traps

     and Informs."
-- Revision History

       REVISION     "200011270000Z"            -- 27 November 2000
       DESCRIPTION  "This is the initial version of this MIB.
               Published as RFC 3014"
    ::= { mib-2 92 }

notificationLogMIBObjects OBJECT IDENTIFIER ::= { notificationLogMIB 1 }

nlmConfig OBJECT IDENTIFIER ::= { notificationLogMIBObjects 1 }
nlmStats  OBJECT IDENTIFIER ::= { notificationLogMIBObjects 2 }
nlmLog         OBJECT IDENTIFIER ::= { notificationLogMIBObjects 3 }

--
-- Configuration Section
--

nlmConfigGlobalEntryLimit OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
     "The maximum number of notification entries that may be held
     in nlmLogTable for all nlmLogNames added together.  A particular
     setting does not guarantee that much data can be held.

     If an application changes the limit while there are
     Notifications in the log, the oldest Notifications MUST be
     discarded to bring the log down to the new limit - thus the
     value of nlmConfigGlobalEntryLimit MUST take precedence over
     the values of nlmConfigGlobalAgeOut and nlmConfigLogEntryLimit,
     even if the Notification being discarded has been present for
     fewer minutes than the value of nlmConfigGlobalAgeOut, or if
     the named log has fewer entries than that specified in
     nlmConfigLogEntryLimit.

     A value of 0 means no limit.

     Please be aware that contention between multiple managers
     trying to set this object to different values MAY affect the
     reliability and completeness of data seen by each manager."
    DEFVAL { 0 }
    ::= { nlmConfig 1 }

nlmConfigGlobalAgeOut OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "minutes"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
     "The number of minutes a Notification SHOULD be kept in a log
     before it is automatically removed.

     If an application changes the value of nlmConfigGlobalAgeOut,
     Notifications older than the new time MAY be discarded to meet the
     new time.

     A value of 0 means no age out.

     Please be aware that contention between multiple managers
     trying to set this object to different values MAY affect the
     reliability and completeness of data seen by each manager."
    DEFVAL { 1440 }  -- 24 hours
    ::= { nlmConfig 2 }

--
-- Basic Log Configuration Table
--

nlmConfigLogTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NlmConfigLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A table of logging control entries."
    ::= { nlmConfig 3 }

nlmConfigLogEntry OBJECT-TYPE
    SYNTAX      NlmConfigLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A logging control entry.  Depending on the entry's storage type
     entries may be supplied by the system or created and deleted by
     applications using nlmConfigLogEntryStatus."
    INDEX      { nlmLogName }
    ::= { nlmConfigLogTable 1 }

NlmConfigLogEntry ::= SEQUENCE {
    nlmLogName           SnmpAdminString,
    nlmConfigLogFilterName    SnmpAdminString,
    nlmConfigLogEntryLimit    Unsigned32,
    nlmConfigLogAdminStatus   INTEGER,
    nlmConfigLogOperStatus    INTEGER,
    nlmConfigLogStorageType   StorageType,
    nlmConfigLogEntryStatus   RowStatus
    }

nlmLogName OBJECT-TYPE
    SYNTAX     SnmpAdminString (SIZE(0..32))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
     "The name of the log.

     An implementation may allow multiple named logs, up to some
     implementation-specific limit (which may be none).  A
     zero-length log name is reserved for creation and deletion by
     the managed system, and MUST be used as the default log name by
     systems that do not support named logs."
    ::= { nlmConfigLogEntry 1 }

nlmConfigLogFilterName OBJECT-TYPE
    SYNTAX     SnmpAdminString (SIZE(0..32))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
     "A value of snmpNotifyFilterProfileName as used as an index
     into the snmpNotifyFilterTable in the SNMP Notification MIB,
     specifying the locally or remotely originated Notifications
     to be filtered out and not logged in this log.

     A zero-length value or a name that does not identify an
     existing entry in snmpNotifyFilterTable indicate no
     Notifications are to be logged in this log."
    DEFVAL { ''H }
    ::= { nlmConfigLogEntry 2 }

nlmConfigLogEntryLimit OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
     "The maximum number of notification entries that can be held in
     nlmLogTable for this named log.  A particular setting does not
     guarantee that that much data can be held.

     If an application changes the limit while there are
     Notifications in the log, the oldest Notifications are discarded
     to bring the log down to the new limit.

     A value of 0 indicates no limit.

     Please be aware that contention between multiple managers
     trying to set this object to different values MAY affect the
     reliability and completeness of data seen by each manager."
    DEFVAL { 0 }
    ::= { nlmConfigLogEntry 3 }

nlmConfigLogAdminStatus OBJECT-TYPE
    SYNTAX     INTEGER { enabled(1), disabled(2) }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
     "Control to enable or disable the log without otherwise
     disturbing the log's entry.

     Please be aware that contention between multiple managers
     trying to set this object to different values MAY affect the
     reliability and completeness of data seen by each manager."
    DEFVAL { enabled }
    ::= { nlmConfigLogEntry 4 }

nlmConfigLogOperStatus OBJECT-TYPE
    SYNTAX     INTEGER { disabled(1), operational(2), noFilter(3) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
     "The operational status of this log:

          disabled  administratively disabled

          operational    administratively enabled and working

          noFilter  administratively enabled but either
                    nlmConfigLogFilterName is zero length
                    or does not name an existing entry in
                    snmpNotifyFilterTable"
    ::= { nlmConfigLogEntry 5 }

nlmConfigLogStorageType OBJECT-TYPE
    SYNTAX     StorageType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
     "The storage type of this conceptual row."
    ::= { nlmConfigLogEntry 6 }

nlmConfigLogEntryStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
     "Control for creating and deleting entries.  Entries may be
     modified while active.

     For non-null-named logs, the managed system records the security
     credentials from the request that sets nlmConfigLogStatus
     to 'active' and uses that identity to apply access control to
     the objects in the Notification to decide if that Notification
     may be logged."
    ::= { nlmConfigLogEntry 7 }

--
-- Statistics Section
--

nlmStatsGlobalNotificationsLogged OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "notifications"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The number of Notifications put into the nlmLogTable.  This
     counts a Notification once for each log entry, so a Notification
      put into multiple logs is counted multiple times."
    ::= { nlmStats 1 }

nlmStatsGlobalNotificationsBumped OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "notifications"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The number of log entries discarded to make room for a new entry
     due to lack of resources or the value of nlmConfigGlobalEntryLimit
     or nlmConfigLogEntryLimit.  This does not include entries discarded
     due to the value of nlmConfigGlobalAgeOut."
    ::= { nlmStats 2 }

--
-- Log Statistics Table
--

nlmStatsLogTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NlmStatsLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A table of Notification log statistics entries."
    ::= { nlmStats 3 }

nlmStatsLogEntry OBJECT-TYPE
    SYNTAX      NlmStatsLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A Notification log statistics entry."
    AUGMENTS { nlmConfigLogEntry }
    ::= { nlmStatsLogTable 1 }

NlmStatsLogEntry ::= SEQUENCE {
    nlmStatsLogNotificationsLogged Counter32,
    nlmStatsLogNotificationsBumped Counter32
}

nlmStatsLogNotificationsLogged OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "notifications"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The number of Notifications put in this named log."
    ::= { nlmStatsLogEntry 1 }

nlmStatsLogNotificationsBumped OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "notifications"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The number of log entries discarded from this named log to make
     room for a new entry due to lack of resources or the value of
     nlmConfigGlobalEntryLimit or nlmConfigLogEntryLimit.  This does not
     include entries discarded due to the value of
     nlmConfigGlobalAgeOut."
    ::= { nlmStatsLogEntry 2 }

--
-- Log Section
--

--
-- Log Table

--

nlmLogTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NlmLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A table of Notification log entries.

     It is an implementation-specific matter whether entries in this
     table are preserved across initializations of the management
     system.  In general one would expect that they are not.

     Note that keeping entries across initializations of the
     management system leads to some confusion with counters and
     TimeStamps, since both of those are based on sysUpTime, which
     resets on management initialization.  In this situation,
     counters apply only after the reset and nlmLogTime for entries
     made before the reset MUST be set to 0."
    ::= { nlmLog 1 }

nlmLogEntry OBJECT-TYPE
    SYNTAX      NlmLogEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A Notification log entry.

     Entries appear in this table when Notifications occur and pass
     filtering by nlmConfigLogFilterName and access control.  They are
     removed to make way for new entries due to lack of resources or
     the values of nlmConfigGlobalEntryLimit, nlmConfigGlobalAgeOut, or
     nlmConfigLogEntryLimit.

     If adding an entry would exceed nlmConfigGlobalEntryLimit or system
     resources in general, the oldest entry in any log SHOULD be removed
     to make room for the new one.

     If adding an entry would exceed nlmConfigLogEntryLimit the oldest
     entry in that log SHOULD be removed to make room for the new one.

     Before the managed system puts a locally-generated Notification
     into a non-null-named log it assures that the creator of the log
     has access to the information in the Notification.  If not it
     does not log that Notification in that log."
    INDEX       { nlmLogName, nlmLogIndex }
    ::= { nlmLogTable 1 }

NlmLogEntry ::= SEQUENCE {
    nlmLogIndex                Unsigned32,
    nlmLogTime                 TimeStamp,
    nlmLogDateAndTime          DateAndTime,
    nlmLogEngineID             SnmpEngineID,
    nlmLogEngineTAddress       TAddress,
    nlmLogEngineTDomain        TDomain,
    nlmLogContextEngineID      SnmpEngineID,
    nlmLogContextName          SnmpAdminString,
    nlmLogNotificationID       OBJECT IDENTIFIER
}

nlmLogIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
     "A monotonically increasing integer for the sole purpose of
     indexing entries within the named log.  When it reaches the
     maximum value, an extremely unlikely event, the agent wraps the
     value back to 1."
    ::= { nlmLogEntry 1 }

nlmLogTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value of sysUpTime when the entry was placed in the log. If
     the entry occurred before the most recent management system
     initialization this object value MUST be set to zero."
    ::= { nlmLogEntry 2 }

nlmLogDateAndTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The local date and time when the entry was logged, instantiated
     only by systems that have date and time capability."
    ::= { nlmLogEntry 3 }

nlmLogEngineID OBJECT-TYPE
    SYNTAX      SnmpEngineID
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The identification of the SNMP engine at which the Notification

     originated.

     If the log can contain Notifications from only one engine
     or the Trap is in SNMPv1 format, this object is a zero-length
     string."
    ::= { nlmLogEntry 4 }

nlmLogEngineTAddress OBJECT-TYPE
    SYNTAX      TAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The transport service address of the SNMP engine from which the
     Notification was received, formatted according to the corresponding
     value of nlmLogEngineTDomain. This is used to identify the source
     of an SNMPv1 trap, since an nlmLogEngineId cannot be extracted
     from the SNMPv1 trap pdu.

     This object MUST always be instantiated, even if the log
     can contain Notifications from only one engine.

     Please be aware that the nlmLogEngineTAddress may not uniquely
     identify the SNMP engine from which the Notification was received.
     For example, if an SNMP engine uses DHCP or NAT to obtain
     ip addresses, the address it uses may be shared with other
     network devices, and hence will not uniquely identify the
     SNMP engine."
    ::= { nlmLogEntry 5 }

nlmLogEngineTDomain OBJECT-TYPE
    SYNTAX      TDomain
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "Indicates the kind of transport service by which a Notification
     was received from an SNMP engine. nlmLogEngineTAddress contains
     the transport service address of the SNMP engine from which
     this Notification was received.

     Possible values for this object are presently found in the
     Transport Mappings for SNMPv2 document (RFC 1906 [8])."
    ::= { nlmLogEntry 6 }

nlmLogContextEngineID OBJECT-TYPE
    SYNTAX      SnmpEngineID
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "If the Notification was received in a protocol which has a
      contextEngineID element like SNMPv3, this object has that value.
      Otherwise its value is a zero-length string."
     ::= { nlmLogEntry 7 }

nlmLogContextName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The name of the SNMP MIB context from which the Notification came.
     For SNMPv1 Traps this is the community string from the Trap."
    ::= { nlmLogEntry 8 }

nlmLogNotificationID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The NOTIFICATION-TYPE object identifier of the Notification that
     occurred."
    ::= { nlmLogEntry 9 }

--
-- Log Variable Table
--

nlmLogVariableTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NlmLogVariableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A table of variables to go with Notification log entries."
    ::= { nlmLog 2 }

nlmLogVariableEntry OBJECT-TYPE
    SYNTAX      NlmLogVariableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
     "A Notification log entry variable.

     Entries appear in this table when there are variables in
     the varbind list of a Notification in nlmLogTable."
    INDEX       { nlmLogName, nlmLogIndex, nlmLogVariableIndex }
    ::= { nlmLogVariableTable 1 }

NlmLogVariableEntry ::= SEQUENCE {

    nlmLogVariableIndex              Unsigned32,
    nlmLogVariableID                 OBJECT IDENTIFIER,
    nlmLogVariableValueType          INTEGER,
    nlmLogVariableCounter32Val       Counter32,
    nlmLogVariableUnsigned32Val      Unsigned32,
    nlmLogVariableTimeTicksVal       TimeTicks,
    nlmLogVariableInteger32Val       Integer32,
    nlmLogVariableOctetStringVal     OCTET STRING,
    nlmLogVariableIpAddressVal       IpAddress,
    nlmLogVariableOidVal             OBJECT IDENTIFIER,
    nlmLogVariableCounter64Val       Counter64,
    nlmLogVariableOpaqueVal          Opaque
}

nlmLogVariableIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
     "A monotonically increasing integer, starting at 1 for a given
     nlmLogIndex, for indexing variables within the logged
     Notification."
    ::= { nlmLogVariableEntry 1 }

nlmLogVariableID OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
     "The variable's object identifier."
    ::= { nlmLogVariableEntry 2 }

nlmLogVariableValueType OBJECT-TYPE
    SYNTAX      INTEGER { counter32(1), unsigned32(2), timeTicks(3),
                 integer32(4), ipAddress(5), octetString(6),
                 objectId(7), counter64(8), opaque(9) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The type of the value.  One and only one of the value
     objects that follow must be instantiated, based on this type."
    ::= { nlmLogVariableEntry 3 }

nlmLogVariableCounter32Val OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'counter32'."
    ::= { nlmLogVariableEntry 4 }

nlmLogVariableUnsigned32Val OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'unsigned32'."
    ::= { nlmLogVariableEntry 5 }

nlmLogVariableTimeTicksVal OBJECT-TYPE
    SYNTAX      TimeTicks
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'timeTicks'."
    ::= { nlmLogVariableEntry 6 }

nlmLogVariableInteger32Val OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'integer32'."
    ::= { nlmLogVariableEntry 7 }

nlmLogVariableOctetStringVal OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'octetString'."
    ::= { nlmLogVariableEntry 8 }

nlmLogVariableIpAddressVal OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'ipAddress'.
     Although this seems to be unfriendly for IPv6, we
     have to recognize that there are a number of older
     MIBs that do contain an IPv4 format address, known
     as IpAddress.

     IPv6 addresses are represented using TAddress or
     InetAddress, and so the underlying datatype is

     OCTET STRING, and their value would be stored in
     the nlmLogVariableOctetStringVal column."
    ::= { nlmLogVariableEntry 9 }

nlmLogVariableOidVal OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'objectId'."
    ::= { nlmLogVariableEntry 10 }

nlmLogVariableCounter64Val OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'counter64'."
    ::= { nlmLogVariableEntry 11 }

nlmLogVariableOpaqueVal OBJECT-TYPE
    SYNTAX      Opaque
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
     "The value when nlmLogVariableType is 'opaque'."
    ::= { nlmLogVariableEntry 12 }

--
-- Conformance
--

notificationLogMIBConformance OBJECT IDENTIFIER ::=
    { notificationLogMIB 3 }
notificationLogMIBCompliances OBJECT IDENTIFIER ::=
    { notificationLogMIBConformance 1 }
notificationLogMIBGroups      OBJECT IDENTIFIER ::=
    { notificationLogMIBConformance 2 }

-- Compliance

notificationLogMIBCompliance MODULE-COMPLIANCE
     STATUS current
     DESCRIPTION
          "The compliance statement for entities which implement
          the Notification Log MIB."
     MODULE    -- this module

          MANDATORY-GROUPS {
               notificationLogConfigGroup,
               notificationLogStatsGroup,
               notificationLogLogGroup
          }

     OBJECT nlmConfigGlobalEntryLimit
         SYNTAX Unsigned32 (0..4294967295)
         MIN-ACCESS read-only
         DESCRIPTION
          "Implementations may choose a limit and not allow it to be
          changed or may enforce an upper or lower bound on the
          limit."

     OBJECT nlmConfigLogEntryLimit
         SYNTAX Unsigned32 (0..4294967295)
         MIN-ACCESS read-only
         DESCRIPTION
          "Implementations may choose a limit and not allow it to be
          changed or may enforce an upper or lower bound on the
          limit."

     OBJECT nlmConfigLogEntryStatus
         MIN-ACCESS read-only
         DESCRIPTION
          "Implementations may disallow the creation of named logs."

     GROUP notificationLogDateGroup
         DESCRIPTION
          "This group is mandatory on systems that keep wall clock
          date and time and should not be implemented on systems that
          do not have a wall clock date."
     ::= { notificationLogMIBCompliances 1 }

-- Units of Conformance

notificationLogConfigGroup OBJECT-GROUP
     OBJECTS {
          nlmConfigGlobalEntryLimit,
          nlmConfigGlobalAgeOut,
          nlmConfigLogFilterName,
          nlmConfigLogEntryLimit,
          nlmConfigLogAdminStatus,
          nlmConfigLogOperStatus,
          nlmConfigLogStorageType,
          nlmConfigLogEntryStatus
     }
     STATUS current
     DESCRIPTION
          "Notification log configuration management."
     ::= { notificationLogMIBGroups 1 }

notificationLogStatsGroup OBJECT-GROUP
     OBJECTS {
          nlmStatsGlobalNotificationsLogged,
          nlmStatsGlobalNotificationsBumped,
          nlmStatsLogNotificationsLogged,
          nlmStatsLogNotificationsBumped
     }
     STATUS current
     DESCRIPTION
          "Notification log statistics."
     ::= { notificationLogMIBGroups 2 }

notificationLogLogGroup OBJECT-GROUP
     OBJECTS {
          nlmLogTime,
          nlmLogEngineID,
          nlmLogEngineTAddress,
          nlmLogEngineTDomain,
          nlmLogContextEngineID,
          nlmLogContextName,
          nlmLogNotificationID,
          nlmLogVariableID,
          nlmLogVariableValueType,
          nlmLogVariableCounter32Val,
          nlmLogVariableUnsigned32Val,
          nlmLogVariableTimeTicksVal,
          nlmLogVariableInteger32Val,
          nlmLogVariableOctetStringVal,
          nlmLogVariableIpAddressVal,
          nlmLogVariableOidVal,
          nlmLogVariableCounter64Val,
          nlmLogVariableOpaqueVal
     }
     STATUS current
     DESCRIPTION
          "Notification log data."
     ::= { notificationLogMIBGroups 3 }

notificationLogDateGroup OBJECT-GROUP
     OBJECTS {
          nlmLogDateAndTime
     }
     STATUS current
     DESCRIPTION
          "Conditionally mandatory notification log data.
          This group is mandatory on systems that keep wall
          clock date and time and should not be implemented
          on systems that do not have a wall clock date."
     ::= { notificationLogMIBGroups 4 }

END
share/snmp/mibs/SNMPv2-SMI.txt000064400000021334150553041210011770 0ustar00SNMPv2-SMI DEFINITIONS ::= BEGIN

-- the path to the root

org            OBJECT IDENTIFIER ::= { iso 3 }  --  "iso" = 1
dod            OBJECT IDENTIFIER ::= { org 6 }
internet       OBJECT IDENTIFIER ::= { dod 1 }

directory      OBJECT IDENTIFIER ::= { internet 1 }

mgmt           OBJECT IDENTIFIER ::= { internet 2 }
mib-2          OBJECT IDENTIFIER ::= { mgmt 1 }
transmission   OBJECT IDENTIFIER ::= { mib-2 10 }

experimental   OBJECT IDENTIFIER ::= { internet 3 }

private        OBJECT IDENTIFIER ::= { internet 4 }
enterprises    OBJECT IDENTIFIER ::= { private 1 }

security       OBJECT IDENTIFIER ::= { internet 5 }

snmpV2         OBJECT IDENTIFIER ::= { internet 6 }

-- transport domains
snmpDomains    OBJECT IDENTIFIER ::= { snmpV2 1 }

-- transport proxies
snmpProxys     OBJECT IDENTIFIER ::= { snmpV2 2 }

-- module identities
snmpModules    OBJECT IDENTIFIER ::= { snmpV2 3 }

-- Extended UTCTime, to allow dates with four-digit years
-- (Note that this definition of ExtUTCTime is not to be IMPORTed
--  by MIB modules.)
ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
    -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ

    --   where: YY   - last two digits of year (only years
    --                 between 1900-1999)
    --          YYYY - last four digits of the year (any year)
    --          MM   - month (01 through 12)
    --          DD   - day of month (01 through 31)
    --          HH   - hours (00 through 23)
    --          MM   - minutes (00 through 59)
    --          Z    - denotes GMT (the ASCII character Z)
    --
    -- For example, "9502192015Z" and "199502192015Z" represent
    -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
    -- the four digit year format. Years 1900-1999 may use the
    -- two or four digit format.

-- definitions for information modules

MODULE-IDENTITY MACRO ::=
BEGIN
    TYPE NOTATION ::=
                  "LAST-UPDATED" value(Update ExtUTCTime)
                  "ORGANIZATION" Text
                  "CONTACT-INFO" Text
                  "DESCRIPTION" Text
                  RevisionPart

    VALUE NOTATION ::=
                  value(VALUE OBJECT IDENTIFIER)

    RevisionPart ::=
                  Revisions
                | empty
    Revisions ::=
                  Revision
                | Revisions Revision
    Revision ::=
                  "REVISION" value(Update ExtUTCTime)
                  "DESCRIPTION" Text

    -- a character string as defined in section 3.1.1
    Text ::= value(IA5String)
END

OBJECT-IDENTITY MACRO ::=
BEGIN
    TYPE NOTATION ::=
                  "STATUS" Status
                  "DESCRIPTION" Text

                  ReferPart

    VALUE NOTATION ::=
                  value(VALUE OBJECT IDENTIFIER)

    Status ::=
                  "current"
                | "deprecated"
                | "obsolete"

    ReferPart ::=
                  "REFERENCE" Text
                | empty

    -- a character string as defined in section 3.1.1
    Text ::= value(IA5String)
END

-- names of objects
-- (Note that these definitions of ObjectName and NotificationName
--  are not to be IMPORTed by MIB modules.)

ObjectName ::=
    OBJECT IDENTIFIER

NotificationName ::=
    OBJECT IDENTIFIER

-- syntax of objects

-- the "base types" defined here are:
--   3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
--   8 application-defined types: Integer32, IpAddress, Counter32,
--              Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64

ObjectSyntax ::=
    CHOICE {
        simple
            SimpleSyntax,
          -- note that SEQUENCEs for conceptual tables and
          -- rows are not mentioned here...

        application-wide
            ApplicationSyntax
    }

-- built-in ASN.1 types

SimpleSyntax ::=
    CHOICE {
        -- INTEGERs with a more restrictive range
        -- may also be used
        integer-value               -- includes Integer32
            INTEGER (-2147483648..2147483647),
        -- OCTET STRINGs with a more restrictive size
        -- may also be used
        string-value
            OCTET STRING (SIZE (0..65535)),
        objectID-value
            OBJECT IDENTIFIER
    }

-- indistinguishable from INTEGER, but never needs more than
-- 32-bits for a two's complement representation
Integer32 ::=
        INTEGER (-2147483648..2147483647)

-- application-wide types

ApplicationSyntax ::=
    CHOICE {
        ipAddress-value
            IpAddress,
        counter-value
            Counter32,
        timeticks-value
            TimeTicks,
        arbitrary-value
            Opaque,
        big-counter-value
            Counter64,
        unsigned-integer-value  -- includes Gauge32
            Unsigned32
    }

-- in network-byte order

-- (this is a tagged type for historical reasons)
IpAddress ::=
    [APPLICATION 0]
        IMPLICIT OCTET STRING (SIZE (4))

-- this wraps
Counter32 ::=
    [APPLICATION 1]
        IMPLICIT INTEGER (0..4294967295)

-- this doesn't wrap
Gauge32 ::=
    [APPLICATION 2]
        IMPLICIT INTEGER (0..4294967295)

-- an unsigned 32-bit quantity
-- indistinguishable from Gauge32
Unsigned32 ::=
    [APPLICATION 2]
        IMPLICIT INTEGER (0..4294967295)

-- hundredths of seconds since an epoch
TimeTicks ::=
    [APPLICATION 3]
        IMPLICIT INTEGER (0..4294967295)

-- for backward-compatibility only
Opaque ::=
    [APPLICATION 4]
        IMPLICIT OCTET STRING

-- for counters that wrap in less than one hour with only 32 bits
Counter64 ::=
    [APPLICATION 6]
        IMPLICIT INTEGER (0..18446744073709551615)

-- definition for objects

OBJECT-TYPE MACRO ::=
BEGIN
    TYPE NOTATION ::=
                  "SYNTAX" Syntax
                  UnitsPart
                  "MAX-ACCESS" Access
                  "STATUS" Status
                  "DESCRIPTION" Text
                  ReferPart

                  IndexPart
                  DefValPart

    VALUE NOTATION ::=
                  value(VALUE ObjectName)

    Syntax ::=   -- Must be one of the following:
                       -- a base type (or its refinement),
                       -- a textual convention (or its refinement), or
                       -- a BITS pseudo-type
                   type
                | "BITS" "{" NamedBits "}"

    NamedBits ::= NamedBit
                | NamedBits "," NamedBit

    NamedBit ::=  identifier "(" number ")" -- number is nonnegative

    UnitsPart ::=
                  "UNITS" Text
                | empty

    Access ::=
                  "not-accessible"
                | "accessible-for-notify"
                | "read-only"
                | "read-write"
                | "read-create"

    Status ::=
                  "current"
                | "deprecated"
                | "obsolete"

    ReferPart ::=
                  "REFERENCE" Text
                | empty

    IndexPart ::=
                  "INDEX"    "{" IndexTypes "}"
                | "AUGMENTS" "{" Entry      "}"
                | empty
    IndexTypes ::=
                  IndexType
                | IndexTypes "," IndexType
    IndexType ::=
                  "IMPLIED" Index
                | Index

    Index ::=
                    -- use the SYNTAX value of the
                    -- correspondent OBJECT-TYPE invocation
                  value(ObjectName)
    Entry ::=
                    -- use the INDEX value of the
                    -- correspondent OBJECT-TYPE invocation
                  value(ObjectName)

    DefValPart ::= "DEFVAL" "{" Defvalue "}"
                | empty

    Defvalue ::=  -- must be valid for the type specified in
                  -- SYNTAX clause of same OBJECT-TYPE macro
                  value(ObjectSyntax)
                | "{" BitsValue "}"

    BitsValue ::= BitNames
                | empty

    BitNames ::=  BitName
                | BitNames "," BitName

    BitName ::= identifier

    -- a character string as defined in section 3.1.1
    Text ::= value(IA5String)
END

-- definitions for notifications

NOTIFICATION-TYPE MACRO ::=
BEGIN
    TYPE NOTATION ::=
                  ObjectsPart
                  "STATUS" Status
                  "DESCRIPTION" Text
                  ReferPart

    VALUE NOTATION ::=
                  value(VALUE NotificationName)

    ObjectsPart ::=
                  "OBJECTS" "{" Objects "}"
                | empty
    Objects ::=
                  Object

                | Objects "," Object
    Object ::=
                  value(ObjectName)

    Status ::=
                  "current"
                | "deprecated"
                | "obsolete"

    ReferPart ::=
                  "REFERENCE" Text
                | empty

    -- a character string as defined in section 3.1.1
    Text ::= value(IA5String)
END

-- definitions of administrative identifiers

zeroDotZero    OBJECT-IDENTITY
    STATUS     current
    DESCRIPTION
            "A value used for null identifiers."
    ::= { 0 0 }

END
share/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt000064400000102562150553041210013464 0ustar00SNMP-VIEW-BASED-ACM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-COMPLIANCE, OBJECT-GROUP       FROM SNMPv2-CONF
    MODULE-IDENTITY, OBJECT-TYPE,
    snmpModules                           FROM SNMPv2-SMI
    TestAndIncr,
    RowStatus, StorageType                FROM SNMPv2-TC
    SnmpAdminString,
    SnmpSecurityLevel,
    SnmpSecurityModel                     FROM SNMP-FRAMEWORK-MIB;

snmpVacmMIB       MODULE-IDENTITY
    LAST-UPDATED "200210160000Z"          -- 16 Oct 2002, midnight
    ORGANIZATION "SNMPv3 Working Group"
    CONTACT-INFO "WG-email:   snmpv3@lists.tislabs.com
                  Subscribe:  majordomo@lists.tislabs.com
                              In message body:  subscribe snmpv3

                  Co-Chair:   Russ Mundy
                              Network Associates Laboratories
                  postal:     15204 Omega Drive, Suite 300
                              Rockville, MD 20850-4601
                              USA
                  email:      mundy@tislabs.com
                  phone:      +1 301-947-7107

                  Co-Chair:   David Harrington
                              Enterasys Networks
                  Postal:     35 Industrial Way
                              P. O. Box 5004
                              Rochester, New Hampshire 03866-5005
                              USA
                  EMail:      dbh@enterasys.com
                  Phone:      +1 603-337-2614

                  Co-editor:  Bert Wijnen
                              Lucent Technologies
                  postal:     Schagen 33
                              3461 GL Linschoten
                              Netherlands
                  email:      bwijnen@lucent.com
                  phone:      +31-348-480-685

                  Co-editor:  Randy Presuhn
                              BMC Software, Inc.

                  postal:     2141 North First Street
                              San Jose, CA 95131
                              USA
                  email:      randy_presuhn@bmc.com
                  phone:      +1 408-546-1006

                  Co-editor:  Keith McCloghrie
                              Cisco Systems, Inc.
                  postal:     170 West Tasman Drive
                              San Jose, CA  95134-1706
                              USA
                  email:      kzm@cisco.com
                  phone:      +1-408-526-5260
                 "
    DESCRIPTION  "The management information definitions for the
                  View-based Access Control Model for SNMP.

                  Copyright (C) The Internet Society (2002). This
                  version of this MIB module is part of RFC 3415;
                  see the RFC itself for full legal notices.
                 "
--  Revision history

    REVISION     "200210160000Z"          -- 16 Oct 2002, midnight
    DESCRIPTION  "Clarifications, published as RFC3415"

    REVISION     "199901200000Z"          -- 20 Jan 1999, midnight
    DESCRIPTION  "Clarifications, published as RFC2575"

    REVISION     "199711200000Z"          -- 20 Nov 1997, midnight
    DESCRIPTION  "Initial version, published as RFC2275"
    ::= { snmpModules 16 }

-- Administrative assignments ****************************************

vacmMIBObjects      OBJECT IDENTIFIER ::= { snmpVacmMIB 1 }
vacmMIBConformance  OBJECT IDENTIFIER ::= { snmpVacmMIB 2 }

-- Information about Local Contexts **********************************

vacmContextTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF VacmContextEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The table of locally available contexts.

                 This table provides information to SNMP Command

                 Generator applications so that they can properly
                 configure the vacmAccessTable to control access to
                 all contexts at the SNMP entity.

                 This table may change dynamically if the SNMP entity
                 allows that contexts are added/deleted dynamically
                 (for instance when its configuration changes).  Such
                 changes would happen only if the management
                 instrumentation at that SNMP entity recognizes more
                 (or fewer) contexts.

                 The presence of entries in this table and of entries
                 in the vacmAccessTable are independent.  That is, a
                 context identified by an entry in this table is not
                 necessarily referenced by any entries in the
                 vacmAccessTable; and the context(s) referenced by an
                 entry in the vacmAccessTable does not necessarily
                 currently exist and thus need not be identified by an
                 entry in this table.

                 This table must be made accessible via the default
                 context so that Command Responder applications have
                 a standard way of retrieving the information.

                 This table is read-only.  It cannot be configured via
                 SNMP.
                "
    ::= { vacmMIBObjects 1 }

vacmContextEntry OBJECT-TYPE
    SYNTAX       VacmContextEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Information about a particular context."
    INDEX       {
                  vacmContextName
                }
    ::= { vacmContextTable 1 }

VacmContextEntry ::= SEQUENCE
    {
        vacmContextName SnmpAdminString
    }

vacmContextName  OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "A human readable name identifying a particular
                 context at a particular SNMP entity.

                 The empty contextName (zero length) represents the
                 default context.
                "
    ::= { vacmContextEntry 1 }

-- Information about Groups ******************************************

vacmSecurityToGroupTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF VacmSecurityToGroupEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "This table maps a combination of securityModel and
                 securityName into a groupName which is used to define
                 an access control policy for a group of principals.
                "
    ::= { vacmMIBObjects 2 }

vacmSecurityToGroupEntry OBJECT-TYPE
    SYNTAX       VacmSecurityToGroupEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An entry in this table maps the combination of a
                 securityModel and securityName into a groupName.
                "
    INDEX       {
                  vacmSecurityModel,
                  vacmSecurityName
                }
    ::= { vacmSecurityToGroupTable 1 }

VacmSecurityToGroupEntry ::= SEQUENCE
    {
        vacmSecurityModel               SnmpSecurityModel,
        vacmSecurityName                SnmpAdminString,
        vacmGroupName                   SnmpAdminString,
        vacmSecurityToGroupStorageType  StorageType,
        vacmSecurityToGroupStatus       RowStatus
    }

vacmSecurityModel OBJECT-TYPE
    SYNTAX       SnmpSecurityModel(1..2147483647)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The Security Model, by which the vacmSecurityName
                 referenced by this entry is provided.

                 Note, this object may not take the 'any' (0) value.
                "
    ::= { vacmSecurityToGroupEntry 1 }

vacmSecurityName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(1..32))
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The securityName for the principal, represented in a
                 Security Model independent format, which is mapped by
                 this entry to a groupName.
                "
    ::= { vacmSecurityToGroupEntry 2 }

vacmGroupName    OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(1..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The name of the group to which this entry (e.g., the
                 combination of securityModel and securityName)
                 belongs.

                 This groupName is used as index into the
                 vacmAccessTable to select an access control policy.
                 However, a value in this table does not imply that an
                 instance with the value exists in table vacmAccesTable.
                "
    ::= { vacmSecurityToGroupEntry 3 }

vacmSecurityToGroupStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.
                 Conceptual rows having the value 'permanent' need not
                 allow write-access to any columnar objects in the row.
                "
    DEFVAL      { nonVolatile }
    ::= { vacmSecurityToGroupEntry 4 }

vacmSecurityToGroupStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 Until instances of all corresponding columns are
                 appropriately configured, the value of the

                 corresponding instance of the vacmSecurityToGroupStatus
                 column is 'notReady'.

                 In particular, a newly created row cannot be made
                 active until a value has been set for vacmGroupName.

                 The  RowStatus TC [RFC2579] requires that this
                 DESCRIPTION clause states under which circumstances
                 other objects in this row can be modified:

                 The value of this object has no effect on whether
                 other objects in this conceptual row can be modified.
                "
    ::= { vacmSecurityToGroupEntry 5 }

-- Information about Access Rights ***********************************

vacmAccessTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF VacmAccessEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The table of access rights for groups.

                 Each entry is indexed by a groupName, a contextPrefix,
                 a securityModel and a securityLevel.  To determine
                 whether access is allowed, one entry from this table
                 needs to be selected and the proper viewName from that
                 entry must be used for access control checking.

                 To select the proper entry, follow these steps:

                 1) the set of possible matches is formed by the
                    intersection of the following sets of entries:

                      the set of entries with identical vacmGroupName
                      the union of these two sets:
                       - the set with identical vacmAccessContextPrefix
                       - the set of entries with vacmAccessContextMatch
                         value of 'prefix' and matching
                         vacmAccessContextPrefix
                      intersected with the union of these two sets:
                       - the set of entries with identical
                         vacmSecurityModel
                       - the set of entries with vacmSecurityModel
                         value of 'any'
                      intersected with the set of entries with
                      vacmAccessSecurityLevel value less than or equal
                      to the requested securityLevel

                 2) if this set has only one member, we're done
                    otherwise, it comes down to deciding how to weight
                    the preferences between ContextPrefixes,
                    SecurityModels, and SecurityLevels as follows:
                    a) if the subset of entries with securityModel
                       matching the securityModel in the message is
                       not empty, then discard the rest.
                    b) if the subset of entries with
                       vacmAccessContextPrefix matching the contextName
                       in the message is not empty,
                       then discard the rest
                    c) discard all entries with ContextPrefixes shorter
                       than the longest one remaining in the set
                    d) select the entry with the highest securityLevel

                 Please note that for securityLevel noAuthNoPriv, all
                 groups are really equivalent since the assumption that
                 the securityName has been authenticated does not hold.
                "
    ::= { vacmMIBObjects 4 }

vacmAccessEntry  OBJECT-TYPE
    SYNTAX       VacmAccessEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An access right configured in the Local Configuration
                 Datastore (LCD) authorizing access to an SNMP context.

                 Entries in this table can use an instance value for
                 object vacmGroupName even if no entry in table
                 vacmAccessSecurityToGroupTable has a corresponding
                 value for object vacmGroupName.
                "
    INDEX       { vacmGroupName,
                  vacmAccessContextPrefix,
                  vacmAccessSecurityModel,
                  vacmAccessSecurityLevel
                }
    ::= { vacmAccessTable 1 }

VacmAccessEntry ::= SEQUENCE
    {
        vacmAccessContextPrefix    SnmpAdminString,
        vacmAccessSecurityModel    SnmpSecurityModel,
        vacmAccessSecurityLevel    SnmpSecurityLevel,
        vacmAccessContextMatch     INTEGER,
        vacmAccessReadViewName     SnmpAdminString,
        vacmAccessWriteViewName    SnmpAdminString,
        vacmAccessNotifyViewName   SnmpAdminString,
        vacmAccessStorageType      StorageType,
        vacmAccessStatus           RowStatus
    }

vacmAccessContextPrefix OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "In order to gain the access rights allowed by this
                 conceptual row, a contextName must match exactly
                 (if the value of vacmAccessContextMatch is 'exact')
                 or partially (if the value of vacmAccessContextMatch
                 is 'prefix') to the value of the instance of this
                 object.
                "
    ::= { vacmAccessEntry 1 }

vacmAccessSecurityModel OBJECT-TYPE
    SYNTAX       SnmpSecurityModel
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "In order to gain the access rights allowed by this
                 conceptual row, this securityModel must be in use.
                "
    ::= { vacmAccessEntry 2 }

vacmAccessSecurityLevel OBJECT-TYPE
    SYNTAX       SnmpSecurityLevel
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The minimum level of security required in order to
                 gain the access rights allowed by this conceptual
                 row.  A securityLevel of noAuthNoPriv is less than
                 authNoPriv which in turn is less than authPriv.

                 If multiple entries are equally indexed except for
                 this vacmAccessSecurityLevel index, then the entry
                 which has the highest value for
                 vacmAccessSecurityLevel is selected.
                "
    ::= { vacmAccessEntry 3 }

vacmAccessContextMatch OBJECT-TYPE
    SYNTAX       INTEGER
                { exact (1), -- exact match of prefix and contextName
                  prefix (2) -- Only match to the prefix
                }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "If the value of this object is exact(1), then all
                 rows where the contextName exactly matches
                 vacmAccessContextPrefix are selected.

                 If the value of this object is prefix(2), then all
                 rows where the contextName whose starting octets
                 exactly match vacmAccessContextPrefix are selected.
                 This allows for a simple form of wildcarding.
                "
    DEFVAL      { exact }
    ::= { vacmAccessEntry 4 }

vacmAccessReadViewName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The value of an instance of this object identifies
                 the MIB view of the SNMP context to which this
                 conceptual row authorizes read access.

                 The identified MIB view is that one for which the
                 vacmViewTreeFamilyViewName has the same value as the
                 instance of this object; if the value is the empty
                 string or if there is no active MIB view having this
                 value of vacmViewTreeFamilyViewName, then no access
                 is granted.
                "
    DEFVAL      { ''H }   -- the empty string
    ::= { vacmAccessEntry 5 }

vacmAccessWriteViewName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The value of an instance of this object identifies
                 the MIB view of the SNMP context to which this
                 conceptual row authorizes write access.

                 The identified MIB view is that one for which the
                 vacmViewTreeFamilyViewName has the same value as the
                 instance of this object; if the value is the empty
                 string or if there is no active MIB view having this
                 value of vacmViewTreeFamilyViewName, then no access
                 is granted.
                "
    DEFVAL      { ''H }   -- the empty string
    ::= { vacmAccessEntry 6 }

vacmAccessNotifyViewName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The value of an instance of this object identifies
                 the MIB view of the SNMP context to which this
                 conceptual row authorizes access for notifications.

                 The identified MIB view is that one for which the
                 vacmViewTreeFamilyViewName has the same value as the
                 instance of this object; if the value is the empty
                 string or if there is no active MIB view having this
                 value of vacmViewTreeFamilyViewName, then no access
                 is granted.
                "
    DEFVAL      { ''H }   -- the empty string
    ::= { vacmAccessEntry 7 }

vacmAccessStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.

                 Conceptual rows having the value 'permanent' need not
                 allow write-access to any columnar objects in the row.
                "
    DEFVAL      { nonVolatile }
    ::= { vacmAccessEntry 8 }

vacmAccessStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 The  RowStatus TC [RFC2579] requires that this
                 DESCRIPTION clause states under which circumstances
                 other objects in this row can be modified:

                 The value of this object has no effect on whether
                 other objects in this conceptual row can be modified.
                "
    ::= { vacmAccessEntry 9 }

-- Information about MIB views ***************************************

-- Support for instance-level granularity is optional.
--
-- In some implementations, instance-level access control
-- granularity may come at a high performance cost.  Managers
-- should avoid requesting such configurations unnecessarily.

vacmMIBViews     OBJECT IDENTIFIER ::= { vacmMIBObjects 5 }

vacmViewSpinLock OBJECT-TYPE
    SYNTAX       TestAndIncr
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION "An advisory lock used to allow cooperating SNMP
                 Command Generator applications to coordinate their
                 use of the Set operation in creating or modifying
                 views.

                 When creating a new view or altering an existing
                 view, it is important to understand the potential
                 interactions with other uses of the view.  The
                 vacmViewSpinLock should be retrieved.  The name of
                 the view to be created should be determined to be
                 unique by the SNMP Command Generator application by
                 consulting the vacmViewTreeFamilyTable.  Finally,
                 the named view may be created (Set), including the
                 advisory lock.
                 If another SNMP Command Generator application has
                 altered the views in the meantime, then the spin
                 lock's value will have changed, and so this creation
                 will fail because it will specify the wrong value for
                 the spin lock.

                 Since this is an advisory lock, the use of this lock
                 is not enforced.
                "
    ::= { vacmMIBViews 1 }

vacmViewTreeFamilyTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF VacmViewTreeFamilyEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Locally held information about families of subtrees
                 within MIB views.

                 Each MIB view is defined by two sets of view subtrees:
                   - the included view subtrees, and
                   - the excluded view subtrees.
                 Every such view subtree, both the included and the

                 excluded ones, is defined in this table.

                 To determine if a particular object instance is in
                 a particular MIB view, compare the object instance's
                 OBJECT IDENTIFIER with each of the MIB view's active
                 entries in this table.  If none match, then the
                 object instance is not in the MIB view.  If one or
                 more match, then the object instance is included in,
                 or excluded from, the MIB view according to the
                 value of vacmViewTreeFamilyType in the entry whose
                 value of vacmViewTreeFamilySubtree has the most
                 sub-identifiers.  If multiple entries match and have
                 the same number of sub-identifiers (when wildcarding
                 is specified with the value of vacmViewTreeFamilyMask),
                 then the lexicographically greatest instance of
                 vacmViewTreeFamilyType determines the inclusion or
                 exclusion.

                 An object instance's OBJECT IDENTIFIER X matches an
                 active entry in this table when the number of
                 sub-identifiers in X is at least as many as in the
                 value of vacmViewTreeFamilySubtree for the entry,
                 and each sub-identifier in the value of
                 vacmViewTreeFamilySubtree matches its corresponding
                 sub-identifier in X.  Two sub-identifiers match
                 either if the corresponding bit of the value of
                 vacmViewTreeFamilyMask for the entry is zero (the
                 'wild card' value), or if they are equal.

                 A 'family' of subtrees is the set of subtrees defined
                 by a particular combination of values of
                 vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask.

                 In the case where no 'wild card' is defined in the
                 vacmViewTreeFamilyMask, the family of subtrees reduces
                 to a single subtree.

                 When creating or changing MIB views, an SNMP Command
                 Generator application should utilize the
                 vacmViewSpinLock to try to avoid collisions.  See
                 DESCRIPTION clause of vacmViewSpinLock.

                 When creating MIB views, it is strongly advised that
                 first the 'excluded' vacmViewTreeFamilyEntries are
                 created and then the 'included' entries.

                 When deleting MIB views, it is strongly advised that
                 first the 'included' vacmViewTreeFamilyEntries are

                 deleted and then the 'excluded' entries.

                 If a create for an entry for instance-level access
                 control is received and the implementation does not
                 support instance-level granularity, then an
                 inconsistentName error must be returned.
                "
    ::= { vacmMIBViews 2 }

vacmViewTreeFamilyEntry OBJECT-TYPE
    SYNTAX       VacmViewTreeFamilyEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Information on a particular family of view subtrees
                 included in or excluded from a particular SNMP
                 context's MIB view.

                 Implementations must not restrict the number of
                 families of view subtrees for a given MIB view,
                 except as dictated by resource constraints on the
                 overall number of entries in the
                 vacmViewTreeFamilyTable.

                 If no conceptual rows exist in this table for a given
                 MIB view (viewName), that view may be thought of as
                 consisting of the empty set of view subtrees.
                "
    INDEX       { vacmViewTreeFamilyViewName,
                  vacmViewTreeFamilySubtree
                }
    ::= { vacmViewTreeFamilyTable 1 }

VacmViewTreeFamilyEntry ::= SEQUENCE
    {
        vacmViewTreeFamilyViewName     SnmpAdminString,
        vacmViewTreeFamilySubtree      OBJECT IDENTIFIER,
        vacmViewTreeFamilyMask         OCTET STRING,
        vacmViewTreeFamilyType         INTEGER,
        vacmViewTreeFamilyStorageType  StorageType,
        vacmViewTreeFamilyStatus       RowStatus
    }

vacmViewTreeFamilyViewName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(1..32))
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The human readable name for a family of view subtrees.
                "
    ::= { vacmViewTreeFamilyEntry 1 }

vacmViewTreeFamilySubtree OBJECT-TYPE
    SYNTAX       OBJECT IDENTIFIER
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "The MIB subtree which when combined with the
                 corresponding instance of vacmViewTreeFamilyMask
                 defines a family of view subtrees.
                "
    ::= { vacmViewTreeFamilyEntry 2 }

vacmViewTreeFamilyMask OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..16))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The bit mask which, in combination with the
                 corresponding instance of vacmViewTreeFamilySubtree,
                 defines a family of view subtrees.

                 Each bit of this bit mask corresponds to a
                 sub-identifier of vacmViewTreeFamilySubtree, with the
                 most significant bit of the i-th octet of this octet
                 string value (extended if necessary, see below)
                 corresponding to the (8*i - 7)-th sub-identifier, and
                 the least significant bit of the i-th octet of this
                 octet string corresponding to the (8*i)-th
                 sub-identifier, where i is in the range 1 through 16.

                 Each bit of this bit mask specifies whether or not
                 the corresponding sub-identifiers must match when
                 determining if an OBJECT IDENTIFIER is in this
                 family of view subtrees; a '1' indicates that an
                 exact match must occur; a '0' indicates 'wild card',
                 i.e., any sub-identifier value matches.

                 Thus, the OBJECT IDENTIFIER X of an object instance
                 is contained in a family of view subtrees if, for
                 each sub-identifier of the value of
                 vacmViewTreeFamilySubtree, either:

                   the i-th bit of vacmViewTreeFamilyMask is 0, or

                   the i-th sub-identifier of X is equal to the i-th
                   sub-identifier of the value of
                   vacmViewTreeFamilySubtree.

                 If the value of this bit mask is M bits long and

                 there are more than M sub-identifiers in the
                 corresponding instance of vacmViewTreeFamilySubtree,
                 then the bit mask is extended with 1's to be the
                 required length.

                 Note that when the value of this object is the
                 zero-length string, this extension rule results in
                 a mask of all-1's being used (i.e., no 'wild card'),
                 and the family of view subtrees is the one view
                 subtree uniquely identified by the corresponding
                 instance of vacmViewTreeFamilySubtree.

                 Note that masks of length greater than zero length
                 do not need to be supported.  In this case this
                 object is made read-only.
                "
    DEFVAL      { ''H }
    ::= { vacmViewTreeFamilyEntry 3 }

vacmViewTreeFamilyType OBJECT-TYPE
    SYNTAX       INTEGER  { included(1), excluded(2) }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "Indicates whether the corresponding instances of
                 vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask
                 define a family of view subtrees which is included in
                 or excluded from the MIB view.
                "
    DEFVAL      { included }
    ::= { vacmViewTreeFamilyEntry 4 }

vacmViewTreeFamilyStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.

                 Conceptual rows having the value 'permanent' need not
                 allow write-access to any columnar objects in the row.
                "
    DEFVAL      { nonVolatile }
    ::= { vacmViewTreeFamilyEntry 5 }

vacmViewTreeFamilyStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 The  RowStatus TC [RFC2579] requires that this
                 DESCRIPTION clause states under which circumstances
                 other objects in this row can be modified:

                 The value of this object has no effect on whether
                 other objects in this conceptual row can be modified.
                "
    ::= { vacmViewTreeFamilyEntry 6 }

-- Conformance information *******************************************

vacmMIBCompliances  OBJECT IDENTIFIER ::= { vacmMIBConformance 1 }
vacmMIBGroups       OBJECT IDENTIFIER ::= { vacmMIBConformance 2 }

-- Compliance statements *********************************************

vacmMIBCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION "The compliance statement for SNMP engines which
                 implement the SNMP View-based Access Control Model
                 configuration MIB.
                "
    MODULE -- this module
        MANDATORY-GROUPS { vacmBasicGroup }

        OBJECT        vacmAccessContextMatch
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmAccessReadViewName
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmAccessWriteViewName
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmAccessNotifyViewName
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmAccessStorageType
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmAccessStatus
        MIN-ACCESS    read-only
        DESCRIPTION  "Create/delete/modify access to the

                      vacmAccessTable is not required.
                     "

        OBJECT        vacmViewTreeFamilyMask
        WRITE-SYNTAX  OCTET STRING (SIZE (0))
        MIN-ACCESS    read-only
        DESCRIPTION  "Support for configuration via SNMP of subtree
                      families using wild-cards is not required.
                     "

        OBJECT        vacmViewTreeFamilyType
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmViewTreeFamilyStorageType
        MIN-ACCESS    read-only
        DESCRIPTION  "Write access is not required."

        OBJECT        vacmViewTreeFamilyStatus
        MIN-ACCESS    read-only
        DESCRIPTION  "Create/delete/modify access to the
                      vacmViewTreeFamilyTable is not required.
                     "
    ::= { vacmMIBCompliances 1 }

-- Units of conformance **********************************************

vacmBasicGroup OBJECT-GROUP
    OBJECTS {
              vacmContextName,
              vacmGroupName,
              vacmSecurityToGroupStorageType,
              vacmSecurityToGroupStatus,
              vacmAccessContextMatch,
              vacmAccessReadViewName,
              vacmAccessWriteViewName,
              vacmAccessNotifyViewName,
              vacmAccessStorageType,
              vacmAccessStatus,
              vacmViewSpinLock,
              vacmViewTreeFamilyMask,
              vacmViewTreeFamilyType,
              vacmViewTreeFamilyStorageType,
              vacmViewTreeFamilyStatus
            }
    STATUS       current
    DESCRIPTION "A collection of objects providing for remote
                 configuration of an SNMP engine which implements

                 the SNMP View-based Access Control Model.
                "
    ::= { vacmMIBGroups 1 }

END
share/snmp/mibs/UCD-IPFWACC-MIB.txt000064400000017666150553041210012424 0ustar00UCD-IPFWACC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE, MODULE-IDENTITY, IpAddress, Integer32, Counter32
	FROM SNMPv2-SMI
    DisplayString
	FROM SNMPv2-TC
    ucdExperimental
	FROM UCD-SNMP-MIB;

ucdIpFwAccMIB MODULE-IDENTITY
    LAST-UPDATED "9912160000Z"
    ORGANIZATION "University of California, Davis"
    CONTACT-INFO    
	"This mib is no longer being maintained by the University of
	 California and is now in life-support-mode and being
	 maintained by the net-snmp project.  The best place to write
	 for public questions about the net-snmp-coders mailing list
	 at net-snmp-coders@lists.sourceforge.net.

         postal:   Wes Hardaker
                   P.O. Box 382
                   Davis CA  95617

         email:    net-snmp-coders@lists.sourceforge.net
        "
    DESCRIPTION
	"This module defines MIB components for reading information
         from the accounting rules IP Firewall. This would typically
         let you read the rules and the counters. I did not include
         some flags and fields that I considered irrelevant for the
         accounting rules. Resetting the counters of the rules by SNMP
         would be simple, but I don't consider it so useful. I gave no
         consideration to implementing write access for allowing
         modification of the accounting rules.

         Cristian.Estan@net.utcluj.ro "
    REVISION	 "9912160000Z"
    DESCRIPTION
	"SMIv2 version converted from an older MIB definition."
    ::= { ucdExperimental 1 }

ipFwAccTable OBJECT-TYPE
    SYNTAX	SEQUENCE OF IpFwAccEntry
    MAX-ACCESS	not-accessible
    STATUS	current
    DESCRIPTION
	"A table with the accounting rules of the IP firewall"
    ::= { ucdIpFwAccMIB 1 }

ipFwAccEntry OBJECT-TYPE
    SYNTAX	IpFwAccEntry
    MAX-ACCESS	not-accessible
    STATUS	current
    DESCRIPTION
	"An accounting rule of the IP firewall"
    INDEX	{ ipFwAccIndex }
    ::= { ipFwAccTable 1 }

IpFwAccEntry ::= SEQUENCE {
    ipFwAccIndex	Integer32,
    ipFwAccSrcAddr	IpAddress,
    ipFwAccSrcNetMask	IpAddress,
    ipFwAccDstAddr	IpAddress,
    ipFwAccDstNetMask	IpAddress,
    ipFwAccViaName	DisplayString,
    ipFwAccViaAddr	IpAddress,
    ipFwAccProto	INTEGER,
    ipFwAccBidir	INTEGER,
    ipFwAccDir		INTEGER,
    ipFwAccBytes	Counter32,
    ipFwAccPackets	Counter32,
    ipFwAccNrSrcPorts	Integer32,
    ipFwAccNrDstPorts	Integer32,
    ipFwAccSrcIsRange	INTEGER,
    ipFwAccDstIsRange	INTEGER,
    ipFwAccPort1	Integer32,
    ipFwAccPort2	Integer32,
    ipFwAccPort3	Integer32,
    ipFwAccPort4	Integer32,
    ipFwAccPort5	Integer32,
    ipFwAccPort6	Integer32,
    ipFwAccPort7	Integer32,
    ipFwAccPort8	Integer32,
    ipFwAccPort9	Integer32,
    ipFwAccPort10	Integer32
}

ipFwAccIndex OBJECT-TYPE
    SYNTAX	Integer32 (0..2147483647)
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Reference index for each firewall rule."
    ::= { ipFwAccEntry 1 }

ipFwAccSrcAddr OBJECT-TYPE
    SYNTAX	IpAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The source address in the firewall rule."
    ::= { ipFwAccEntry 2 }

ipFwAccSrcNetMask OBJECT-TYPE
    SYNTAX	IpAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The netmask of the source address in the firewall rule."
    ::= { ipFwAccEntry 3 }

ipFwAccDstAddr OBJECT-TYPE
    SYNTAX	IpAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The destination address in the firewall rule."
    ::= { ipFwAccEntry 4 }

ipFwAccDstNetMask OBJECT-TYPE
    SYNTAX	IpAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The netmask of the destination address in the firewall rule."
    ::= { ipFwAccEntry 5 }

ipFwAccViaName OBJECT-TYPE
    SYNTAX	DisplayString (SIZE(1..64))
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The name of the interface to which the rule applies. If no
	 interface is associated with the present rule, this should
	 contain a dash (-)."
    ::= { ipFwAccEntry 6 }

ipFwAccViaAddr OBJECT-TYPE
    SYNTAX	IpAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The address of the interface to which the rule applies.
	 Using this parameter makes sense when multiple addresses are
	 associated to the same physical interface. If not defined
	 for the current rule this should be set to 0."
    ::= { ipFwAccEntry 7 }

ipFwAccProto OBJECT-TYPE
    SYNTAX	INTEGER {
		    other(1),
		    all(2),
		    tcp(3),
		    udp(4),
		    icmp(5)
		}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The protocol(s) to which the rule applies."
    ::= { ipFwAccEntry 8 }

ipFwAccBidir OBJECT-TYPE
    SYNTAX	INTEGER {
		    unidirectional(1),
		    bidirectional(2)
		}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Whether the rule works in both directions (i.e. with the
	 source and destination parts swapped) or not."
    ::= { ipFwAccEntry 9 }

ipFwAccDir OBJECT-TYPE
    SYNTAX	INTEGER {
		    both(1),
		    in(2),
		    out(3)
		}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Whether the rule applies to packets entering or exiting the
	 kernel."
    ::= { ipFwAccEntry 10 }

ipFwAccBytes OBJECT-TYPE
    SYNTAX	Counter32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The number of bytes that matched this rule since the last
	 reset of the counters."
    ::= { ipFwAccEntry 11 }

ipFwAccPackets OBJECT-TYPE
    SYNTAX	Counter32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The number of packets that matched this rule since the last
	 reset of the counters."
    ::= { ipFwAccEntry 12 }

ipFwAccNrSrcPorts OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The number of ports that refer to the source address."
    ::= { ipFwAccEntry 13 }

ipFwAccNrDstPorts OBJECT-TYPE
    SYNTAX	Integer32 
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The number of ports that refer to the destination address."
    ::= { ipFwAccEntry 14 }

ipFwAccSrcIsRange OBJECT-TYPE
    SYNTAX	INTEGER {
		    srchasrange(1),
		    srchasnorange(2)
		}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Interpret the first two ports of the source part as
	 the upper and lower limit of an interval or not."
    ::= { ipFwAccEntry 15 }

ipFwAccDstIsRange OBJECT-TYPE
    SYNTAX	INTEGER {
		    dsthasrange(1),
		    dsthasnorange(2)
		}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Interpret the first two ports of the destination part as
	 the upper and lower limit of an interval or not."
    ::= { ipFwAccEntry 16 }

ipFwAccPort1 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 1."
    ::= { ipFwAccEntry 17 }

ipFwAccPort2 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 2."
    ::= { ipFwAccEntry 18 }

ipFwAccPort3 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 3."
    ::= { ipFwAccEntry 19 }

ipFwAccPort4 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 4."
    ::= { ipFwAccEntry 20 }

ipFwAccPort5 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 5."
    ::= { ipFwAccEntry 21 }

ipFwAccPort6 OBJECT-TYPE
    SYNTAX	Integer32 
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 6."
    ::= { ipFwAccEntry 22 }

ipFwAccPort7 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 7."
    ::= { ipFwAccEntry 23 }

ipFwAccPort8 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 8."
    ::= { ipFwAccEntry 24 }

ipFwAccPort9 OBJECT-TYPE
     SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 9."
    ::= { ipFwAccEntry 25 }

ipFwAccPort10 OBJECT-TYPE
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"Port number 10."
    ::= { ipFwAccEntry 26 }

END
share/snmp/mibs/IPV6-TC.txt000064400000006122150553041210011343 0ustar00IPV6-TC DEFINITIONS ::= BEGIN

-- Copyright (c) 2017 IETF Trust and the persons identified as
-- authors of the code.  All rights reserved.

--   Redistribution and use in source and binary forms, with or without
--   modification, is permitted pursuant to, and subject to the license
--   terms contained in, the Simplified BSD License set forth in Section
--   4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
--   (http://trustee.ietf.org/license-info).

IMPORTS
     Integer32                FROM SNMPv2-SMI
     TEXTUAL-CONVENTION       FROM SNMPv2-TC;

-- definition of textual conventions
Ipv6Address ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 addresses.
        This is a binary string of 16 octets in network
        byte-order.

        This object is obsoleted by INET-ADDRESS-MIB::InetAddress."
     SYNTAX       OCTET STRING (SIZE (16))

Ipv6AddressPrefix ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 address
       prefixes.  This is a binary string of up to 16
       octets in network byte-order.
       This object is obsoleted by INET-ADDRESS-MIB::InetAddress."
     SYNTAX       OCTET STRING (SIZE (0..16))

Ipv6AddressIfIdentifier ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       obsolete
     DESCRIPTION
       "This data type is used to model IPv6 address
       interface identifiers.  This is a binary string
        of up to 8 octets in network byte-order.

       This object is obsoleted by IP-MIB::Ipv6AddressIfIdentifierTC."
     SYNTAX      OCTET STRING (SIZE (0..8))

Ipv6IfIndex ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "d"
     STATUS       obsolete
     DESCRIPTION
       "A unique value, greater than zero for each
       internetwork-layer interface in the managed
       system.  It is recommended that values are assigned
       contiguously starting from 1.  The value for each
       internetwork-layer interface must remain constant
       at least from one re-initialization of the entity's
       network management system to the next
       re-initialization.

       This object is obsoleted by IF-MIB::InterfaceIndex."
     SYNTAX       Integer32 (1..2147483647)

Ipv6IfIndexOrZero ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "d"
     STATUS       obsolete
     DESCRIPTION
         "This textual convention is an extension of the
         Ipv6IfIndex convention.  The latter defines
         a greater than zero value used to identify an IPv6
         interface in the managed system.  This extension
         permits the additional value of zero.  The value
         zero is object-specific and must therefore be
         defined as part of the description of any object
         which uses this syntax.  Examples of the usage of
         zero might include situations where interface was
         unknown, or when none or all interfaces need to be
         referenced.

         This object is obsoleted by IF-MIB::InterfaceIndexOrZero."
     SYNTAX       Integer32 (0..2147483647)

END
share/snmp/mibs/HOST-RESOURCES-MIB.txt000064400000146500150553041210013052 0ustar00HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN

IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, mib-2,
Integer32, Counter32, Gauge32, TimeTicks  FROM SNMPv2-SMI

TEXTUAL-CONVENTION, DisplayString,
TruthValue, DateAndTime, AutonomousType   FROM SNMPv2-TC

MODULE-COMPLIANCE, OBJECT-GROUP           FROM SNMPv2-CONF

InterfaceIndexOrZero                      FROM IF-MIB;

hostResourcesMibModule MODULE-IDENTITY
   LAST-UPDATED "200003060000Z"    -- 6 March 2000
   ORGANIZATION "IETF Host Resources MIB Working Group"
   CONTACT-INFO
       "Steve Waldbusser
       Postal: Lucent Technologies, Inc.
               1213 Innsbruck Dr.
               Sunnyvale, CA 94089
               USA
       Phone:  650-318-1251
       Fax:    650-318-1633
       Email:  waldbusser@lucent.com

       In addition, the Host Resources MIB mailing list is
       dedicated to discussion of this MIB. To join the
       mailing list, send a request message to
       hostmib-request@andrew.cmu.edu. The mailing list
       address is hostmib@andrew.cmu.edu."
   DESCRIPTION
       "This MIB is for use in managing host systems. The term
       `host' is construed to mean any computer that communicates
       with other similar computers attached to the internet and
       that is directly used by one or more human beings. Although
       this MIB does not necessarily apply to devices whose primary
       function is communications services (e.g., terminal servers,
       routers, bridges, monitoring equipment), such relevance is
       not explicitly precluded.  This MIB instruments attributes
       common to all internet hosts including, for example, both
       personal computers and systems that run variants of Unix."

   REVISION "200003060000Z"        -- 6 March 2000
   DESCRIPTION
       "Clarifications and bug fixes based on implementation
       experience.  This revision was also reformatted in the SMIv2
       format. The revisions made were:

       New RFC document standards:
          Added Copyright notice, updated introduction to SNMP
          Framework, updated references section, added reference to
          RFC 2119, and added a meaningful Security Considerations
          section.

       New IANA considerations section for registration of new types

       Conversion to new SMIv2 syntax for the following types and
       macros:
           Counter32, Integer32, Gauge32, MODULE-IDENTITY,
           OBJECT-TYPE, TEXTUAL-CONVENTION, OBJECT-IDENTITY,
           MODULE-COMPLIANCE, OBJECT-GROUP

       Used new Textual Conventions:
           TruthValue, DateAndTime, AutonomousType,
           InterfaceIndexOrZero

       Fixed typo in hrPrinterStatus.

       Added missing error bits to hrPrinterDetectedErrorState and
       clarified confusion resulting from suggested mappings to
       hrPrinterStatus.

       Clarified that size of objects of type
       InternationalDisplayString is number of octets, not number
       of encoded symbols.

       Clarified the use of the following objects based on
       implementation experience:
           hrSystemInitialLoadDevice, hrSystemInitialLoadParameters,
           hrMemorySize, hrStorageSize, hrStorageAllocationFailures,
           hrDeviceErrors, hrProcessorLoad, hrNetworkIfIndex,
           hrDiskStorageCapacity, hrSWRunStatus, hrSWRunPerfCPU,
           and hrSWInstalledDate.

       Clarified implementation technique for hrSWInstalledTable.

       Used new AUGMENTS clause for hrSWRunPerfTable.

       Added Internationalization Considerations section.

This revision published as RFC2790."

   REVISION "9910202200Z"    -- 20 October, 1999
   DESCRIPTION
       "The original version of this MIB, published as
       RFC1514."
   ::= { hrMIBAdminInfo 1 }

host     OBJECT IDENTIFIER ::= { mib-2 25 }

hrSystem        OBJECT IDENTIFIER ::= { host 1 }
hrStorage       OBJECT IDENTIFIER ::= { host 2 }
hrDevice        OBJECT IDENTIFIER ::= { host 3 }
hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }
hrMIBAdminInfo  OBJECT IDENTIFIER ::= { host 7 }

-- textual conventions

KBytes ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Storage size, expressed in units of 1024 bytes."
    SYNTAX Integer32 (0..2147483647)

ProductID ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "This textual convention is intended to identify the

        manufacturer, model, and version of a specific
        hardware or software product.  It is suggested that
        these OBJECT IDENTIFIERs are allocated such that all
        products from a particular manufacturer are registered
        under a subtree distinct to that manufacturer.  In
        addition, all versions of a product should be
        registered under a subtree distinct to that product.
        With this strategy, a management station may uniquely
        determine the manufacturer and/or model of a product
        whose productID is unknown to the management station.
        Objects of this type may be useful for inventory
        purposes or for automatically detecting
        incompatibilities or version mismatches between
        various hardware and software components on a system.

        For example, the product ID for the ACME 4860 66MHz
        clock doubled processor might be:
        enterprises.acme.acmeProcessors.a4860DX2.MHz66

        A software product might be registered as:
        enterprises.acme.acmeOperatingSystems.acmeDOS.six(6).one(1)
        "
    SYNTAX OBJECT IDENTIFIER

-- unknownProduct will be used for any unknown ProductID
-- unknownProduct OBJECT IDENTIFIER ::= { 0 0 }

InternationalDisplayString ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "This data type is used to model textual information
        in some character set.  A network management station
        should use a local algorithm to determine which
        character set is in use and how it should be
        displayed.  Note that this character set may be
        encoded with more than one octet per symbol, but will
        most often be NVT ASCII. When a size clause is
        specified for an object of this type, the size refers
        to the length in octets, not the number of symbols."
    SYNTAX OCTET STRING

-- The Host Resources System Group

hrSystemUptime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The amount of time since this host was last
        initialized.  Note that this is different from
        sysUpTime in the SNMPv2-MIB [RFC1907] because
        sysUpTime is the uptime of the network management
        portion of the system."
    ::= { hrSystem 1 }

hrSystemDate OBJECT-TYPE
    SYNTAX     DateAndTime
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The host's notion of the local date and time of day."
    ::= { hrSystem 2 }

hrSystemInitialLoadDevice OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The index of the hrDeviceEntry for the device from
        which this host is configured to load its initial
        operating system configuration (i.e., which operating
        system code and/or boot parameters).

        Note that writing to this object just changes the
        configuration that will be used the next time the
        operating system is loaded and does not actually cause
        the reload to occur."
    ::= { hrSystem 3 }

hrSystemInitialLoadParameters OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE (0..128))
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "This object contains the parameters (e.g. a pathname
        and parameter) supplied to the load device when
        requesting the initial operating system configuration
        from that device.

     Note that writing to this object just changes the
     configuration that will be used the next time the
     operating system is loaded and does not actually cause
     the reload to occur."
    ::= { hrSystem 4 }

hrSystemNumUsers OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of user sessions for which this host is
        storing state information.  A session is a collection
        of processes requiring a single act of user
        authentication and possibly subject to collective job
        control."
    ::= { hrSystem 5 }

hrSystemProcesses OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of process contexts currently loaded or
        running on this system."
    ::= { hrSystem 6 }

hrSystemMaxProcesses OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The maximum number of process contexts this system
        can support.  If there is no fixed maximum, the value
        should be zero.  On systems that have a fixed maximum,
        this object can help diagnose failures that occur when
        this maximum is reached."
    ::= { hrSystem 7 }

-- The Host Resources Storage Group

-- Registration point for storage types, for use with hrStorageType.
-- These are defined in the HOST-RESOURCES-TYPES module.
hrStorageTypes          OBJECT IDENTIFIER ::= { hrStorage 1 }

hrMemorySize OBJECT-TYPE
    SYNTAX     KBytes
    UNITS      "KBytes"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The amount of physical read-write main memory,
        typically RAM, contained by the host."
    ::= { hrStorage 2 }

hrStorageTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrStorageEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of logical storage areas on
        the host.

        An entry shall be placed in the storage table for each
        logical area of storage that is allocated and has
        fixed resource limits.  The amount of storage
        represented in an entity is the amount actually usable
        by the requesting entity, and excludes loss due to
        formatting or file system reference information.

        These entries are associated with logical storage
        areas, as might be seen by an application, rather than
        physical storage entities which are typically seen by
        an operating system.  Storage such as tapes and
        floppies without file systems on them are typically
        not allocated in chunks by the operating system to
        requesting applications, and therefore shouldn't
        appear in this table.  Examples of valid storage for
        this table include disk partitions, file systems, ram
        (for some architectures this is further segmented into
        regular memory, extended memory, and so on), backing
        store for virtual memory (`swap space').

        This table is intended to be a useful diagnostic for
        `out of memory' and `out of buffers' types of
        failures.  In addition, it can be a useful performance
        monitoring tool for tracking memory, disk, or buffer
        usage."
    ::= { hrStorage 3 }

hrStorageEntry OBJECT-TYPE
    SYNTAX     HrStorageEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one logical storage area on
        the host.  As an example, an instance of the
        hrStorageType object might be named hrStorageType.3"
    INDEX { hrStorageIndex }
    ::= { hrStorageTable 1 }

HrStorageEntry ::= SEQUENCE {
        hrStorageIndex               Integer32,
        hrStorageType                AutonomousType,
        hrStorageDescr               DisplayString,
        hrStorageAllocationUnits     Integer32,
        hrStorageSize                Integer32,
        hrStorageUsed                Integer32,
        hrStorageAllocationFailures  Counter32
    }

hrStorageIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each logical storage area
        contained by the host."
    ::= { hrStorageEntry 1 }

hrStorageType OBJECT-TYPE
    SYNTAX     AutonomousType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The type of storage represented by this entry."
    ::= { hrStorageEntry 2 }

hrStorageDescr OBJECT-TYPE
    SYNTAX     DisplayString
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A description of the type and instance of the storage
        described by this entry."
    ::= { hrStorageEntry 3 }

hrStorageAllocationUnits OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    UNITS      "Bytes"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The size, in bytes, of the data objects allocated
        from this pool.  If this entry is monitoring sectors,
        blocks, buffers, or packets, for example, this number
        will commonly be greater than one.  Otherwise this
        number will typically be one."
    ::= { hrStorageEntry 4 }

hrStorageSize OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The size of the storage represented by this entry, in
        units of hrStorageAllocationUnits. This object is
        writable to allow remote configuration of the size of
        the storage area in those cases where such an
        operation makes sense and is possible on the
        underlying system. For example, the amount of main
        memory allocated to a buffer pool might be modified or
        the amount of disk space allocated to virtual memory
        might be modified."
    ::= { hrStorageEntry 5 }

hrStorageUsed OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The amount of the storage represented by this entry
        that is allocated, in units of
        hrStorageAllocationUnits."
    ::= { hrStorageEntry 6 }

hrStorageAllocationFailures OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of requests for storage represented by
        this entry that could not be honored due to not enough
        storage.  It should be noted that as this object has a
        SYNTAX of Counter32, that it does not have a defined
        initial value.  However, it is recommended that this
        object be initialized to zero, even though management
        stations must not depend on such an initialization."
    ::= { hrStorageEntry 7 }

-- The Host Resources Device Group
--
-- The device group is useful for identifying and diagnosing the
-- devices on a system.  The hrDeviceTable contains common
-- information for any type of device.  In addition, some devices
-- have device-specific tables for more detailed information.  More
-- such tables may be defined in the future for other device types.

-- Registration point for device types, for use with hrDeviceType.

-- These are defined in the HOST-RESOURCES-TYPES module.
hrDeviceTypes             OBJECT IDENTIFIER ::= { hrDevice 1 }

hrDeviceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrDeviceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of devices contained by the
        host."
    ::= { hrDevice 2 }

hrDeviceEntry OBJECT-TYPE
    SYNTAX     HrDeviceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one device contained by the
        host.  As an example, an instance of the hrDeviceType
        object might be named hrDeviceType.3"
    INDEX { hrDeviceIndex }
    ::= { hrDeviceTable 1 }

HrDeviceEntry ::= SEQUENCE {
        hrDeviceIndex           Integer32,
        hrDeviceType            AutonomousType,
        hrDeviceDescr           DisplayString,
        hrDeviceID              ProductID,
        hrDeviceStatus          INTEGER,
        hrDeviceErrors          Counter32
    }

hrDeviceIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each device contained by the host.
        The value for each device must remain constant at
        least from one re-initialization of the agent to the
        next re-initialization."
    ::= { hrDeviceEntry 1 }

hrDeviceType OBJECT-TYPE
    SYNTAX     AutonomousType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An indication of the type of device.

        If this value is
        `hrDeviceProcessor { hrDeviceTypes 3 }' then an entry
        exists in the hrProcessorTable which corresponds to
        this device.

        If this value is
        `hrDeviceNetwork { hrDeviceTypes 4 }', then an entry
        exists in the hrNetworkTable which corresponds to this
        device.

        If this value is
        `hrDevicePrinter { hrDeviceTypes 5 }', then an entry
        exists in the hrPrinterTable which corresponds to this
        device.

        If this value is
        `hrDeviceDiskStorage { hrDeviceTypes 6 }', then an
        entry exists in the hrDiskStorageTable which
        corresponds to this device."
    ::= { hrDeviceEntry 2 }

hrDeviceDescr OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (0..64))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A textual description of this device, including the
        device's manufacturer and revision, and optionally,
        its serial number."
    ::= { hrDeviceEntry 3 }

hrDeviceID OBJECT-TYPE
    SYNTAX     ProductID
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The product ID for this device."
    ::= { hrDeviceEntry 4 }

hrDeviceStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                   unknown(1),
                   running(2),
                   warning(3),
                   testing(4),
                   down(5)

               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The current operational state of the device described
        by this row of the table.  A value unknown(1)
        indicates that the current state of the device is
        unknown.  running(2) indicates that the device is up
        and running and that no unusual error conditions are
        known.  The warning(3) state indicates that agent has
        been informed of an unusual error condition by the
        operational software (e.g., a disk device driver) but
        that the device is still 'operational'.  An example
        would be a high number of soft errors on a disk.  A
        value of testing(4), indicates that the device is not
        available for use because it is in the testing state.
        The state of down(5) is used only when the agent has
        been informed that the device is not available for any
        use."
    ::= { hrDeviceEntry 5 }

hrDeviceErrors OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of errors detected on this device.  It
        should be noted that as this object has a SYNTAX of
        Counter32, that it does not have a defined initial
        value.  However, it is recommended that this object be
        initialized to zero, even though management stations
        must not depend on such an initialization."
    ::= { hrDeviceEntry 6 }

hrProcessorTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrProcessorEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of processors contained by the
        host.

        Note that this table is potentially sparse: a
        (conceptual) entry exists only if the correspondent
        value of the hrDeviceType object is
        `hrDeviceProcessor'."
    ::= { hrDevice 3 }

hrProcessorEntry OBJECT-TYPE
    SYNTAX     HrProcessorEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one processor contained by
        the host.  The hrDeviceIndex in the index represents
        the entry in the hrDeviceTable that corresponds to the
        hrProcessorEntry.

        As an example of how objects in this table are named,
        an instance of the hrProcessorFrwID object might be
        named hrProcessorFrwID.3"
    INDEX { hrDeviceIndex }
    ::= { hrProcessorTable 1 }

HrProcessorEntry ::= SEQUENCE {
        hrProcessorFrwID            ProductID,
        hrProcessorLoad             Integer32
    }

hrProcessorFrwID OBJECT-TYPE
    SYNTAX     ProductID
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The product ID of the firmware associated with the
        processor."
    ::= { hrProcessorEntry 1 }

hrProcessorLoad OBJECT-TYPE
    SYNTAX     Integer32 (0..100)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The average, over the last minute, of the percentage
        of time that this processor was not idle.
        Implementations may approximate this one minute
        smoothing period if necessary."
    ::= { hrProcessorEntry 2 }

hrNetworkTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrNetworkEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of network devices contained
        by the host.

        Note that this table is potentially sparse: a
        (conceptual) entry exists only if the correspondent
        value of the hrDeviceType object is
        `hrDeviceNetwork'."
    ::= { hrDevice 4 }

hrNetworkEntry OBJECT-TYPE
    SYNTAX     HrNetworkEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one network device contained
        by the host.  The hrDeviceIndex in the index
        represents the entry in the hrDeviceTable that
        corresponds to the hrNetworkEntry.

        As an example of how objects in this table are named,
        an instance of the hrNetworkIfIndex object might be
        named hrNetworkIfIndex.3"
    INDEX { hrDeviceIndex }
    ::= { hrNetworkTable 1 }

HrNetworkEntry ::= SEQUENCE {
        hrNetworkIfIndex    InterfaceIndexOrZero
    }

hrNetworkIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of ifIndex which corresponds to this
        network device. If this device is not represented in
        the ifTable, then this value shall be zero."
    ::= { hrNetworkEntry 1 }

hrPrinterTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrPrinterEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of printers local to the host.

        Note that this table is potentially sparse: a
        (conceptual) entry exists only if the correspondent
        value of the hrDeviceType object is
        `hrDevicePrinter'."
    ::= { hrDevice 5 }

hrPrinterEntry OBJECT-TYPE
    SYNTAX     HrPrinterEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one printer local to the
        host.  The hrDeviceIndex in the index represents the
        entry in the hrDeviceTable that corresponds to the
        hrPrinterEntry.

        As an example of how objects in this table are named,
        an instance of the hrPrinterStatus object might be
        named hrPrinterStatus.3"
    INDEX { hrDeviceIndex }
    ::= { hrPrinterTable 1 }

HrPrinterEntry ::= SEQUENCE {
        hrPrinterStatus             INTEGER,
        hrPrinterDetectedErrorState OCTET STRING
    }

hrPrinterStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                   other(1),
                   unknown(2),
                   idle(3),
                   printing(4),
                   warmup(5)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The current status of this printer device."
    ::= { hrPrinterEntry 1 }

hrPrinterDetectedErrorState OBJECT-TYPE
    SYNTAX     OCTET STRING
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object represents any error conditions detected
        by the printer.  The error conditions are encoded as
        bits in an octet string, with the following
        definitions:

             Condition         Bit #

             lowPaper              0

             noPaper               1
             lowToner              2
             noToner               3
             doorOpen              4
             jammed                5
             offline               6
             serviceRequested      7
             inputTrayMissing      8
             outputTrayMissing     9
             markerSupplyMissing  10
             outputNearFull       11
             outputFull           12
             inputTrayEmpty       13
             overduePreventMaint  14

        Bits are numbered starting with the most significant
        bit of the first byte being bit 0, the least
        significant bit of the first byte being bit 7, the
        most significant bit of the second byte being bit 8,
        and so on.  A one bit encodes that the condition was
        detected, while a zero bit encodes that the condition
        was not detected.

        This object is useful for alerting an operator to
        specific warning or error conditions that may occur,
        especially those requiring human intervention."
    ::= { hrPrinterEntry 2 }

hrDiskStorageTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrDiskStorageEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of long-term storage devices
        contained by the host.  In particular, disk devices
        accessed remotely over a network are not included
        here.

        Note that this table is potentially sparse: a
        (conceptual) entry exists only if the correspondent
        value of the hrDeviceType object is
        `hrDeviceDiskStorage'."
    ::= { hrDevice 6 }

hrDiskStorageEntry OBJECT-TYPE
    SYNTAX     HrDiskStorageEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one long-term storage device
        contained by the host.  The hrDeviceIndex in the index
        represents the entry in the hrDeviceTable that
        corresponds to the hrDiskStorageEntry. As an example,
        an instance of the hrDiskStorageCapacity object might
        be named hrDiskStorageCapacity.3"
    INDEX { hrDeviceIndex }
    ::= { hrDiskStorageTable 1 }

HrDiskStorageEntry ::= SEQUENCE {
        hrDiskStorageAccess         INTEGER,
        hrDiskStorageMedia          INTEGER,
        hrDiskStorageRemoveble      TruthValue,
        hrDiskStorageCapacity       KBytes
    }

hrDiskStorageAccess OBJECT-TYPE
    SYNTAX     INTEGER {
                   readWrite(1),
                   readOnly(2)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An indication if this long-term storage device is
        readable and writable or only readable.  This should
        reflect the media type, any write-protect mechanism,
        and any device configuration that affects the entire
        device."
    ::= { hrDiskStorageEntry 1 }

hrDiskStorageMedia OBJECT-TYPE
    SYNTAX     INTEGER {
                   other(1),
                   unknown(2),
                   hardDisk(3),
                   floppyDisk(4),
                   opticalDiskROM(5),
                   opticalDiskWORM(6),     -- Write Once Read Many
                   opticalDiskRW(7),
                   ramDisk(8)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An indication of the type of media used in this long-
        term storage device."
    ::= { hrDiskStorageEntry 2 }

hrDiskStorageRemoveble OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Denotes whether or not the disk media may be removed
        from the drive."
    ::= { hrDiskStorageEntry 3 }

hrDiskStorageCapacity OBJECT-TYPE
    SYNTAX     KBytes
    UNITS      "KBytes"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total size for this long-term storage device. If
        the media is removable and is currently removed, this
        value should be zero."
    ::= { hrDiskStorageEntry 4 }

hrPartitionTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrPartitionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of partitions for long-term
        storage devices contained by the host.  In particular,
        partitions accessed remotely over a network are not
        included here."
    ::= { hrDevice 7 }

hrPartitionEntry OBJECT-TYPE
    SYNTAX     HrPartitionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one partition.  The
        hrDeviceIndex in the index represents the entry in the
        hrDeviceTable that corresponds to the
        hrPartitionEntry.

        As an example of how objects in this table are named,
        an instance of the hrPartitionSize object might be
        named hrPartitionSize.3.1"
    INDEX { hrDeviceIndex, hrPartitionIndex }
    ::= { hrPartitionTable 1 }

HrPartitionEntry ::= SEQUENCE {
        hrPartitionIndex                Integer32,
        hrPartitionLabel                InternationalDisplayString,
        hrPartitionID                   OCTET STRING,
        hrPartitionSize                 KBytes,
        hrPartitionFSIndex              Integer32
    }

hrPartitionIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each partition on this long-term
        storage device.  The value for each long-term storage
        device must remain constant at least from one re-
        initialization of the agent to the next re-
        initialization."
    ::= { hrPartitionEntry 1 }

hrPartitionLabel OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE (0..128))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A textual description of this partition."
    ::= { hrPartitionEntry 2 }

hrPartitionID OBJECT-TYPE
    SYNTAX     OCTET STRING
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A descriptor which uniquely represents this partition
        to the responsible operating system.  On some systems,
        this might take on a binary representation."
    ::= { hrPartitionEntry 3 }

hrPartitionSize OBJECT-TYPE
    SYNTAX     KBytes
    UNITS      "KBytes"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The size of this partition."
    ::= { hrPartitionEntry 4 }

hrPartitionFSIndex OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The index of the file system mounted on this
        partition.  If no file system is mounted on this
        partition, then this value shall be zero.  Note that
        multiple partitions may point to one file system,
        denoting that that file system resides on those
        partitions.  Multiple file systems may not reside on
        one partition."
    ::= { hrPartitionEntry 5 }

-- The File System Table

-- Registration point for popular File System types,
-- for use with hrFSType. These are defined in the
-- HOST-RESOURCES-TYPES module.
hrFSTypes               OBJECT IDENTIFIER ::= { hrDevice 9 }

hrFSTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrFSEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of file systems local to this
        host or remotely mounted from a file server.  File
        systems that are in only one user's environment on a
        multi-user system will not be included in this table."
    ::= { hrDevice 8 }

hrFSEntry OBJECT-TYPE
    SYNTAX     HrFSEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one file system local to
        this host or remotely mounted from a file server.
        File systems that are in only one user's environment
        on a multi-user system will not be included in this
        table.

        As an example of how objects in this table are named,
        an instance of the hrFSMountPoint object might be
        named hrFSMountPoint.3"
    INDEX { hrFSIndex }
    ::= { hrFSTable 1 }

HrFSEntry ::= SEQUENCE {
        hrFSIndex                   Integer32,
        hrFSMountPoint              InternationalDisplayString,
        hrFSRemoteMountPoint        InternationalDisplayString,
        hrFSType                    AutonomousType,
        hrFSAccess                  INTEGER,
        hrFSBootable                TruthValue,
        hrFSStorageIndex            Integer32,
        hrFSLastFullBackupDate      DateAndTime,
        hrFSLastPartialBackupDate   DateAndTime
    }

hrFSIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each file system local to this
        host.  The value for each file system must remain
        constant at least from one re-initialization of the
        agent to the next re-initialization."
    ::= { hrFSEntry 1 }

hrFSMountPoint OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE(0..128))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The path name of the root of this file system."
    ::= { hrFSEntry 2 }

hrFSRemoteMountPoint OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE(0..128))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A description of the name and/or address of the
        server that this file system is mounted from.  This
        may also include parameters such as the mount point on
        the remote file system.  If this is not a remote file
        system, this string should have a length of zero."
    ::= { hrFSEntry 3 }

hrFSType OBJECT-TYPE
    SYNTAX     AutonomousType
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of this object identifies the type of this
        file system."
    ::= { hrFSEntry 4 }

hrFSAccess OBJECT-TYPE
    SYNTAX     INTEGER {
                   readWrite(1),
                   readOnly(2)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An indication if this file system is logically
        configured by the operating system to be readable and
        writable or only readable.  This does not represent
        any local access-control policy, except one that is
        applied to the file system as a whole."
    ::= { hrFSEntry 5 }

hrFSBootable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A flag indicating whether this file system is
        bootable."
    ::= { hrFSEntry 6 }

hrFSStorageIndex OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The index of the hrStorageEntry that represents
        information about this file system.  If there is no
        such information available, then this value shall be
        zero.  The relevant storage entry will be useful in
        tracking the percent usage of this file system and
        diagnosing errors that may occur when it runs out of
        space."
    ::= { hrFSEntry 7 }

hrFSLastFullBackupDate OBJECT-TYPE
    SYNTAX     DateAndTime
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The last date at which this complete file system was

        copied to another storage device for backup.  This
        information is useful for ensuring that backups are
        being performed regularly.

        If this information is not known, then this variable
        shall have the value corresponding to January 1, year
        0000, 00:00:00.0, which is encoded as
        (hex)'00 00 01 01 00 00 00 00'."
    ::= { hrFSEntry 8 }

hrFSLastPartialBackupDate OBJECT-TYPE
    SYNTAX     DateAndTime
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The last date at which a portion of this file system
        was copied to another storage device for backup.  This
        information is useful for ensuring that backups are
        being performed regularly.

        If this information is not known, then this variable
        shall have the value corresponding to January 1, year
        0000, 00:00:00.0, which is encoded as
        (hex)'00 00 01 01 00 00 00 00'."
    ::= { hrFSEntry 9 }

-- The Host Resources Running Software Group
--
-- The hrSWRunTable contains an entry for each distinct piece of
-- software that is running or loaded into physical or virtual
-- memory in preparation for running.  This includes the host's
-- operating system, device drivers, and applications.

hrSWOSIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of the hrSWRunIndex for the hrSWRunEntry
        that represents the primary operating system running
        on this host.  This object is useful for quickly and
        uniquely identifying that primary operating system."
    ::= { hrSWRun 1 }

hrSWRunTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrSWRunEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of software running on the
        host."
    ::= { hrSWRun 2 }

hrSWRunEntry OBJECT-TYPE
    SYNTAX     HrSWRunEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for one piece of software
        running on the host Note that because the installed
        software table only contains information for software
        stored locally on this host, not every piece of
        running software will be found in the installed
        software table.  This is true of software that was
        loaded and run from a non-local source, such as a
        network-mounted file system.

        As an example of how objects in this table are named,
        an instance of the hrSWRunName object might be named
        hrSWRunName.1287"
    INDEX { hrSWRunIndex }
    ::= { hrSWRunTable 1 }

HrSWRunEntry ::= SEQUENCE {
        hrSWRunIndex       Integer32,
        hrSWRunName        InternationalDisplayString,
        hrSWRunID          ProductID,
        hrSWRunPath        InternationalDisplayString,
        hrSWRunParameters  InternationalDisplayString,
        hrSWRunType        INTEGER,
        hrSWRunStatus      INTEGER
    }

hrSWRunIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each piece of software running on
        the host.  Wherever possible, this should be the
        system's native, unique identification number."
    ::= { hrSWRunEntry 1 }

hrSWRunName OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE (0..64))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A textual description of this running piece of
        software, including the manufacturer, revision,  and
        the name by which it is commonly known.  If this
        software was installed locally, this should be the
        same string as used in the corresponding
        hrSWInstalledName."
    ::= { hrSWRunEntry 2 }

hrSWRunID OBJECT-TYPE
    SYNTAX     ProductID
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The product ID of this running piece of software."
    ::= { hrSWRunEntry 3 }

hrSWRunPath OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE(0..128))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A description of the location on long-term storage
        (e.g. a disk drive) from which this software was
        loaded."
    ::= { hrSWRunEntry 4 }

hrSWRunParameters OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE(0..128))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A description of the parameters supplied to this
        software when it was initially loaded."
    ::= { hrSWRunEntry 5 }

hrSWRunType OBJECT-TYPE
    SYNTAX     INTEGER {
                   unknown(1),
                   operatingSystem(2),
                   deviceDriver(3),
                   application(4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The type of this software."
    ::= { hrSWRunEntry 6 }

hrSWRunStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                   running(1),
                   runnable(2),    -- waiting for resource
                                   -- (i.e., CPU, memory, IO)
                   notRunnable(3), -- loaded but waiting for event
                   invalid(4)      -- not loaded
               }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The status of this running piece of software.
        Setting this value to invalid(4) shall cause this
        software to stop running and to be unloaded. Sets to
        other values are not valid."
    ::= { hrSWRunEntry 7 }

-- The Host Resources Running Software Performance Group
--
-- The hrSWRunPerfTable contains an entry corresponding to
-- each entry in the hrSWRunTable.

hrSWRunPerfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrSWRunPerfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of running software
        performance metrics."
    ::= { hrSWRunPerf 1 }

hrSWRunPerfEntry OBJECT-TYPE
    SYNTAX     HrSWRunPerfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry containing software performance
        metrics.  As an example, an instance of the
        hrSWRunPerfCPU object might be named
        hrSWRunPerfCPU.1287"
    AUGMENTS { hrSWRunEntry }  -- This table augments information in
                               -- the hrSWRunTable.
    ::= { hrSWRunPerfTable 1 }

HrSWRunPerfEntry ::= SEQUENCE {
        hrSWRunPerfCPU          Integer32,
        hrSWRunPerfMem          KBytes
}

hrSWRunPerfCPU OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of centi-seconds of the total system's CPU
        resources consumed by this process.  Note that on a
        multi-processor system, this value may increment by
        more than one centi-second in one centi-second of real
        (wall clock) time."
    ::= { hrSWRunPerfEntry 1 }

hrSWRunPerfMem OBJECT-TYPE
    SYNTAX     KBytes
    UNITS      "KBytes"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total amount of real system memory allocated to
        this process."
    ::= { hrSWRunPerfEntry 2 }

-- The Host Resources Installed Software Group
--
-- The hrSWInstalledTable contains an entry for each piece
-- of software installed in long-term storage (e.g. a disk
-- drive) locally on this host.  Note that this does not
-- include software loadable remotely from a network
-- server.
--
-- Different implementations may track software in varying
-- ways. For example, while some implementations may track
-- executable files as distinct pieces of software, other
-- implementations may use other strategies such as keeping
-- track of software "packages" (e.g., related groups of files)
-- or keeping track of system or application "patches".
--
-- This table is useful for identifying and inventorying
-- software on a host and for diagnosing incompatibility
-- and version mismatch problems between various pieces
-- of hardware and software.

hrSWInstalledLastChange OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when an entry in the
        hrSWInstalledTable was last added, renamed, or
        deleted.  Because this table is likely to contain many
        entries, polling of this object allows a management
        station to determine when re-downloading of the table
        might be useful."
    ::= { hrSWInstalled 1 }

hrSWInstalledLastUpdateTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when the hrSWInstalledTable
        was last completely updated.  Because caching of this
        data will be a popular implementation strategy,
        retrieval of this object allows a management station
        to obtain a guarantee that no data in this table is
        older than the indicated time."
    ::= { hrSWInstalled 2 }

hrSWInstalledTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF HrSWInstalledEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table of software installed on this
        host."
    ::= { hrSWInstalled 3 }

hrSWInstalledEntry OBJECT-TYPE
    SYNTAX     HrSWInstalledEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A (conceptual) entry for a piece of software
        installed on this host.

        As an example of how objects in this table are named,
        an instance of the hrSWInstalledName object might be
        named hrSWInstalledName.96"
    INDEX { hrSWInstalledIndex }
    ::= { hrSWInstalledTable 1 }

HrSWInstalledEntry ::= SEQUENCE {
        hrSWInstalledIndex       Integer32,
        hrSWInstalledName        InternationalDisplayString,
        hrSWInstalledID          ProductID,
        hrSWInstalledType        INTEGER,
        hrSWInstalledDate        DateAndTime
}

hrSWInstalledIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A unique value for each piece of software installed
        on the host.  This value shall be in the range from 1
        to the number of pieces of software installed on the
        host."
    ::= { hrSWInstalledEntry 1 }

hrSWInstalledName OBJECT-TYPE
    SYNTAX     InternationalDisplayString (SIZE (0..64))
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A textual description of this installed piece of
        software, including the manufacturer, revision, the
        name by which it is commonly known, and optionally,
        its serial number."
    ::= { hrSWInstalledEntry 2 }

hrSWInstalledID OBJECT-TYPE
    SYNTAX     ProductID
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The product ID of this installed piece of software."
    ::= { hrSWInstalledEntry 3 }

hrSWInstalledType OBJECT-TYPE
    SYNTAX     INTEGER {
                   unknown(1),
                   operatingSystem(2),
                   deviceDriver(3),
                   application(4)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The type of this software."
    ::= { hrSWInstalledEntry 4 }

hrSWInstalledDate OBJECT-TYPE
    SYNTAX     DateAndTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The last-modification date of this application as it
        would appear in a directory listing.

        If this information is not known, then this variable
        shall have the value corresponding to January 1, year
        0000, 00:00:00.0, which is encoded as
        (hex)'00 00 01 01 00 00 00 00'."
    ::= { hrSWInstalledEntry 5 }

-- Conformance information

hrMIBCompliances OBJECT IDENTIFIER ::= { hrMIBAdminInfo 2 }
hrMIBGroups      OBJECT IDENTIFIER ::= { hrMIBAdminInfo 3 }

-- Compliance Statements
hrMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The requirements for conformance to the Host Resources MIB."
    MODULE -- this module
      MANDATORY-GROUPS { hrSystemGroup, hrStorageGroup,
                         hrDeviceGroup }

      OBJECT hrSystemDate
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      OBJECT hrSystemInitialLoadDevice
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      OBJECT hrSystemInitialLoadParameters
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      OBJECT hrStorageSize
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      OBJECT hrFSLastFullBackupDate
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      OBJECT hrFSLastPartialBackupDate
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      GROUP hrSWRunGroup
          DESCRIPTION
              "The Running Software Group. Implementation
              of this group is mandatory only when the
              hrSWRunPerfGroup is implemented."

      OBJECT hrSWRunStatus
          MIN-ACCESS read-only
          DESCRIPTION
              "Write access is not required."

      GROUP hrSWRunPerfGroup
          DESCRIPTION
              "The Running Software Performance Group.
              Implementation of this group is at the discretion
              of the implementor."

      GROUP hrSWInstalledGroup
          DESCRIPTION
              "The Installed Software Group.
              Implementation of this group is at the discretion
              of the implementor."
    ::= { hrMIBCompliances 1 }

    hrSystemGroup OBJECT-GROUP
        OBJECTS {
            hrSystemUptime, hrSystemDate,
            hrSystemInitialLoadDevice,
            hrSystemInitialLoadParameters,
            hrSystemNumUsers, hrSystemProcesses,
            hrSystemMaxProcesses
        }
        STATUS current
        DESCRIPTION
            "The Host Resources System Group."
        ::= { hrMIBGroups 1 }

    hrStorageGroup OBJECT-GROUP
        OBJECTS {
            hrMemorySize, hrStorageIndex, hrStorageType,
            hrStorageDescr, hrStorageAllocationUnits,
            hrStorageSize, hrStorageUsed,
            hrStorageAllocationFailures
        }
        STATUS current
        DESCRIPTION
            "The Host Resources Storage Group."
        ::= { hrMIBGroups 2 }

    hrDeviceGroup OBJECT-GROUP
        OBJECTS {
            hrDeviceIndex, hrDeviceType, hrDeviceDescr,
            hrDeviceID, hrDeviceStatus, hrDeviceErrors,
            hrProcessorFrwID, hrProcessorLoad,
            hrNetworkIfIndex, hrPrinterStatus,
            hrPrinterDetectedErrorState,
            hrDiskStorageAccess, hrDiskStorageMedia,
            hrDiskStorageRemoveble, hrDiskStorageCapacity,
            hrPartitionIndex, hrPartitionLabel,
            hrPartitionID, hrPartitionSize,
            hrPartitionFSIndex, hrFSIndex, hrFSMountPoint,
            hrFSRemoteMountPoint, hrFSType, hrFSAccess,
            hrFSBootable, hrFSStorageIndex,
            hrFSLastFullBackupDate,
            hrFSLastPartialBackupDate
        }
        STATUS current
        DESCRIPTION
            "The Host Resources Device Group."
        ::= { hrMIBGroups 3 }

    hrSWRunGroup OBJECT-GROUP
        OBJECTS {
            hrSWOSIndex, hrSWRunIndex, hrSWRunName,
            hrSWRunID, hrSWRunPath, hrSWRunParameters,
            hrSWRunType, hrSWRunStatus
        }
        STATUS current
        DESCRIPTION
            "The Host Resources Running Software Group."
        ::= { hrMIBGroups 4 }

    hrSWRunPerfGroup OBJECT-GROUP
        OBJECTS { hrSWRunPerfCPU, hrSWRunPerfMem }
        STATUS current
        DESCRIPTION
            "The Host Resources Running Software
            Performance Group."
        ::= { hrMIBGroups 5 }

    hrSWInstalledGroup OBJECT-GROUP
        OBJECTS {
            hrSWInstalledLastChange,
            hrSWInstalledLastUpdateTime,
            hrSWInstalledIndex, hrSWInstalledName,
            hrSWInstalledID, hrSWInstalledType,
            hrSWInstalledDate
        }
        STATUS current
        DESCRIPTION
            "The Host Resources Installed Software Group."
        ::= { hrMIBGroups 6 }

END
share/snmp/mibs/TCP-MIB.txt000064400000067624150553041230011366 0ustar00TCP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32,
    Gauge32, Counter32, Counter64, IpAddress, mib-2
                                       FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
    InetAddress, InetAddressType,
    InetPortNumber                     FROM INET-ADDRESS-MIB;

tcpMIB MODULE-IDENTITY
    LAST-UPDATED "200502180000Z"  -- 18 February 2005
    ORGANIZATION
           "IETF IPv6 MIB Revision Team
            http://www.ietf.org/html.charters/ipv6-charter.html"
    CONTACT-INFO
           "Rajiv Raghunarayan (editor)

            Cisco Systems Inc.
            170 West Tasman Drive
            San Jose, CA 95134

            Phone: +1 408 853 9612
            Email: <raraghun@cisco.com>

            Send comments to <ipv6@ietf.org>"
    DESCRIPTION
           "The MIB module for managing TCP implementations.

            Copyright (C) The Internet Society (2005). This version
            of this MIB module is a part of RFC 4022; see the RFC
            itself for full legal notices."
    REVISION      "200502180000Z"  -- 18 February 2005
    DESCRIPTION
           "IP version neutral revision, published as RFC 4022."
    REVISION      "9411010000Z"
    DESCRIPTION
           "Initial SMIv2 version, published as RFC 2012."
    REVISION      "9103310000Z"
    DESCRIPTION
           "The initial revision of this MIB module was part of
            MIB-II."
    ::= { mib-2 49 }

-- the TCP base variables group

tcp      OBJECT IDENTIFIER ::= { mib-2 6 }

-- Scalars

tcpRtoAlgorithm OBJECT-TYPE
    SYNTAX      INTEGER {
                    other(1),    -- none of the following
                    constant(2), -- a constant rto
                    rsre(3),     -- MIL-STD-1778, Appendix B
                    vanj(4),     -- Van Jacobson's algorithm
                    rfc2988(5)   -- RFC 2988
                }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The algorithm used to determine the timeout value used for
            retransmitting unacknowledged octets."
    ::= { tcp 1 }

tcpRtoMin OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "milliseconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The minimum value permitted by a TCP implementation for
            the retransmission timeout, measured in milliseconds.
            More refined semantics for objects of this type depend
            on the algorithm used to determine the retransmission
            timeout; in particular, the IETF standard algorithm
            rfc2988(5) provides a minimum value."
    ::= { tcp 2 }

tcpRtoMax OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "milliseconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The maximum value permitted by a TCP implementation for
            the retransmission timeout, measured in milliseconds.
            More refined semantics for objects of this type depend
            on the algorithm used to determine the retransmission
            timeout; in particular, the IETF standard algorithm
            rfc2988(5) provides an upper bound (as part of an
            adaptive backoff algorithm)."
    ::= { tcp 3 }

tcpMaxConn OBJECT-TYPE
    SYNTAX     Integer32 (-1 | 0..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The limit on the total number of TCP connections the entity
            can support.  In entities where the maximum number of
            connections is dynamic, this object should contain the
            value -1."
    ::= { tcp 4 }

tcpActiveOpens OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of times that TCP connections have made a direct
            transition to the SYN-SENT state from the CLOSED state.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 5 }

tcpPassiveOpens OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of times TCP connections have made a direct
            transition to the SYN-RCVD state from the LISTEN state.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 6 }

tcpAttemptFails OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of times that TCP connections have made a direct
            transition to the CLOSED state from either the SYN-SENT
            state or the SYN-RCVD state, plus the number of times that
            TCP connections have made a direct transition to the
            LISTEN state from the SYN-RCVD state.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 7 }

tcpEstabResets OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of times that TCP connections have made a direct
            transition to the CLOSED state from either the ESTABLISHED
            state or the CLOSE-WAIT state.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 8 }

tcpCurrEstab OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of TCP connections for which the current state
            is either ESTABLISHED or CLOSE-WAIT."
    ::= { tcp 9 }

tcpInSegs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments received, including those
            received in error.  This count includes segments received
            on currently established connections.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 10 }

tcpOutSegs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments sent, including those on
            current connections but excluding those containing only
            retransmitted octets.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 11 }

tcpRetransSegs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments retransmitted; that is, the
            number of TCP segments transmitted containing one or more
            previously transmitted octets.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 12 }

tcpInErrs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments received in error (e.g., bad
            TCP checksums).

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 14 }

tcpOutRsts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The number of TCP segments sent containing the RST flag.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 15 }

-- { tcp 16 } was used to represent the ipv6TcpConnTable in RFC 2452,
-- which has since been obsoleted.  It MUST not be used.

tcpHCInSegs OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments received, including those
            received in error.  This count includes segments received

            on currently established connections.  This object is
            the 64-bit equivalent of tcpInSegs.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 17 }

tcpHCOutSegs OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The total number of segments sent, including those on
            current connections but excluding those containing only
            retransmitted octets.  This object is the 64-bit
            equivalent of tcpOutSegs.

            Discontinuities in the value of this counter are
            indicated via discontinuities in the value of sysUpTime."
    ::= { tcp 18 }

-- The TCP Connection table

tcpConnectionTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF TcpConnectionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "A table containing information about existing TCP
            connections.  Note that unlike earlier TCP MIBs, there
            is a separate table for connections in the LISTEN state."
    ::= { tcp 19 }

tcpConnectionEntry OBJECT-TYPE
    SYNTAX     TcpConnectionEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "A conceptual row of the tcpConnectionTable containing
            information about a particular current TCP connection.
            Each row of this table is transient in that it ceases to
            exist when (or soon after) the connection makes the
            transition to the CLOSED state."
    INDEX   { tcpConnectionLocalAddressType,
              tcpConnectionLocalAddress,
              tcpConnectionLocalPort,
              tcpConnectionRemAddressType,
              tcpConnectionRemAddress,
              tcpConnectionRemPort }
    ::= { tcpConnectionTable 1 }

TcpConnectionEntry ::= SEQUENCE {
        tcpConnectionLocalAddressType   InetAddressType,
        tcpConnectionLocalAddress       InetAddress,
        tcpConnectionLocalPort          InetPortNumber,
        tcpConnectionRemAddressType     InetAddressType,
        tcpConnectionRemAddress         InetAddress,
        tcpConnectionRemPort            InetPortNumber,
        tcpConnectionState              INTEGER,
        tcpConnectionProcess            Unsigned32
    }

tcpConnectionLocalAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The address type of tcpConnectionLocalAddress."
    ::= { tcpConnectionEntry 1 }

tcpConnectionLocalAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The local IP address for this TCP connection.  The type
            of this address is determined by the value of
            tcpConnectionLocalAddressType.

            As this object is used in the index for the
            tcpConnectionTable, implementors should be
            careful not to create entries that would result in OIDs
            with more than 128 subidentifiers; otherwise the information
            cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
    ::= { tcpConnectionEntry 2 }

tcpConnectionLocalPort OBJECT-TYPE
    SYNTAX     InetPortNumber
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The local port number for this TCP connection."
    ::= { tcpConnectionEntry 3 }

tcpConnectionRemAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The address type of tcpConnectionRemAddress."
    ::= { tcpConnectionEntry 4 }

tcpConnectionRemAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The remote IP address for this TCP connection.  The type
            of this address is determined by the value of
            tcpConnectionRemAddressType.

            As this object is used in the index for the
            tcpConnectionTable, implementors should be
            careful not to create entries that would result in OIDs
            with more than 128 subidentifiers; otherwise the information
            cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
    ::= { tcpConnectionEntry 5 }

tcpConnectionRemPort OBJECT-TYPE
    SYNTAX     InetPortNumber
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The remote port number for this TCP connection."
    ::= { tcpConnectionEntry 6 }

tcpConnectionState OBJECT-TYPE
    SYNTAX     INTEGER {
                    closed(1),
                    listen(2),
                    synSent(3),
                    synReceived(4),
                    established(5),
                    finWait1(6),
                    finWait2(7),
                    closeWait(8),
                    lastAck(9),
                    closing(10),
                    timeWait(11),
                    deleteTCB(12)
                }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The state of this TCP connection.

            The value listen(2) is included only for parallelism to the
            old tcpConnTable and should not be used.  A connection in
            LISTEN state should be present in the tcpListenerTable.

            The only value that may be set by a management station is
            deleteTCB(12).  Accordingly, it is appropriate for an agent
            to return a `badValue' response if a management station
            attempts to set this object to any other value.

            If a management station sets this object to the value
            deleteTCB(12), then the TCB (as defined in [RFC793]) of
            the corresponding connection on the managed node is
            deleted, resulting in immediate termination of the
            connection.

            As an implementation-specific option, a RST segment may be
            sent from the managed node to the other TCP endpoint (note,
            however, that RST segments are not sent reliably)."
    ::= { tcpConnectionEntry 7 }

tcpConnectionProcess OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The system's process ID for the process associated with
            this connection, or zero if there is no such process.  This
            value is expected to be the same as HOST-RESOURCES-MIB::
            hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
            row in the appropriate tables."
    ::= { tcpConnectionEntry 8 }

-- The TCP Listener table

tcpListenerTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF TcpListenerEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "A table containing information about TCP listeners.  A
            listening application can be represented in three
            possible ways:

            1. An application that is willing to accept both IPv4 and
               IPv6 datagrams is represented by

               a tcpListenerLocalAddressType of unknown (0) and
               a tcpListenerLocalAddress of ''h (a zero-length
               octet-string).

            2. An application that is willing to accept only IPv4 or
               IPv6 datagrams is represented by a
               tcpListenerLocalAddressType of the appropriate address
               type and a tcpListenerLocalAddress of '0.0.0.0' or '::'
               respectively.

            3. An application that is listening for data destined
               only to a specific IP address, but from any remote
               system, is represented by a tcpListenerLocalAddressType
               of an appropriate address type, with
               tcpListenerLocalAddress as the specific local address.

            NOTE: The address type in this table represents the
            address type used for the communication, irrespective
            of the higher-layer abstraction.  For example, an
            application using IPv6 'sockets' to communicate via
            IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would
            use InetAddressType ipv4(1))."
    ::= { tcp 20 }

tcpListenerEntry OBJECT-TYPE
    SYNTAX     TcpListenerEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "A conceptual row of the tcpListenerTable containing
            information about a particular TCP listener."
    INDEX   { tcpListenerLocalAddressType,
              tcpListenerLocalAddress,
              tcpListenerLocalPort }
    ::= { tcpListenerTable 1 }

TcpListenerEntry ::= SEQUENCE {
        tcpListenerLocalAddressType       InetAddressType,
        tcpListenerLocalAddress           InetAddress,
        tcpListenerLocalPort              InetPortNumber,
        tcpListenerProcess                Unsigned32
    }

tcpListenerLocalAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The address type of tcpListenerLocalAddress.  The value
            should be unknown (0) if connection initiations to all
            local IP addresses are accepted."
    ::= { tcpListenerEntry 1 }

tcpListenerLocalAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The local IP address for this TCP connection.

            The value of this object can be represented in three
            possible ways, depending on the characteristics of the
            listening application:

            1. For an application willing to accept both IPv4 and
               IPv6 datagrams, the value of this object must be
               ''h (a zero-length octet-string), with the value
               of the corresponding tcpListenerLocalAddressType
               object being unknown (0).

            2. For an application willing to accept only IPv4 or
               IPv6 datagrams, the value of this object must be
               '0.0.0.0' or '::' respectively, with
               tcpListenerLocalAddressType representing the
               appropriate address type.

            3. For an application which is listening for data
               destined only to a specific IP address, the value
               of this object is the specific local address, with
               tcpListenerLocalAddressType representing the
               appropriate address type.

            As this object is used in the index for the
            tcpListenerTable, implementors should be
            careful not to create entries that would result in OIDs
            with more than 128 subidentifiers; otherwise the information
            cannot be accessed, using SNMPv1, SNMPv2c, or SNMPv3."
    ::= { tcpListenerEntry 2 }

tcpListenerLocalPort OBJECT-TYPE
    SYNTAX     InetPortNumber
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The local port number for this TCP connection."
    ::= { tcpListenerEntry 3 }

tcpListenerProcess OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The system's process ID for the process associated with
            this listener, or zero if there is no such process.  This
            value is expected to be the same as HOST-RESOURCES-MIB::
            hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
            row in the appropriate tables."
    ::= { tcpListenerEntry 4 }

-- The deprecated TCP Connection table

tcpConnTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF TcpConnEntry
    MAX-ACCESS not-accessible
    STATUS     deprecated
    DESCRIPTION
           "A table containing information about existing IPv4-specific
            TCP connections or listeners.  This table has been
            deprecated in favor of the version neutral
            tcpConnectionTable."
    ::= { tcp 13 }

tcpConnEntry OBJECT-TYPE
    SYNTAX     TcpConnEntry
    MAX-ACCESS not-accessible
    STATUS     deprecated
    DESCRIPTION
           "A conceptual row of the tcpConnTable containing information
            about a particular current IPv4 TCP connection.  Each row
            of this table is transient in that it ceases to exist when
            (or soon after) the connection makes the transition to the
            CLOSED state."
    INDEX   { tcpConnLocalAddress,
              tcpConnLocalPort,
              tcpConnRemAddress,
              tcpConnRemPort }
    ::= { tcpConnTable 1 }

TcpConnEntry ::= SEQUENCE {
        tcpConnState         INTEGER,
        tcpConnLocalAddress  IpAddress,
        tcpConnLocalPort     Integer32,
        tcpConnRemAddress    IpAddress,
        tcpConnRemPort       Integer32

    }

tcpConnState OBJECT-TYPE
    SYNTAX     INTEGER {
                    closed(1),
                    listen(2),
                    synSent(3),
                    synReceived(4),
                    established(5),
                    finWait1(6),
                    finWait2(7),
                    closeWait(8),
                    lastAck(9),
                    closing(10),
                    timeWait(11),
                    deleteTCB(12)
                }
    MAX-ACCESS read-write
    STATUS     deprecated
    DESCRIPTION
           "The state of this TCP connection.

            The only value that may be set by a management station is
            deleteTCB(12).  Accordingly, it is appropriate for an agent
            to return a `badValue' response if a management station
            attempts to set this object to any other value.

            If a management station sets this object to the value
            deleteTCB(12), then the TCB (as defined in [RFC793]) of
            the corresponding connection on the managed node is
            deleted, resulting in immediate termination of the
            connection.

            As an implementation-specific option, a RST segment may be
            sent from the managed node to the other TCP endpoint (note,
            however, that RST segments are not sent reliably)."
    ::= { tcpConnEntry 1 }

tcpConnLocalAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
           "The local IP address for this TCP connection.  In the case
            of a connection in the listen state willing to
            accept connections for any IP interface associated with the
            node, the value 0.0.0.0 is used."
    ::= { tcpConnEntry 2 }

tcpConnLocalPort OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
           "The local port number for this TCP connection."
    ::= { tcpConnEntry 3 }

tcpConnRemAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
           "The remote IP address for this TCP connection."
    ::= { tcpConnEntry 4 }

tcpConnRemPort OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
           "The remote port number for this TCP connection."
    ::= { tcpConnEntry 5 }

-- conformance information

tcpMIBConformance OBJECT IDENTIFIER ::= { tcpMIB 2 }

tcpMIBCompliances OBJECT IDENTIFIER ::= { tcpMIBConformance 1 }
tcpMIBGroups      OBJECT IDENTIFIER ::= { tcpMIBConformance 2 }

-- compliance statements

tcpMIBCompliance2 MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
           "The compliance statement for systems that implement TCP.

            A number of INDEX objects cannot be
            represented in the form of OBJECT clauses in SMIv2 but
            have the following compliance requirements,
            expressed in OBJECT clause form in this description
            clause:

            -- OBJECT      tcpConnectionLocalAddressType
            -- SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
            -- DESCRIPTION
            --     This MIB requires support for only global IPv4

            --     and IPv6 address types.
            --
            -- OBJECT      tcpConnectionRemAddressType
            -- SYNTAX      InetAddressType { ipv4(1), ipv6(2) }
            -- DESCRIPTION
            --     This MIB requires support for only global IPv4
            --     and IPv6 address types.
            --
            -- OBJECT      tcpListenerLocalAddressType
            -- SYNTAX      InetAddressType { unknown(0), ipv4(1),
            --                               ipv6(2) }
            -- DESCRIPTION
            --     This MIB requires support for only global IPv4
            --     and IPv6 address types.  The type unknown also
            --     needs to be supported to identify a special
            --     case in the listener table: a listen using
            --     both IPv4 and IPv6 addresses on the device.
            --
           "
    MODULE  -- this module
        MANDATORY-GROUPS { tcpBaseGroup, tcpConnectionGroup,
                           tcpListenerGroup }
        GROUP       tcpHCGroup
        DESCRIPTION
           "This group is mandatory for systems that are capable
            of receiving or transmitting more than 1 million TCP
            segments per second.  1 million segments per second will
            cause a Counter32 to wrap in just over an hour."
        OBJECT      tcpConnectionState
        SYNTAX      INTEGER { closed(1), listen(2), synSent(3),
                              synReceived(4), established(5),
                              finWait1(6), finWait2(7), closeWait(8),
                              lastAck(9), closing(10), timeWait(11) }
        MIN-ACCESS  read-only
        DESCRIPTION
           "Write access is not required, nor is support for the value
            deleteTCB (12)."
    ::= { tcpMIBCompliances 2 }

tcpMIBCompliance MODULE-COMPLIANCE
    STATUS     deprecated
    DESCRIPTION
           "The compliance statement for IPv4-only systems that
            implement TCP.  In order to be IP version independent, this
            compliance statement is deprecated in favor of
            tcpMIBCompliance2.  However, agents are still encouraged
            to implement these objects in order to interoperate with
            the deployed base of managers."

    MODULE  -- this module
        MANDATORY-GROUPS { tcpGroup }
        OBJECT      tcpConnState
        MIN-ACCESS  read-only
        DESCRIPTION
           "Write access is not required."
    ::= { tcpMIBCompliances 1 }

-- units of conformance

tcpGroup OBJECT-GROUP
    OBJECTS   { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
                tcpMaxConn, tcpActiveOpens,
                tcpPassiveOpens, tcpAttemptFails,
                tcpEstabResets, tcpCurrEstab, tcpInSegs,
                tcpOutSegs, tcpRetransSegs, tcpConnState,
                tcpConnLocalAddress, tcpConnLocalPort,
                tcpConnRemAddress, tcpConnRemPort,
                tcpInErrs, tcpOutRsts }
    STATUS     deprecated
    DESCRIPTION
           "The tcp group of objects providing for management of TCP
            entities."
    ::= { tcpMIBGroups 1 }

tcpBaseGroup OBJECT-GROUP
    OBJECTS   { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
                tcpMaxConn, tcpActiveOpens,
                tcpPassiveOpens, tcpAttemptFails,
                tcpEstabResets, tcpCurrEstab, tcpInSegs,
                tcpOutSegs, tcpRetransSegs,
                tcpInErrs, tcpOutRsts }
    STATUS     current
    DESCRIPTION
           "The group of counters common to TCP entities."
    ::= { tcpMIBGroups 2 }

tcpConnectionGroup OBJECT-GROUP
    OBJECTS    { tcpConnectionState, tcpConnectionProcess }
    STATUS     current
    DESCRIPTION
           "The group provides general information about TCP
            connections."
    ::= { tcpMIBGroups 3 }

tcpListenerGroup OBJECT-GROUP
    OBJECTS    { tcpListenerProcess }
    STATUS     current
    DESCRIPTION
           "This group has objects providing general information about
            TCP listeners."
    ::= { tcpMIBGroups 4 }

tcpHCGroup OBJECT-GROUP
    OBJECTS    { tcpHCInSegs, tcpHCOutSegs }
    STATUS     current
    DESCRIPTION
           "The group of objects providing for counters of high speed
            TCP implementations."
    ::= { tcpMIBGroups 5 }

END
share/snmp/mibs/DISMAN-EVENT-MIB.txt000064400000205010150553041240012552 0ustar00DISMAN-EVENT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Unsigned32,
    NOTIFICATION-TYPE, Counter32,
    Gauge32, mib-2, zeroDotZero         FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus,
    TruthValue                FROM SNMPv2-TC

    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP             FROM SNMPv2-CONF
    sysUpTime                 FROM SNMPv2-MIB
    SnmpTagValue              FROM SNMP-TARGET-MIB
    SnmpAdminString           FROM SNMP-FRAMEWORK-MIB;

dismanEventMIB MODULE-IDENTITY
    LAST-UPDATED "200010160000Z"            -- 16 October 2000
    ORGANIZATION "IETF Distributed Management Working Group"
    CONTACT-INFO "Ramanathan Kavasseri
                  Cisco Systems, Inc.
                  170 West Tasman Drive,
                  San Jose CA 95134-1706.
                  Phone: +1 408 526 4527
                  Email: ramk@cisco.com"
    DESCRIPTION
     "The MIB module for defining event triggers and actions
     for network management purposes."
-- Revision History

       REVISION     "200010160000Z"            -- 16 October 2000
       DESCRIPTION  "This is the initial version of this MIB.
                    Published as RFC 2981"
    ::= { mib-2 88 }

dismanEventMIBObjects OBJECT IDENTIFIER ::= { dismanEventMIB 1 }

-- Management Triggered Event (MTE) objects

mteResource           OBJECT IDENTIFIER ::= { dismanEventMIBObjects 1 }
mteTrigger            OBJECT IDENTIFIER ::= { dismanEventMIBObjects 2 }
mteObjects            OBJECT IDENTIFIER ::= { dismanEventMIBObjects 3 }
mteEvent              OBJECT IDENTIFIER ::= { dismanEventMIBObjects 4 }

--
-- Textual Conventions
--

FailureReason ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Reasons for failures in an attempt to perform a management
        request.

        The first group of errors, numbered less than 0, are related
        to problems in sending the request.  The existence of a
        particular error code here does not imply that all
        implementations are capable of sensing that error and

        returning that code.

        The second group, numbered greater than 0, are copied
        directly from SNMP protocol operations and are intended to
        carry exactly the meanings defined for the protocol as returned
        in an SNMP response.

        localResourceLack       some local resource such as memory
                                lacking or
                                mteResourceSampleInstanceMaximum
                                exceeded
        badDestination          unrecognized domain name or otherwise
                                invalid destination address
        destinationUnreachable  can't get to destination address
        noResponse              no response to SNMP request
        badType                 the data syntax of a retrieved object
                                as not as expected
        sampleOverrun           another sample attempt occurred before
                                the previous one completed"
    SYNTAX      INTEGER { localResourceLack(-1),
                          badDestination(-2),
                          destinationUnreachable(-3),
                          noResponse(-4),
                          badType(-5),
                          sampleOverrun(-6),
                          noError(0),
                          tooBig(1),
                          noSuchName(2),
                          badValue(3),
                          readOnly(4),
                          genErr(5),
                          noAccess(6),
                          wrongType(7),
                          wrongLength(8),
                          wrongEncoding(9),
                          wrongValue(10),
                          noCreation(11),
                          inconsistentValue(12),
                          resourceUnavailable(13),
                          commitFailed(14),
                          undoFailed(15),
                          authorizationError(16),
                          notWritable(17),
                          inconsistentName(18) }
--

-- Resource Control Section
--

mteResourceSampleMinimum OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The minimum mteTriggerFrequency this system will
        accept.  A system may use the larger values of this minimum to
        lessen the impact of constant sampling.  For larger
        sampling intervals the system samples less often and
        suffers less overhead.  This object provides a way to enforce
        such lower overhead for all triggers created after it is
        set.

        Unless explicitly resource limited, a system's value for
        this object SHOULD be 1, allowing as small as a 1 second
        interval for ongoing trigger sampling.

        Changing this value will not invalidate an existing setting
        of mteTriggerFrequency."
    ::= { mteResource 1 }

mteResourceSampleInstanceMaximum OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "instances"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The maximum number of instance entries this system will
        support for sampling.

        These are the entries that maintain state, one for each
        instance of each sampled object as selected by
        mteTriggerValueID.  Note that wildcarded objects result
        in multiple instances of this state.

        A value of 0 indicates no preset limit, that is, the limit
        is dynamic based on system operation and resources.

        Unless explicitly resource limited, a system's value for
        this object SHOULD be 0.

        Changing this value will not eliminate or inhibit existing
        sample state but could prevent allocation of additional state
        information."
    ::= { mteResource 2 }

mteResourceSampleInstances OBJECT-TYPE
    SYNTAX      Gauge32
    UNITS       "instances"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of currently active instance entries as
        defined for mteResourceSampleInstanceMaximum."
    ::= { mteResource 3 }

mteResourceSampleInstancesHigh OBJECT-TYPE
    SYNTAX      Gauge32
    UNITS       "instances"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The highest value of mteResourceSampleInstances that has
        occurred since initialization of the management system."
    ::= { mteResource 4 }

mteResourceSampleInstanceLacks OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "instances"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times this system could not take a new sample
        because that allocation would have exceeded the limit set by
        mteResourceSampleInstanceMaximum."
    ::= { mteResource 5 }

--
-- Trigger Section
--

-- Counters

mteTriggerFailures OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "failures"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times an attempt to check for a trigger
        condition has failed.  This counts individually for each
        attempt in a group of targets or each attempt for a

        wildcarded object."
    ::= { mteTrigger 1 }

--
-- Trigger Table
--

mteTriggerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteTriggerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event trigger information."
    ::= { mteTrigger 2 }

mteTriggerEntry OBJECT-TYPE
    SYNTAX      MteTriggerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single trigger.  Applications create and
        delete entries using mteTriggerEntryStatus."
    INDEX       { mteOwner, IMPLIED mteTriggerName }
    ::= { mteTriggerTable 1 }

MteTriggerEntry ::= SEQUENCE {
    mteOwner                            SnmpAdminString,
    mteTriggerName                      SnmpAdminString,
    mteTriggerComment                   SnmpAdminString,
    mteTriggerTest                      BITS,
    mteTriggerSampleType                INTEGER,
    mteTriggerValueID                   OBJECT IDENTIFIER,
    mteTriggerValueIDWildcard           TruthValue,
    mteTriggerTargetTag                 SnmpTagValue,
    mteTriggerContextName               SnmpAdminString,
    mteTriggerContextNameWildcard       TruthValue,
    mteTriggerFrequency                 Unsigned32,
    mteTriggerObjectsOwner              SnmpAdminString,
    mteTriggerObjects                   SnmpAdminString,
    mteTriggerEnabled                   TruthValue,
    mteTriggerEntryStatus               RowStatus
}

mteOwner OBJECT-TYPE
   SYNTAX      SnmpAdminString (SIZE(0..32))
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION
        "The owner of this entry. The exact semantics of this
        string are subject to the security policy defined by the
        security administrator."
    ::= { mteTriggerEntry 1 }

mteTriggerName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A locally-unique, administratively assigned name for the
        trigger within the scope of mteOwner."
    ::= { mteTriggerEntry 2 }

mteTriggerComment OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A description of the trigger's function and use."
    DEFVAL { ''H }
    ::= { mteTriggerEntry 3 }

mteTriggerTest OBJECT-TYPE
    SYNTAX      BITS { existence(0), boolean(1), threshold(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of trigger test to perform.  For 'boolean' and
        'threshold'  tests, the object at mteTriggerValueID MUST
        evaluate to an integer, that is, anything that ends up encoded
        for transmission (that is, in BER, not ASN.1) as an integer.

        For 'existence', the specific test is as selected by
        mteTriggerExistenceTest.  When an object appears, vanishes
        or changes value, the trigger fires. If the object's
        appearance caused the trigger firing, the object MUST
        vanish before the trigger can be fired again for it, and
        vice versa. If the trigger fired due to a change in the
        object's value, it will be fired again on every successive
        value change for that object.

        For 'boolean', the specific test is as selected by
        mteTriggerBooleanTest.  If the test result is true the trigger
        fires.  The trigger will not fire again until the value has
        become false and come back to true.

        For 'threshold' the test works as described below for

        mteTriggerThresholdStartup, mteTriggerThresholdRising, and
        mteTriggerThresholdFalling.

        Note that combining 'boolean' and 'threshold' tests on the
        same object may be somewhat redundant."
    DEFVAL { { boolean } }
    ::= { mteTriggerEntry 4 }

mteTriggerSampleType OBJECT-TYPE
    SYNTAX      INTEGER { absoluteValue(1), deltaValue(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of sampling to perform.

        An 'absoluteValue' sample requires only a single sample to be
        meaningful, and is exactly the value of the object at
        mteTriggerValueID at the sample time.

        A 'deltaValue' requires two samples to be meaningful and is
        thus not available for testing until the second and subsequent
        samples after the object at mteTriggerValueID is first found
        to exist.  It is the difference between the two samples.  For
        unsigned values it is always positive, based on unsigned
        arithmetic.  For signed values it can be positive or negative.

        For SNMP counters to be meaningful they should be sampled as a
        'deltaValue'.

        For 'deltaValue' mteTriggerDeltaTable contains further
        parameters.

        If only 'existence' is set in mteTriggerTest this object has
        no meaning."
    DEFVAL { absoluteValue }
    ::= { mteTriggerEntry 5 }

mteTriggerValueID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object identifier of the MIB object to sample to see
        if the trigger should fire.

        This may be wildcarded by truncating all or part of the
        instance portion, in which case the value is obtained
        as if with a GetNext function, checking multiple values

        if they exist.  If such wildcarding is applied,
        mteTriggerValueIDWildcard must be 'true' and if not it must
        be 'false'.

        Bad object identifiers or a mismatch between truncating the
        identifier and the value of mteTriggerValueIDWildcard result
        in operation as one would expect when providing the wrong
        identifier to a Get or GetNext operation.  The Get will fail
        or get the wrong object.  The GetNext will indeed get whatever
        is next, proceeding until it runs past the initial part of the
        identifier and perhaps many unintended objects for confusing
        results.  If the value syntax of those objects is not usable,
        that results in a 'badType' error that terminates the scan.

        Each instance that fills the wildcard is independent of any
        additional instances, that is, wildcarded objects operate
        as if there were a separate table entry for each instance
        that fills the wildcard without having to actually predict
        all possible instances ahead of time."
    DEFVAL { zeroDotZero }
    ::= { mteTriggerEntry 6 }

mteTriggerValueIDWildcard OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Control for whether mteTriggerValueID is to be treated as
        fully-specified or wildcarded, with 'true' indicating wildcard."
    DEFVAL { false }
    ::= { mteTriggerEntry 7 }

mteTriggerTargetTag OBJECT-TYPE
    SYNTAX      SnmpTagValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The tag for the target(s) from which to obtain the condition
        for a trigger check.

        A length of 0 indicates the local system.  In this case,
        access to the objects indicated by mteTriggerValueID is under
        the security credentials of the requester that set
        mteTriggerEntryStatus to 'active'.  Those credentials are the
        input parameters for isAccessAllowed from the Architecture for
        Describing SNMP Management Frameworks.

        Otherwise access rights are checked according to the security

        parameters resulting from the tag."
    DEFVAL { ''H }
    ::= { mteTriggerEntry 8 }

mteTriggerContextName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The management context from which to obtain mteTriggerValueID.

        This may be wildcarded by leaving characters off the end.  For
        example use 'Repeater' to wildcard to 'Repeater1',
        'Repeater2', 'Repeater-999.87b', and so on.  To indicate such
        wildcarding is intended, mteTriggerContextNameWildcard must
        be 'true'.

        Each instance that fills the wildcard is independent of any
        additional instances, that is, wildcarded objects operate
        as if there were a separate table entry for each instance
        that fills the wildcard without having to actually predict
        all possible instances ahead of time.

        Operation of this feature assumes that the local system has a
        list of available contexts against which to apply the
        wildcard.  If the objects are being read from the local
        system, this is clearly the system's own list of contexts.
        For a remote system a local version of such a list is not
        defined by any current standard and may not be available, so
        this function MAY not be supported."
    DEFVAL { ''H }
    ::= { mteTriggerEntry 9 }

mteTriggerContextNameWildcard OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Control for whether mteTriggerContextName is to be treated as
        fully-specified or wildcarded, with 'true' indicating wildcard."
    DEFVAL { false }
    ::= { mteTriggerEntry 10 }

mteTriggerFrequency OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of seconds to wait between trigger samples.  To
        encourage consistency in sampling, the interval is measured
        from the beginning of one check to the beginning of the next
        and the timer is restarted immediately when it expires, not
        when the check completes.

        If the next sample begins before the previous one completed the
        system may either attempt to make the check or treat this as an
        error condition with the error 'sampleOverrun'.

        A frequency of 0 indicates instantaneous recognition of the
        condition.  This is not possible in many cases, but may
        be supported in cases where it makes sense and the system is
        able to do so.  This feature allows the MIB to be used in
        implementations where such interrupt-driven behavior is
        possible and is not likely to be supported for all MIB objects
        even then since such sampling generally has to be tightly
        integrated into low-level code.

        Systems that can support this SHOULD document those cases
        where it can be used.  In cases where it can not, setting this
        object to 0 should be disallowed."
    DEFVAL { 600 }
    ::= { mteTriggerEntry 11 }

mteTriggerObjectsOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerObjects, the mteOwner of a group of
        objects from mteObjectsTable."
    DEFVAL { ''H }
    ::= { mteTriggerEntry 12 }

mteTriggerObjects OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The mteObjectsName of a group of objects from
        mteObjectsTable.  These objects are to be added to any
        Notification resulting from the firing of this trigger.

        A list of objects may also be added based on the event or on
        the value of mteTriggerTest.

        A length of 0 indicates no additional objects."
    DEFVAL { ''H }
    ::= { mteTriggerEntry 13 }

mteTriggerEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A control to allow a trigger to be configured but not used.
        When the value is 'false' the trigger is not sampled."
    DEFVAL { false }
    ::= { mteTriggerEntry 14 }

mteTriggerEntryStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The control that allows creation and deletion of entries.
        Once made active an entry may not be modified except to
        delete it."
    ::= { mteTriggerEntry 15 }

--
-- Trigger Delta Table
--

mteTriggerDeltaTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteTriggerDeltaEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event trigger information for delta
        sampling."
    ::= { mteTrigger 3 }

mteTriggerDeltaEntry OBJECT-TYPE
    SYNTAX      MteTriggerDeltaEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single trigger's delta sampling.  Entries
        automatically exist in this this table for each mteTriggerEntry
        that has mteTriggerSampleType set to 'deltaValue'."
    INDEX       { mteOwner, IMPLIED mteTriggerName }
    ::= { mteTriggerDeltaTable 1 }

MteTriggerDeltaEntry ::= SEQUENCE {
    mteTriggerDeltaDiscontinuityID                OBJECT IDENTIFIER,
    mteTriggerDeltaDiscontinuityIDWildcard        TruthValue,
    mteTriggerDeltaDiscontinuityIDType            INTEGER
}

sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }

mteTriggerDeltaDiscontinuityID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or
        DateAndTime object that indicates a discontinuity in the value
        at mteTriggerValueID.

        The OID may be for a leaf object (e.g. sysUpTime.0) or may
        be wildcarded to match mteTriggerValueID.

        This object supports normal checking for a discontinuity in a
        counter.  Note that if this object does not point to sysUpTime
        discontinuity checking MUST still check sysUpTime for an overall
        discontinuity.

        If the object identified is not accessible the sample attempt
        is in error, with the error code as from an SNMP request.

        Bad object identifiers or a mismatch between truncating the
        identifier and the value of mteDeltaDiscontinuityIDWildcard
        result in operation as one would expect when providing the
        wrong identifier to a Get operation.  The Get will fail or get
        the wrong object.  If the value syntax of those objects is not
        usable, that results in an error that terminates the sample
        with a 'badType' error code."
    DEFVAL { sysUpTimeInstance }
    ::= { mteTriggerDeltaEntry 1 }

mteTriggerDeltaDiscontinuityIDWildcard OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-write
     STATUS      current
     DESCRIPTION
        "Control for whether mteTriggerDeltaDiscontinuityID is to be
        treated as fully-specified or wildcarded, with 'true'
        indicating wildcard. Note that the value of this object will
        be the same as that of the corresponding instance of
        mteTriggerValueIDWildcard when the corresponding

        mteTriggerSampleType is 'deltaValue'."
    DEFVAL { false }
    ::= { mteTriggerDeltaEntry 2 }

mteTriggerDeltaDiscontinuityIDType OBJECT-TYPE
    SYNTAX      INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value 'timeTicks' indicates the
        mteTriggerDeltaDiscontinuityID of this row is of syntax
        TimeTicks.  The value 'timeStamp' indicates syntax TimeStamp.
        The value 'dateAndTime' indicates syntax DateAndTime."
    DEFVAL { timeTicks }
    ::= { mteTriggerDeltaEntry 3 }

--
-- Trigger Existence Table
--

mteTriggerExistenceTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteTriggerExistenceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event trigger information for existence
        triggers."
    ::= { mteTrigger 4 }

mteTriggerExistenceEntry OBJECT-TYPE
    SYNTAX      MteTriggerExistenceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single existence trigger.  Entries
        automatically exist in this this table for each mteTriggerEntry
        that has 'existence' set in mteTriggerTest."
    INDEX       { mteOwner, IMPLIED mteTriggerName }
    ::= { mteTriggerExistenceTable 1 }

MteTriggerExistenceEntry ::= SEQUENCE {
    mteTriggerExistenceTest              BITS,
    mteTriggerExistenceStartup           BITS,
    mteTriggerExistenceObjectsOwner      SnmpAdminString,
    mteTriggerExistenceObjects           SnmpAdminString,
    mteTriggerExistenceEventOwner        SnmpAdminString,
    mteTriggerExistenceEvent             SnmpAdminString
}

mteTriggerExistenceTest OBJECT-TYPE
    SYNTAX      BITS { present(0), absent(1), changed(2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The type of existence test to perform.  The trigger fires
        when the object at mteTriggerValueID is seen to go from
        present to absent, from absent to present, or to have it's
        value changed, depending on which tests are selected:

        present(0) - when this test is selected, the trigger fires
        when the mteTriggerValueID object goes from absent to present.

        absent(1)  - when this test is selected, the trigger fires
        when the mteTriggerValueID object goes from present to absent.
        changed(2) - when this test is selected, the trigger fires
        the mteTriggerValueID object value changes.

        Once the trigger has fired for either presence or absence it
        will not fire again for that state until the object has been
        to the other state. "
    DEFVAL { { present, absent } }
    ::= { mteTriggerExistenceEntry 1 }

mteTriggerExistenceStartup OBJECT-TYPE
    SYNTAX      BITS { present(0), absent(1) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Control for whether an event may be triggered when this entry
        is first set to 'active' and the test specified by
        mteTriggerExistenceTest is true.  Setting an option causes
        that trigger to fire when its test is true."
    DEFVAL { { present, absent } }
    ::= { mteTriggerExistenceEntry 2 }

mteTriggerExistenceObjectsOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerExistenceObjects, the mteOwner of a
        group of objects from mteObjectsTable."
    DEFVAL { ''H }
    ::= { mteTriggerExistenceEntry 3 }

mteTriggerExistenceObjects OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteObjectsName of a group of objects from
        mteObjectsTable.  These objects are to be added to any
        Notification resulting from the firing of this trigger for
        this test.

        A list of objects may also be added based on the overall
        trigger, the event or other settings in mteTriggerTest.

        A length of 0 indicates no additional objects."
    DEFVAL { ''H }
    ::= { mteTriggerExistenceEntry 4 }

mteTriggerExistenceEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerExistenceEvent, the mteOwner of an event
        entry from the mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerExistenceEntry 5 }

mteTriggerExistenceEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'existence' and this trigger fires.  A length of 0 indicates no
        event."
    DEFVAL { ''H }
    ::= { mteTriggerExistenceEntry 6 }

--
-- Trigger Boolean Table
--

mteTriggerBooleanTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteTriggerBooleanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event trigger information for boolean
        triggers."
    ::= { mteTrigger 5 }

mteTriggerBooleanEntry OBJECT-TYPE
    SYNTAX      MteTriggerBooleanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single boolean trigger.  Entries
        automatically exist in this this table for each mteTriggerEntry
        that has 'boolean' set in mteTriggerTest."
    INDEX       { mteOwner, IMPLIED mteTriggerName }
    ::= { mteTriggerBooleanTable 1 }

MteTriggerBooleanEntry ::= SEQUENCE {
    mteTriggerBooleanComparison          INTEGER,
    mteTriggerBooleanValue               Integer32,
    mteTriggerBooleanStartup             TruthValue,
    mteTriggerBooleanObjectsOwner        SnmpAdminString,
    mteTriggerBooleanObjects             SnmpAdminString,
    mteTriggerBooleanEventOwner          SnmpAdminString,
    mteTriggerBooleanEvent               SnmpAdminString
}

mteTriggerBooleanComparison OBJECT-TYPE
    SYNTAX      INTEGER { unequal(1), equal(2),
                 less(3), lessOrEqual(4),
                 greater(5), greaterOrEqual(6) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The type of boolean comparison to perform.

        The value at mteTriggerValueID is compared to
        mteTriggerBooleanValue, so for example if
        mteTriggerBooleanComparison is 'less' the result would be true
        if the value at mteTriggerValueID is less than the value of
        mteTriggerBooleanValue."
    DEFVAL { unequal }
    ::= { mteTriggerBooleanEntry 1 }

mteTriggerBooleanValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value to use for the test specified by
        mteTriggerBooleanTest."
    DEFVAL { 0 }
    ::= { mteTriggerBooleanEntry 2 }

mteTriggerBooleanStartup OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Control for whether an event may be triggered when this entry
        is first set to 'active' or a new instance of the object at
        mteTriggerValueID is found and the test specified by
        mteTriggerBooleanComparison is true.  In that case an event is
        triggered if mteTriggerBooleanStartup is 'true'."
    DEFVAL { true }
    ::= { mteTriggerBooleanEntry 3 }

mteTriggerBooleanObjectsOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerBooleanObjects, the mteOwner of a group
        of objects from mteObjectsTable."
    DEFVAL { ''H }
    ::= { mteTriggerBooleanEntry 4 }

mteTriggerBooleanObjects OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteObjectsName of a group of objects from
        mteObjectsTable.  These objects are to be added to any
        Notification resulting from the firing of this trigger for
        this test.

        A list of objects may also be added based on the overall
        trigger, the event or other settings in mteTriggerTest.

        A length of 0 indicates no additional objects."
    DEFVAL { ''H }
    ::= { mteTriggerBooleanEntry 5 }

mteTriggerBooleanEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerBooleanEvent, the mteOwner of an event
        entry from mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerBooleanEntry 6 }

mteTriggerBooleanEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'boolean' and this trigger fires.  A length of 0 indicates no
        event."
    DEFVAL { ''H }
    ::= { mteTriggerBooleanEntry 7 }

--
-- Trigger Threshold Table
--

mteTriggerThresholdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteTriggerThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event trigger information for threshold
        triggers."
    ::= { mteTrigger 6 }

mteTriggerThresholdEntry OBJECT-TYPE
    SYNTAX      MteTriggerThresholdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single threshold trigger.  Entries
        automatically exist in this table for each mteTriggerEntry
        that has 'threshold' set in mteTriggerTest."
    INDEX       { mteOwner, IMPLIED mteTriggerName }
    ::= { mteTriggerThresholdTable 1 }

MteTriggerThresholdEntry ::= SEQUENCE {
    mteTriggerThresholdStartup                  INTEGER,
    mteTriggerThresholdRising                   Integer32,
    mteTriggerThresholdFalling                  Integer32,
    mteTriggerThresholdDeltaRising              Integer32,
    mteTriggerThresholdDeltaFalling             Integer32,
    mteTriggerThresholdObjectsOwner             SnmpAdminString,
    mteTriggerThresholdObjects                  SnmpAdminString,
    mteTriggerThresholdRisingEventOwner         SnmpAdminString,
    mteTriggerThresholdRisingEvent              SnmpAdminString,
    mteTriggerThresholdFallingEventOwner        SnmpAdminString,
    mteTriggerThresholdFallingEvent             SnmpAdminString,
    mteTriggerThresholdDeltaRisingEventOwner    SnmpAdminString,
    mteTriggerThresholdDeltaRisingEvent         SnmpAdminString,
    mteTriggerThresholdDeltaFallingEventOwner   SnmpAdminString,
    mteTriggerThresholdDeltaFallingEvent        SnmpAdminString
}

mteTriggerThresholdStartup OBJECT-TYPE
    SYNTAX      INTEGER { rising(1), falling(2), risingOrFalling(3) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The event that may be triggered when this entry is first
        set to 'active' and a new instance of the object at
        mteTriggerValueID is found.  If the first sample after this
        instance becomes active is greater than or equal to
        mteTriggerThresholdRising and mteTriggerThresholdStartup is
        equal to 'rising' or 'risingOrFalling', then one
        mteTriggerThresholdRisingEvent is triggered for that instance.
        If the first sample after this entry becomes active is less
        than or equal to mteTriggerThresholdFalling and
        mteTriggerThresholdStartup is equal to 'falling' or
        'risingOrFalling', then one mteTriggerThresholdRisingEvent is
        triggered for that instance."
    DEFVAL { risingOrFalling }
    ::= { mteTriggerThresholdEntry 1 }

mteTriggerThresholdRising OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A threshold value to check against if mteTriggerType is
        'threshold'.

        When the current sampled value is greater than or equal to
        this threshold, and the value at the last sampling interval
        was less than this threshold, one
        mteTriggerThresholdRisingEvent is triggered.  That event is
        also triggered if the first sample after this entry becomes
        active is greater than or equal to this threshold and
        mteTriggerThresholdStartup is equal to 'rising' or
        'risingOrFalling'.

        After a rising event is generated, another such event is not
        triggered until the sampled value falls below this threshold
        and reaches mteTriggerThresholdFalling."
    DEFVAL { 0 }
    ::= { mteTriggerThresholdEntry 2 }

mteTriggerThresholdFalling OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A threshold value to check against if mteTriggerType is
        'threshold'.

        When the current sampled value is less than or equal to this
        threshold, and the value at the last sampling interval was
        greater than this threshold, one
        mteTriggerThresholdFallingEvent is triggered.  That event is
        also triggered if the first sample after this entry becomes
        active is less than or equal to this threshold and
        mteTriggerThresholdStartup is equal to 'falling' or
        'risingOrFalling'.

        After a falling event is generated, another such event is not
        triggered until the sampled value rises above this threshold
        and reaches mteTriggerThresholdRising."
    DEFVAL { 0 }
    ::= { mteTriggerThresholdEntry 3 }

mteTriggerThresholdDeltaRising OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A threshold value to check against if mteTriggerType is
        'threshold'.

        When the delta value (difference) between the current sampled
        value (value(n)) and the previous sampled value (value(n-1))
        is greater than or equal to this threshold,
        and the delta value calculated at the last sampling interval
        (i.e. value(n-1) - value(n-2)) was less than this threshold,
        one mteTriggerThresholdDeltaRisingEvent is triggered. That event
        is also triggered if the first delta value calculated after this
        entry becomes active, i.e. value(2) - value(1), where value(1)
        is the first sample taken of that instance, is greater than or
        equal to this threshold.

        After a rising event is generated, another such event is not
        triggered until the delta value falls below this threshold and
        reaches mteTriggerThresholdDeltaFalling."
    DEFVAL { 0 }
    ::= { mteTriggerThresholdEntry 4 }

mteTriggerThresholdDeltaFalling OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A threshold value to check against if mteTriggerType is
        'threshold'.

        When the delta value (difference) between the current sampled
        value (value(n)) and the previous sampled value (value(n-1))
        is less than or equal to this threshold,
        and the delta value calculated at the last sampling interval
        (i.e. value(n-1) - value(n-2)) was greater than this threshold,
        one mteTriggerThresholdDeltaFallingEvent is triggered. That event
        is also triggered if the first delta value calculated after this
        entry becomes active, i.e. value(2) - value(1), where value(1)
        is the first sample taken of that instance, is less than or
        equal to this threshold.

        After a falling event is generated, another such event is not
        triggered until the delta value falls below this threshold and
        reaches mteTriggerThresholdDeltaRising."
    DEFVAL { 0 }
    ::= { mteTriggerThresholdEntry 5 }

mteTriggerThresholdObjectsOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerThresholdObjects, the mteOwner of a group
        of objects from mteObjectsTable."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 6 }

mteTriggerThresholdObjects OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteObjectsName of a group of objects from
        mteObjectsTable.  These objects are to be added to any
        Notification resulting from the firing of this trigger for
        this test.

        A list of objects may also be added based on the overall

        trigger, the event or other settings in mteTriggerTest.

        A length of 0 indicates no additional objects."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 7 }

mteTriggerThresholdRisingEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerThresholdRisingEvent, the mteOwner of an
        event entry from mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 8 }

mteTriggerThresholdRisingEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'threshold' and this trigger fires based on
        mteTriggerThresholdRising.  A length of 0 indicates no event."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 9 }

mteTriggerThresholdFallingEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerThresholdFallingEvent, the mteOwner of an
        event entry from mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 10 }

mteTriggerThresholdFallingEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'threshold' and this trigger fires based on
        mteTriggerThresholdFalling.  A length of 0 indicates no event."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 11 }

mteTriggerThresholdDeltaRisingEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerThresholdDeltaRisingEvent, the mteOwner
        of an event entry from mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 12 }

mteTriggerThresholdDeltaRisingEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'threshold' and this trigger fires based on
        mteTriggerThresholdDeltaRising. A length of 0 indicates
        no event."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 13 }

mteTriggerThresholdDeltaFallingEventOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteTriggerThresholdDeltaFallingEvent, the mteOwner
        of an event entry from mteEventTable."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 14 }

mteTriggerThresholdDeltaFallingEvent OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteEventName of the event to invoke when mteTriggerType is
        'threshold' and this trigger fires based on
        mteTriggerThresholdDeltaFalling.  A length of 0 indicates
        no event."
    DEFVAL { ''H }
    ::= { mteTriggerThresholdEntry 15 }

--
-- Objects Table
--

mteObjectsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteObjectsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that can be added to notifications based
        on the trigger, trigger test, or event, as pointed to by
        entries in those tables."
    ::= { mteObjects 1 }

mteObjectsEntry OBJECT-TYPE
    SYNTAX      MteObjectsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A group of objects.  Applications create and delete entries
        using mteObjectsEntryStatus.

        When adding objects to a notification they are added in the
        lexical order of their index in this table.  Those associated
        with a trigger come first, then trigger test, then event."
    INDEX       { mteOwner, mteObjectsName, mteObjectsIndex }
    ::= { mteObjectsTable 1 }

MteObjectsEntry ::= SEQUENCE {
    mteObjectsName                      SnmpAdminString,
    mteObjectsIndex                     Unsigned32,
    mteObjectsID                        OBJECT IDENTIFIER,
    mteObjectsIDWildcard                TruthValue,
    mteObjectsEntryStatus               RowStatus
    }

mteObjectsName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A locally-unique, administratively assigned name for a group
        of objects."
    ::= { mteObjectsEntry 1 }

mteObjectsIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An arbitrary integer for the purpose of identifying
        individual objects within a mteObjectsName group.

        Objects within a group are placed in the notification in the
        numerical order of this index.

        Groups are placed in the notification in the order of the
        selections for overall trigger, trigger test, and event.
        Within trigger test they are in the same order as the
        numerical values of the bits defined for mteTriggerTest.

        Bad object identifiers or a mismatch between truncating the
        identifier and the value of mteDeltaDiscontinuityIDWildcard
        result in operation as one would expect when providing the
        wrong identifier to a Get operation.  The Get will fail or get
        the wrong object.  If the object is not available it is omitted
        from the notification."
    ::= { mteObjectsEntry 2 }

mteObjectsID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object identifier of a MIB object to add to a
        Notification that results from the firing of a trigger.

        This may be wildcarded by truncating all or part of the
        instance portion, in which case the instance portion of the
        OID for obtaining this object will be the same as that used
        in obtaining the mteTriggerValueID that fired.  If such
        wildcarding is applied, mteObjectsIDWildcard must be
        'true' and if not it must be 'false'.

        Each instance that fills the wildcard is independent of any
        additional instances, that is, wildcarded objects operate
        as if there were a separate table entry for each instance
        that fills the wildcard without having to actually predict
        all possible instances ahead of time."
    DEFVAL { zeroDotZero }
    ::= { mteObjectsEntry 3 }

mteObjectsIDWildcard OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Control for whether mteObjectsID is to be treated as
        fully-specified or wildcarded, with 'true' indicating wildcard."
    DEFVAL { false }
    ::= { mteObjectsEntry 4 }

mteObjectsEntryStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The control that allows creation and deletion of entries.
        Once made active an entry MAY not be modified except to
        delete it."
    ::= { mteObjectsEntry 5 }

--
-- Event Section
--

-- Counters

mteEventFailures OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times an attempt to invoke an event
        has failed.  This counts individually for each
        attempt in a group of targets or each attempt for a
        wildcarded trigger object."
    ::= { mteEvent 1 }

--
-- Event Table
--

mteEventTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteEventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event action information."
    ::= { mteEvent 2 }

mteEventEntry OBJECT-TYPE
    SYNTAX      MteEventEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single event.  Applications create and
        delete entries using mteEventEntryStatus."
    INDEX       { mteOwner, IMPLIED mteEventName }
    ::= { mteEventTable 1 }

MteEventEntry ::= SEQUENCE {
    mteEventName                        SnmpAdminString,
    mteEventComment                     SnmpAdminString,
    mteEventActions                     BITS,
    mteEventEnabled                     TruthValue,
    mteEventEntryStatus                 RowStatus
    }

mteEventName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A locally-unique, administratively assigned name for the
        event."
    ::= { mteEventEntry 1 }

mteEventComment OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A description of the event's function and use."
    DEFVAL { ''H }
    ::= { mteEventEntry 2 }

mteEventActions OBJECT-TYPE
    SYNTAX      BITS { notification(0), set(1) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The actions to perform when this event occurs.

        For 'notification', Traps and/or Informs are sent according
        to the configuration in the SNMP Notification MIB.

        For 'set', an SNMP Set operation is performed according to
        control values in this entry."
    DEFVAL { {} }  -- No bits set.
    ::= { mteEventEntry 3 }

mteEventEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A control to allow an event to be configured but not used.
        When the value is 'false' the event does not execute even if

        triggered."
    DEFVAL { false }
    ::= { mteEventEntry 4 }

mteEventEntryStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The control that allows creation and deletion of entries.
        Once made active an entry MAY not be modified except to
        delete it."
    ::= { mteEventEntry 5 }

--
-- Event Notification Table
--

mteEventNotificationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteEventNotificationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of information about notifications to be sent as a
        consequence of management events."
    ::= { mteEvent 3 }

mteEventNotificationEntry OBJECT-TYPE
    SYNTAX      MteEventNotificationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single event's notification.  Entries
        automatically exist in this this table for each mteEventEntry
        that has 'notification' set in mteEventActions."
    INDEX       { mteOwner, IMPLIED mteEventName }
    ::= { mteEventNotificationTable 1 }

MteEventNotificationEntry ::= SEQUENCE {
    mteEventNotification                OBJECT IDENTIFIER,
    mteEventNotificationObjectsOwner    SnmpAdminString,
    mteEventNotificationObjects         SnmpAdminString
    }

mteEventNotification OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The object identifier from the NOTIFICATION-TYPE for the
        notification to use if metEventActions has 'notification' set."
    DEFVAL { zeroDotZero }
    ::= { mteEventNotificationEntry 1 }

mteEventNotificationObjectsOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "To go with mteEventNotificationObjects, the mteOwner of a
        group of objects from mteObjectsTable."
    DEFVAL { ''H }
    ::= { mteEventNotificationEntry 2 }

mteEventNotificationObjects OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mteObjectsName of a group of objects from
        mteObjectsTable if mteEventActions has 'notification' set.
        These objects are to be added to any Notification generated by
        this event.

        Objects may also be added based on the trigger that stimulated
        the event.

        A length of 0 indicates no additional objects."
    DEFVAL { ''H }
    ::= { mteEventNotificationEntry 3 }

--
-- Event Set Table
--

mteEventSetTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MteEventSetEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of management event action information."
    ::= { mteEvent 4 }

mteEventSetEntry OBJECT-TYPE
    SYNTAX      MteEventSetEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a single event's set option.  Entries
        automatically exist in this this table for each mteEventEntry
        that has 'set' set in mteEventActions."
    INDEX       { mteOwner, IMPLIED mteEventName }
    ::= { mteEventSetTable 1 }

MteEventSetEntry ::= SEQUENCE {
    mteEventSetObject                   OBJECT IDENTIFIER,
    mteEventSetObjectWildcard           TruthValue,
    mteEventSetValue                    Integer32,
    mteEventSetTargetTag                SnmpTagValue,
    mteEventSetContextName              SnmpAdminString,
    mteEventSetContextNameWildcard      TruthValue
    }

mteEventSetObject OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The object identifier from the MIB object to set if
        mteEventActions has 'set' set.

        This object identifier may be wildcarded by leaving
        sub-identifiers off the end, in which case
        nteEventSetObjectWildCard must be 'true'.

        If mteEventSetObject is wildcarded the instance used to set the
        object to which it points is the same as the instance from the
        value of mteTriggerValueID that triggered the event.

        Each instance that fills the wildcard is independent of any
        additional instances, that is, wildcarded objects operate
        as if there were a separate table entry for each instance
        that fills the wildcard without having to actually predict
        all possible instances ahead of time.

        Bad object identifiers or a mismatch between truncating the
        identifier and the value of mteSetObjectWildcard
        result in operation as one would expect when providing the
        wrong identifier to a Set operation.  The Set will fail or set
        the wrong object.  If the value syntax of the destination
        object is not correct, the Set fails with the normal SNMP
        error code."
    DEFVAL { zeroDotZero }
    ::= { mteEventSetEntry 1 }

mteEventSetObjectWildcard OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Control over whether mteEventSetObject is to be treated as
        fully-specified or wildcarded, with 'true' indicating wildcard
        if mteEventActions has 'set' set."
    DEFVAL { false }
    ::= { mteEventSetEntry 2 }

mteEventSetValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value to which to set the object at mteEventSetObject
        if mteEventActions has 'set' set."
    DEFVAL { 0 }
    ::= { mteEventSetEntry 3 }

mteEventSetTargetTag OBJECT-TYPE
    SYNTAX      SnmpTagValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The tag for the target(s) at which to set the object at
        mteEventSetObject to mteEventSetValue if mteEventActions
        has 'set' set.

        Systems limited to self management MAY reject a non-zero
        length for the value of this object.

        A length of 0 indicates the local system.  In this case,
        access to the objects indicated by mteEventSetObject is under
        the security credentials of the requester that set
        mteTriggerEntryStatus to 'active'.  Those credentials are the
        input parameters for isAccessAllowed from the Architecture for
        Describing SNMP Management Frameworks.

        Otherwise access rights are checked according to the security
        parameters resulting from the tag."
    DEFVAL { ''H }
    ::= { mteEventSetEntry 4 }

mteEventSetContextName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The management context in which to set mteEventObjectID.
        if mteEventActions has 'set' set.

        This may be wildcarded by leaving characters off the end.  To
        indicate such wildcarding mteEventSetContextNameWildcard must
        be 'true'.

        If this context name is wildcarded the value used to complete
        the wildcarding of mteTriggerContextName will be appended."
    DEFVAL { ''H }
    ::= { mteEventSetEntry 5 }

mteEventSetContextNameWildcard OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Control for whether mteEventSetContextName is to be treated as
        fully-specified or wildcarded, with 'true' indicating wildcard
        if mteEventActions has 'set' set."
    DEFVAL { false }
    ::= { mteEventSetEntry 6 }

--
-- Notifications
--

dismanEventMIBNotificationPrefix OBJECT IDENTIFIER ::=
    { dismanEventMIB 2 }
dismanEventMIBNotifications OBJECT IDENTIFIER ::=
    { dismanEventMIBNotificationPrefix 0 }
dismanEventMIBNotificationObjects OBJECT IDENTIFIER
   ::= { dismanEventMIBNotificationPrefix 1 }

--
-- Notification Objects
--

mteHotTrigger OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The name of the trigger causing the notification."
    ::= { dismanEventMIBNotificationObjects 1 }

mteHotTargetName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The SNMP Target MIB's snmpTargetAddrName related to the
        notification."
    ::= { dismanEventMIBNotificationObjects 2 }

mteHotContextName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The context name related to the notification.  This MUST be as
        fully-qualified as possible, including filling in wildcard
        information determined in processing."
    ::= { dismanEventMIBNotificationObjects 3 }

mteHotOID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The object identifier of the destination object related to the
        notification.  This MUST be as fully-qualified as possible,
        including filling in wildcard information determined in
        processing.

        For a trigger-related notification this is from
        mteTriggerValueID.

        For a set failure this is from mteEventSetObject."
    ::= { dismanEventMIBNotificationObjects 4 }

mteHotValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The value of the object at mteTriggerValueID when a
        trigger fired."
    ::= { dismanEventMIBNotificationObjects 5 }

mteFailedReason OBJECT-TYPE
    SYNTAX      FailureReason
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The reason for the failure of an attempt to check for a
        trigger condition or set an object in response to an event."
    ::= { dismanEventMIBNotificationObjects 6 }

--
-- Notifications
--

mteTriggerFired NOTIFICATION-TYPE
    OBJECTS { mteHotTrigger,
              mteHotTargetName,
              mteHotContextName,
              mteHotOID,
              mteHotValue }
    STATUS  current
    DESCRIPTION
        "Notification that the trigger indicated by the object
        instances has fired, for triggers with mteTriggerType
        'boolean' or 'existence'."
    ::= { dismanEventMIBNotifications 1 }

mteTriggerRising NOTIFICATION-TYPE
    OBJECTS { mteHotTrigger,
              mteHotTargetName,
              mteHotContextName,
              mteHotOID,
              mteHotValue }
    STATUS  current
    DESCRIPTION
        "Notification that the rising threshold was met for triggers
        with mteTriggerType 'threshold'."
    ::= { dismanEventMIBNotifications 2 }

mteTriggerFalling NOTIFICATION-TYPE
    OBJECTS { mteHotTrigger,
              mteHotTargetName,
              mteHotContextName,
              mteHotOID,
              mteHotValue }
    STATUS  current
    DESCRIPTION
        "Notification that the falling threshold was met for triggers
        with mteTriggerType 'threshold'."
    ::= { dismanEventMIBNotifications 3 }

mteTriggerFailure NOTIFICATION-TYPE
    OBJECTS { mteHotTrigger,
              mteHotTargetName,
              mteHotContextName,
              mteHotOID,
              mteFailedReason }
    STATUS  current
    DESCRIPTION
        "Notification that an attempt to check a trigger has failed.

        The network manager must enable this notification only with
        a certain fear and trembling, as it can easily crowd out more
        important information.  It should be used only to help diagnose
        a problem that has appeared in the error counters and can not
        be found otherwise."
    ::= { dismanEventMIBNotifications 4 }

mteEventSetFailure NOTIFICATION-TYPE
    OBJECTS { mteHotTrigger,
              mteHotTargetName,
              mteHotContextName,
              mteHotOID,
              mteFailedReason }
    STATUS  current
    DESCRIPTION
        "Notification that an attempt to do a set in response to an
        event has failed.

        The network manager must enable this notification only with
        a certain fear and trembling, as it can easily crowd out more
        important information.  It should be used only to help diagnose
        a problem that has appeared in the error counters and can not
        be found otherwise."
    ::= { dismanEventMIBNotifications 5 }

--
-- Conformance
--

dismanEventMIBConformance OBJECT IDENTIFIER ::= { dismanEventMIB 3 }
dismanEventMIBCompliances OBJECT IDENTIFIER ::=
    { dismanEventMIBConformance 1 }
dismanEventMIBGroups      OBJECT IDENTIFIER ::=
    { dismanEventMIBConformance 2 }

-- Compliance

dismanEventMIBCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
                "The compliance statement for entities which implement
                the Event MIB."
        MODULE  -- this module
                MANDATORY-GROUPS {
                        dismanEventResourceGroup,
                        dismanEventTriggerGroup,
                        dismanEventObjectsGroup,
                        dismanEventEventGroup,
                        dismanEventNotificationObjectGroup,
                        dismanEventNotificationGroup
                }

                OBJECT mteTriggerTargetTag
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus limiting
                        monitoring to the local system or pre-configured
                        remote systems."

                OBJECT mteEventSetTargetTag
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus limiting
                        setting to the local system or pre-configured
                        remote systems."

                OBJECT mteTriggerValueIDWildcard
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus allowing
                        the system not to implement wildcarding."

                OBJECT mteTriggerContextNameWildcard
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus allowing
                        the system not to implement wildcarding."

                OBJECT mteObjectsIDWildcard
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus allowing
                        the system not to implement wildcarding."

                OBJECT mteEventSetContextNameWildcard
                MIN-ACCESS  read-only
                DESCRIPTION
                        "Write access is not required, thus allowing
                        the system not to implement wildcarding."
        ::= { dismanEventMIBCompliances 1 }

-- Units of Conformance

dismanEventResourceGroup OBJECT-GROUP
        OBJECTS {
                mteResourceSampleMinimum,
                mteResourceSampleInstanceMaximum,
                mteResourceSampleInstances,
                mteResourceSampleInstancesHigh,
                mteResourceSampleInstanceLacks
        }
        STATUS current
        DESCRIPTION
                "Event resource status and control objects."
        ::= { dismanEventMIBGroups 1 }

dismanEventTriggerGroup OBJECT-GROUP
        OBJECTS {
                mteTriggerFailures,
                mteTriggerComment,
                mteTriggerTest,
                mteTriggerSampleType,
                mteTriggerValueID,
                mteTriggerValueIDWildcard,
                mteTriggerTargetTag,
                mteTriggerContextName,
                mteTriggerContextNameWildcard,
                mteTriggerFrequency,
                mteTriggerObjectsOwner,
                mteTriggerObjects,
                mteTriggerEnabled,
                mteTriggerEntryStatus,
                mteTriggerDeltaDiscontinuityID,
                mteTriggerDeltaDiscontinuityIDWildcard,
                mteTriggerDeltaDiscontinuityIDType,
                mteTriggerExistenceTest,
                mteTriggerExistenceStartup,
                mteTriggerExistenceObjectsOwner,
                mteTriggerExistenceObjects,
                mteTriggerExistenceEventOwner,
                mteTriggerExistenceEvent,
                mteTriggerBooleanComparison,
                mteTriggerBooleanValue,
                mteTriggerBooleanStartup,
                mteTriggerBooleanObjectsOwner,
                mteTriggerBooleanObjects,
                mteTriggerBooleanEventOwner,
                mteTriggerBooleanEvent,
                mteTriggerThresholdStartup,
                mteTriggerThresholdObjectsOwner,
                mteTriggerThresholdObjects,
                mteTriggerThresholdRising,
                mteTriggerThresholdFalling,
                mteTriggerThresholdDeltaRising,
                mteTriggerThresholdDeltaFalling,
                mteTriggerThresholdRisingEventOwner,
                mteTriggerThresholdRisingEvent,
                mteTriggerThresholdFallingEventOwner,
                mteTriggerThresholdFallingEvent,
                mteTriggerThresholdDeltaRisingEventOwner,
                mteTriggerThresholdDeltaRisingEvent,
                mteTriggerThresholdDeltaFallingEventOwner,
                mteTriggerThresholdDeltaFallingEvent
        }
        STATUS current
        DESCRIPTION
                "Event triggers."
        ::= { dismanEventMIBGroups 2 }

dismanEventObjectsGroup OBJECT-GROUP
        OBJECTS {
                mteObjectsID,
                mteObjectsIDWildcard,
                mteObjectsEntryStatus
        }
        STATUS current
        DESCRIPTION
                "Supplemental objects."
        ::= { dismanEventMIBGroups 3 }

dismanEventEventGroup OBJECT-GROUP
        OBJECTS {
                mteEventFailures,
                mteEventComment,
                mteEventActions,
                mteEventEnabled,
                mteEventEntryStatus,
                mteEventNotification,
                mteEventNotificationObjectsOwner,
                mteEventNotificationObjects,
                mteEventSetObject,
                mteEventSetObjectWildcard,
                mteEventSetValue,
                mteEventSetTargetTag,
                mteEventSetContextName,
                mteEventSetContextNameWildcard
        }
        STATUS current
        DESCRIPTION
                "Events."
        ::= { dismanEventMIBGroups 4 }

dismanEventNotificationObjectGroup OBJECT-GROUP
        OBJECTS {
                mteHotTrigger,
                mteHotTargetName,
                mteHotContextName,
                mteHotOID,
                mteHotValue,
                mteFailedReason
        }
        STATUS current
        DESCRIPTION
                "Notification objects."
        ::= { dismanEventMIBGroups 5 }

dismanEventNotificationGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
                mteTriggerFired,
                mteTriggerRising,
                mteTriggerFalling,
                mteTriggerFailure,
                mteEventSetFailure
        }
        STATUS current
        DESCRIPTION
                "Notifications."
        ::= { dismanEventMIBGroups 6 }

END
share/snmp/mibs/DISMAN-SCRIPT-MIB.txt000064400000175467150553041300012720 0ustar00DISMAN-SCRIPT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Integer32, Unsigned32, mib-2
        FROM SNMPv2-SMI

    RowStatus, TimeInterval, DateAndTime, StorageType, DisplayString
        FROM SNMPv2-TC

    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF

    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB;

scriptMIB MODULE-IDENTITY
    LAST-UPDATED "200108210000Z"
    ORGANIZATION "IETF Distributed Management Working Group"
    CONTACT-INFO
        "WG EMail:  disman@dorothy.bmc.com
         Subscribe: disman-request@dorothy.bmc.com

         Chair:     Randy Presuhn
                    BMC Software, Inc.

         Postal:    Office 1-3141
                    2141 North First Street
                    San Jose,  California 95131
                    USA
         EMail:     rpresuhn@bmc.com
         Phone:     +1 408 546-1006

         Editor:    David B. Levi
                    Nortel Networks
         Postal:    4401 Great America Parkway
                    Santa Clara, CA 95052-8185
                    USA
         EMail:     dlevi@nortelnetworks.com
         Phone:     +1 423 686 0432

         Editor:    Juergen Schoenwaelder
                    TU Braunschweig
         Postal:    Bueltenweg 74/75
                    38106 Braunschweig
                    Germany
         EMail:     schoenw@ibr.cs.tu-bs.de
         Phone:     +49 531 391-3283"
    DESCRIPTION
        "This MIB module defines a set of objects that allow to
         delegate management scripts to distributed managers."
    REVISION    "200108210000Z"
    DESCRIPTION
        "Revised version, published as RFC 3165.

         This revision introduces several new objects: smScriptError,
         smScriptLastChange, smLaunchError, smLaunchLastChange,
         smLaunchRowExpireTime, smRunResultTime, and smRunErrorTime.

         The following existing objects were updated: the maximum
         value of smRunLifeTime now disables the timer, an
         autostart value was added to the smLaunchAdminStatus
         object, and a new expired state was added to the
         smLaunchOperStatus object.

         A new smScriptException notification has been added to
         support runtime error notifications.

         Created new conformance and compliance statements that
         take care of the new objects and notifications.

         Clarifications have been added in several places to remove
         ambiguities or contradictions that were discovered and
         reported by implementors."

    REVISION    "199902221800Z"
    DESCRIPTION
        "Initial version, published as RFC 2592."
    ::= { mib-2 64 }

--
-- The groups defined within this MIB module:
--

smObjects       OBJECT IDENTIFIER ::= { scriptMIB 1 }
smNotifications OBJECT IDENTIFIER ::= { scriptMIB 2 }
smConformance   OBJECT IDENTIFIER ::= { scriptMIB 3 }

--
-- Script language and language extensions.
--
-- This group defines tables which list the languages and the
-- language extensions supported by a Script MIB implementation.
-- Languages are uniquely identified by object identifier values.
--

smLangTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmLangEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists supported script languages."
    ::= { smObjects 1 }

smLangEntry OBJECT-TYPE
    SYNTAX      SmLangEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular language."
    INDEX { smLangIndex }
    ::= { smLangTable 1 }

SmLangEntry ::= SEQUENCE {
    smLangIndex         Integer32,
    smLangLanguage      OBJECT IDENTIFIER,
    smLangVersion       SnmpAdminString,
    smLangVendor        OBJECT IDENTIFIER,
    smLangRevision      SnmpAdminString,
    smLangDescr         SnmpAdminString
}

smLangIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally arbitrary, but unique identifier associated
         with this language entry.

         The value is expected to remain constant at least from one
         re-initialization of the entity's network management system
         to the next re-initialization.

         Note that the data type and the range of this object must
         be consistent with the definition of smScriptLanguage."
    ::= { smLangEntry 1 }

smLangLanguage OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The globally unique identification of the language."
    ::= { smLangEntry 2 }

smLangVersion OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The version number of the language. The zero-length string
         shall be used if the language does not have a version
         number.

         It is suggested that the version number consist of one or
         more decimal numbers separated by dots, where the first
         number is called the major version number."
    ::= { smLangEntry 3 }

smLangVendor OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An object identifier which identifies the vendor who
         provides the implementation of the language. This object
         identifier SHALL point to the object identifier directly
         below the enterprise object identifier {1 3 6 1 4 1}
         allocated for the vendor. The value must be the object
         identifier {0 0} if the vendor is not known."
    ::= { smLangEntry 4 }

smLangRevision OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The version number of the language implementation.
         The value of this object must be an empty string if
         version number of the implementation is unknown.

         It is suggested that the value consist of one or more
         decimal numbers separated by dots, where the first
         number is called the major version number."
    ::= { smLangEntry 5 }

smLangDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A textual description of the language."
    ::= { smLangEntry 6 }

smExtsnTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmExtsnEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists supported language extensions."
    ::= { smObjects 2 }

smExtsnEntry OBJECT-TYPE
    SYNTAX      SmExtsnEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular language extension."
    INDEX { smLangIndex, smExtsnIndex }
    ::= { smExtsnTable 1 }

SmExtsnEntry ::= SEQUENCE {
    smExtsnIndex        Integer32,
    smExtsnExtension    OBJECT IDENTIFIER,
    smExtsnVersion      SnmpAdminString,
    smExtsnVendor       OBJECT IDENTIFIER,
    smExtsnRevision     SnmpAdminString,
    smExtsnDescr        SnmpAdminString
}

smExtsnIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally arbitrary, but unique identifier associated
         with this language extension entry.

         The value is expected to remain constant at least from one
         re-initialization of the entity's network management system
         to the next re-initialization."
    ::= { smExtsnEntry 1}

smExtsnExtension OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The globally unique identification of the language
         extension."
    ::= { smExtsnEntry 2 }

smExtsnVersion OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The version number of the language extension.
         It is suggested that the version number consist of one or
         more decimal numbers separated by dots, where the first
         number is called the major version number."
    ::= { smExtsnEntry 3 }

smExtsnVendor OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An object identifier which identifies the vendor who
         provides the implementation of the extension. The
         object identifier value should point to the OID node
         directly below the enterprise OID {1 3 6 1 4 1}
         allocated for the vendor. The value must by the object
         identifier {0 0} if the vendor is not known."
    ::= { smExtsnEntry 4 }

smExtsnRevision OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The version number of the extension implementation.
         The value of this object must be an empty string if
         version number of the implementation is unknown.

         It is suggested that the value consist of one or more
         decimal numbers separated by dots, where the first
         number is called the major version number."
    ::= { smExtsnEntry 5 }

smExtsnDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A textual description of the language extension."
    ::= { smExtsnEntry 6 }

--
-- Scripts known by the Script MIB implementation.
--
-- This group defines a table which lists all known scripts.
-- Scripts can be added and removed through manipulation of the
-- smScriptTable.
--

smScriptObjects OBJECT IDENTIFIER ::= { smObjects 3 }

smScriptTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmScriptEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists and describes locally known scripts."
    ::= { smScriptObjects 1 }

smScriptEntry OBJECT-TYPE
    SYNTAX      SmScriptEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular script. Every script that
         is stored in non-volatile memory is required to appear in
         this script table."
    INDEX { smScriptOwner, smScriptName }
    ::= { smScriptTable 1 }

SmScriptEntry ::= SEQUENCE {
    smScriptOwner       SnmpAdminString,
    smScriptName        SnmpAdminString,
    smScriptDescr       SnmpAdminString,
    smScriptLanguage    Integer32,
    smScriptSource      DisplayString,
    smScriptAdminStatus INTEGER,
    smScriptOperStatus  INTEGER,
    smScriptStorageType StorageType,
    smScriptRowStatus   RowStatus,
    smScriptError       SnmpAdminString,
    smScriptLastChange  DateAndTime
}

smScriptOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The manager who owns this row in the smScriptTable."
    ::= { smScriptEntry 1 }

smScriptName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally-unique, administratively assigned name for this
         script. This object allows an smScriptOwner to have multiple
         entries in the smScriptTable.

         This value of this object may be used to derive the name
         (e.g. a file name) which is used by the Script MIB
         implementation to access the script in non-volatile
         storage. The details of this mapping are implementation
         specific. However, the mapping needs to ensure that scripts
         created by different owners with the same script name do not
         map to the same name in non-volatile storage."
    ::= { smScriptEntry 2 }

smScriptDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A description of the purpose of the script."
    ::= { smScriptEntry 3 }

smScriptLanguage OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object type identifies an entry in the
         smLangTable which is used to execute this script.
         The special value 0 may be used by hard-wired scripts
         that can not be modified and that are executed by
         internal functions.

         Set requests to change this object are invalid if the
         value of smScriptOperStatus is `enabled' or `compiling'
         and will result in an inconsistentValue error.

         Note that the data type and the range of this object must
         be consistent with the definition of smLangIndex."
    ::= { smScriptEntry 4 }

smScriptSource OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object either contains a reference to the script
         source or an empty string. A reference must be given
         in the form of a Uniform Resource Locator (URL) as
         defined in RFC 2396. The allowed character sets and the
         encoding rules defined in RFC 2396 section 2 apply.

         When the smScriptAdminStatus object is set to `enabled',
         the Script MIB implementation will `pull' the script
         source from the URL contained in this object if the URL
         is not empty.

         An empty URL indicates that the script source is loaded
         from local storage. The script is read from the smCodeTable
         if the value of smScriptStorageType is volatile. Otherwise,
         the script is read from non-volatile storage.

         Note: This document does not mandate implementation of any
         specific URL scheme. An attempt to load a script from a
         nonsupported URL scheme will cause the smScriptOperStatus
         to report an `unknownProtocol' error.

         Set requests to change this object are invalid if the
         value of smScriptOperStatus is `enabled', `editing',
         `retrieving' or `compiling' and will result in an
         inconsistentValue error."
    DEFVAL { ''H }
    ::= { smScriptEntry 5 }

smScriptAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2),
                    editing(3)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the desired status of
         the script. See the definition of smScriptOperStatus for
         a description of the values.

         When the smScriptAdminStatus object is set to `enabled' and
         the smScriptOperStatus is `disabled' or one of the error
         states, the Script MIB implementation will `pull' the script
         source from the URL contained in the smScriptSource object
         if the URL is not empty."
    DEFVAL { disabled }
    ::= { smScriptEntry 6 }

smScriptOperStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2),
                    editing(3),
                    retrieving(4),
                    compiling(5),
                    noSuchScript(6),
                    accessDenied(7),
                    wrongLanguage(8),
                    wrongVersion(9),
                    compilationFailed(10),
                    noResourcesLeft(11),
                    unknownProtocol(12),
                    protocolFailure(13),
                    genericError(14)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The actual status of the script in the runtime system. The
         value of this object is only meaningful when the value of
         the smScriptRowStatus object is `active'.

         The smScriptOperStatus object may have the following values:

         - `enabled' indicates that the script is available and can
            be started by a launch table entry.

         - `disabled' indicates that the script can not be used.

         - `editing' indicates that the script can be modified in the
           smCodeTable.

         - `retrieving' indicates that the script is currently being
           loaded from non-volatile storage or a remote system.

         - `compiling' indicates that the script is currently being
           compiled by the runtime system.

         - `noSuchScript' indicates that the script does not exist
           at the smScriptSource.

         - `accessDenied' indicates that the script can not be loaded
           from the smScriptSource due to a lack of permissions.

         - `wrongLanguage' indicates that the script can not be
            loaded from the smScriptSource because of a language
            mismatch.

         - `wrongVersion' indicates that the script can not be loaded
           from the smScriptSource because of a language version
           mismatch.

         - `compilationFailed' indicates that the compilation failed.

         - `noResourcesLeft' indicates that the runtime system does
           not have enough resources to load the script.

         - `unknownProtocol' indicates that the script could not be
           loaded from the smScriptSource because the requested
           protocol is not supported.

         - `protocolFailure' indicates that the script could not be
           loaded from the smScriptSource because of a protocol
           failure.

         - `genericError' indicates that the script could not be

           loaded due to an error condition not listed above.

         The `retrieving' and `compiling' states are transient states
         which will either lead to one of the error states or the
         `enabled' state. The `disabled' and `editing' states are
         administrative states which are only reached by explicit
         management operations.

         All launch table entries that refer to this script table
         entry shall have an smLaunchOperStatus value of `disabled'
         when the value of this object is not `enabled'."
    DEFVAL { disabled }
    ::= { smScriptEntry 7 }

smScriptStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object defines whether this row and the script
         controlled by this row are kept in volatile storage and
         lost upon reboot or if this row is backed up by
         non-volatile or permanent storage.

         The storage type of this row always complies with the value
         of this entry if the value of the corresponding RowStatus
         object is `active'.

         However, the storage type of the script controlled by this
         row may be different, if the value of this entry is
         `non-volatile'. The script controlled by this row is written
         into local non-volatile storage if the following condition
         becomes true:

         (a) the URL contained in the smScriptSource object is empty
             and
         (b) the smScriptStorageType is `nonVolatile'
             and
         (c) the smScriptOperStatus is `enabled'

         Setting this object to `volatile' removes a script from
         non-volatile storage if the script controlled by this row
         has been in non-volatile storage before. Attempts to set
         this object to permanent will always fail with an
         inconsistentValue error.

         The value of smScriptStorageType is only meaningful if the
         value of the corresponding RowStatus object is `active'.

         If smScriptStorageType has the value permanent(4), then all
         objects whose MAX-ACCESS value is read-create must be
         writable, with the exception of the smScriptStorageType and
         smScriptRowStatus objects, which shall be read-only."
    DEFVAL { volatile }
    ::= { smScriptEntry 8 }

smScriptRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A control that allows entries to be added and removed from
         this table.

         Changing the smScriptRowStatus from `active' to
         `notInService' will remove the associated script from the
         runtime system.

         Deleting conceptual rows from this table may affect the
         deletion of other resources associated with this row. For
         example, a script stored in non-volatile storage may be
         removed from non-volatile storage.

         An entry may not exist in the `active' state unless all
         required objects in the entry have appropriate values. Rows
         that are not complete or not in service are not known by the
         script runtime system.

         Attempts to `destroy' a row or to set a row `notInService'
         while the smScriptOperStatus is `enabled' will result in an
         inconsistentValue error.

         Attempts to `destroy' a row or to set a row `notInService'
         where the value of the smScriptStorageType object is
         `permanent' or `readOnly' will result in an
         inconsistentValue error.

         The value of this object has no effect on whether other
         objects in this conceptual row can be modified."
    ::= { smScriptEntry 9 }

smScriptError OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object contains a descriptive error message if the

         transition into the operational status `enabled' failed.
         Implementations must reset the error message to a
         zero-length string when a new attempt to change the
         script status to `enabled' is started."
    DEFVAL { ''H }
    ::= { smScriptEntry 10 }

smScriptLastChange OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when this script table entry was last
         modified. The value '0000000000000000'H is returned if
         the script table entry has not yet been modified.

         Note that the resetting of smScriptError is not considered
         a change of the script table entry."
    DEFVAL { '0000000000000000'H }
    ::= { smScriptEntry 11 }

--
-- Access to script code via SNMP
--
-- The smCodeTable allows script code to be read and modified
-- via SNMP.
--

smCodeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmCodeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains the script code for scripts that are
         written via SNMP write operations."
    ::= { smScriptObjects 2 }

smCodeEntry OBJECT-TYPE
    SYNTAX      SmCodeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular fragment of a script."
    INDEX { smScriptOwner, smScriptName, smCodeIndex }
    ::= { smCodeTable 1 }

SmCodeEntry ::= SEQUENCE {
    smCodeIndex         Unsigned32,
    smCodeText          OCTET STRING,
    smCodeRowStatus     RowStatus
}

smCodeIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index value identifying this code fragment."
    ::= { smCodeEntry 1 }

smCodeText OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (1..1024))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The code that makes up a fragment of a script. The format
         of this code fragment depends on the script language which
         is identified by the associated smScriptLanguage object."
    ::= { smCodeEntry 2 }

smCodeRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A control that allows entries to be added and removed from
         this table.

         The value of this object has no effect on whether other
         objects in this conceptual row can be modified."
    ::= { smCodeEntry 3 }

--
-- Script execution.
--
-- This group defines tables which allow script execution to be
-- initiated, suspended, resumed, and terminated.  It also provides
-- a mechanism for keeping a history of recent script executions
-- and their results.
--

smRunObjects OBJECT IDENTIFIER ::= { smObjects 4 }

smLaunchTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmLaunchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists and describes scripts that are ready
         to be executed together with their parameters."
    ::= { smRunObjects 1 }

smLaunchEntry OBJECT-TYPE
    SYNTAX      SmLaunchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular executable script."
    INDEX { smLaunchOwner, smLaunchName }
    ::= { smLaunchTable 1 }

SmLaunchEntry ::= SEQUENCE {
    smLaunchOwner               SnmpAdminString,
    smLaunchName                SnmpAdminString,
    smLaunchScriptOwner         SnmpAdminString,
    smLaunchScriptName          SnmpAdminString,
    smLaunchArgument            OCTET STRING,
    smLaunchMaxRunning          Unsigned32,
    smLaunchMaxCompleted        Unsigned32,
    smLaunchLifeTime            TimeInterval,
    smLaunchExpireTime          TimeInterval,
    smLaunchStart               Integer32,
    smLaunchControl             INTEGER,
    smLaunchAdminStatus         INTEGER,
    smLaunchOperStatus          INTEGER,
    smLaunchRunIndexNext        Integer32,
    smLaunchStorageType         StorageType,
    smLaunchRowStatus           RowStatus,
    smLaunchError               SnmpAdminString,
    smLaunchLastChange          DateAndTime,
    smLaunchRowExpireTime       TimeInterval
}

smLaunchOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The manager who owns this row in the smLaunchTable. Every
         instance of a running script started from a particular entry
         in the smLaunchTable (i.e. entries in the smRunTable) will
         be owned by the same smLaunchOwner used to index the entry
         in the smLaunchTable. This owner is not necessarily the same
         as the owner of the script itself (smLaunchScriptOwner)."
    ::= { smLaunchEntry 1 }

smLaunchName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally-unique, administratively assigned name for this
         launch table entry. This object allows an smLaunchOwner to
         have multiple entries in the smLaunchTable. The smLaunchName
         is an arbitrary name that must be different from any other
         smLaunchTable entries with the same smLaunchOwner but can be
         the same as other entries in the smLaunchTable with
         different smLaunchOwner values. Note that the value of
         smLaunchName is not related in any way to the name of the
         script being launched."
    ::= { smLaunchEntry 2 }

smLaunchScriptOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object in combination with the value of
         smLaunchScriptName identifies the script that can be
         launched from this smLaunchTable entry. Attempts to write
         this object will fail with an inconsistentValue error if
         the value of smLaunchOperStatus is `enabled'."
    ::= { smLaunchEntry 3 }

smLaunchScriptName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object in combination with the value of
         the smLaunchScriptOwner identifies the script that can be
         launched from this smLaunchTable entry. The zero-length
         string may be used to point to a non-existing script.

         Attempts to write this object will fail with an
         inconsistentValue error if the value of smLaunchOperStatus
         is `enabled'."
    DEFVAL { ''H }
    ::= { smLaunchEntry 4 }

smLaunchArgument OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The argument supplied to the script. When a script is
         invoked, the value of this object is used to initialize
         the smRunArgument object."
    DEFVAL { ''H }
    ::= { smLaunchEntry 5 }

smLaunchMaxRunning OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The maximum number of concurrently running scripts that may
         be invoked from this entry in the smLaunchTable. Lowering
         the current value of this object does not affect any scripts
         that are already executing."
    DEFVAL { 1 }
    ::= { smLaunchEntry 6 }

smLaunchMaxCompleted OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The maximum number of finished scripts invoked from this
         entry in the smLaunchTable allowed to be retained in the
         smRunTable. Whenever the value of this object is changed
         and whenever a script terminates, entries in the smRunTable
         are deleted if necessary until the number of completed
         scripts is smaller than the value of this object. Scripts
         whose smRunEndTime value indicates the oldest completion
         time are deleted first."
    DEFVAL { 1 }
    ::= { smLaunchEntry 7 }

smLaunchLifeTime OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "centi-seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The default maximum amount of time a script launched
         from this entry may run. The value of this object is used
         to initialize the smRunLifeTime object when a script is
         launched. Changing the value of an smLaunchLifeTime
         instance does not affect scripts previously launched from

         this entry."
    DEFVAL { 360000 }
    ::= { smLaunchEntry 8 }

smLaunchExpireTime OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "centi-seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The default maximum amount of time information about a
         script launched from this entry is kept in the smRunTable
         after the script has completed execution.  The value of
         this object is used to initialize the smRunExpireTime
         object when a script is launched. Changing the value of an
         smLaunchExpireTime instance does not affect scripts
         previously launched from this entry."
    DEFVAL { 360000 }
    ::= { smLaunchEntry 9 }

smLaunchStart OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object is used to start the execution of scripts.
         When retrieved, the value will be the value of smRunIndex
         for the last script that started execution by manipulating
         this object. The value will be zero if no script started
         execution yet.

         A script is started by setting this object to an unused
         smRunIndex value. A new row in the smRunTable will be
         created which is indexed by the value supplied by the
         set-request in addition to the value of smLaunchOwner and
         smLaunchName. An unused value can be obtained by reading
         the smLaunchRunIndexNext object.

         Setting this object to the special value 0 will start
         the script with a self-generated smRunIndex value. The
         consequence is that the script invoker has no reliable
         way to determine the smRunIndex value for this script
         invocation and that the invoker has therefore no way
         to obtain the results from this script invocation. The
         special value 0 is however useful for scheduled script
         invocations.

         If this object is set, the following checks must be

         performed:

         1) The value of the smLaunchOperStatus object in this
            entry of the smLaunchTable must be `enabled'.
         2) The values of smLaunchScriptOwner and
            smLaunchScriptName of this row must identify an
            existing entry in the smScriptTable.
         3) The value of smScriptOperStatus of this entry must
            be `enabled'.
         4) The principal performing the set operation must have
            read access to the script. This must be checked by
            calling the isAccessAllowed abstract service interface
            defined in RFC 2271 on the row in the smScriptTable
            identified by smLaunchScriptOwner and smLaunchScriptName.
            The isAccessAllowed abstract service interface must be
            called on all columnar objects in the smScriptTable with
            a MAX-ACCESS value different than `not-accessible'. The
            test fails as soon as a call indicates that access is
            not allowed.
         5) If the value provided by the set operation is not 0,
            a check must be made that the value is currently not
            in use. Otherwise, if the value provided by the set
            operation is 0, a suitable unused value must be
            generated.
         6) The number of currently executing scripts invoked
            from this smLaunchTable entry must be less than
            smLaunchMaxRunning.

         Attempts to start a script will fail with an
         inconsistentValue error if one of the checks described
         above fails.

         Otherwise, if all checks have been passed, a new entry
         in the smRunTable will be created indexed by smLaunchOwner,
         smLaunchName and the new value for smRunIndex. The value
         of smLaunchArgument will be copied into smRunArgument,
         the value of smLaunchLifeTime will be copied to
         smRunLifeTime, and the value of smLaunchExpireTime
         will be copied to smRunExpireTime.

         The smRunStartTime will be set to the current time and
         the smRunState will be set to `initializing' before the
         script execution is initiated in the appropriate runtime
         system.

         Note that the data type and the range of this object must
         be consistent with the smRunIndex object. Since this
         object might be written from the scheduling MIB, the

         data type Integer32 rather than Unsigned32 is used."
    DEFVAL { 0 }
    ::= { smLaunchEntry 10 }

smLaunchControl OBJECT-TYPE
    SYNTAX      INTEGER {
                    abort(1),
                    suspend(2),
                    resume(3),
                    nop(4)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object is used to request a state change for all
         running scripts in the smRunTable that were started from
         this row in the smLaunchTable.

         Setting this object to abort(1), suspend(2) or resume(3)
         will set the smRunControl object of all applicable rows
         in the smRunTable to abort(1), suspend(2) or resume(3)
         respectively. The phrase `applicable rows' means the set of
         rows which were created from this entry in the smLaunchTable
         and whose value of smRunState allows the corresponding
         state change as described in the definition of the
         smRunControl object. Setting this object to nop(4) has no
         effect.

         Attempts to set this object lead to an inconsistentValue
         error only if all implicated sets on all the applicable
         rows lead to inconsistentValue errors. It is not allowed
         to return an inconsistentValue error if at least one state
         change on one of the applicable rows was successful."
    DEFVAL { nop }
    ::= { smLaunchEntry 11 }

smLaunchAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2),
                    autostart(3)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the desired status of
         this launch table entry. The values enabled(1) and
         autostart(3) both indicate that the launch table entry

         should transition into the operational enabled(1) state as
         soon as the associated script table entry is enabled(1).

         The value autostart(3) further indicates that the script
         is started automatically by conceptually writing the
         value 0 into the associated smLaunchStart object during
         the transition from the `disabled' into the `enabled'
         operational state. This is useful for scripts that are
         to be launched on system start-up."
    DEFVAL { disabled }
    ::= { smLaunchEntry 12 }

smLaunchOperStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    enabled(1),
                    disabled(2),
                    expired(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the actual status of
         this launch table entry.  The smLaunchOperStatus object
         may have the following values:

         - `enabled' indicates that the launch table entry is
           available and can be used to start scripts.

         - `disabled' indicates that the launch table entry can
           not be used to start scripts.

         - `expired' indicates that the launch table entry can
           not be used to start scripts and will disappear as
           soon as all smRunTable entries associated with this
           launch table entry have disappeared.

         The value `enabled' requires that the smLaunchRowStatus
         object is active. The value `disabled' requires that there
         are no entries in the smRunTable associated with this
         smLaunchTable entry."
    DEFVAL { disabled }
    ::= { smLaunchEntry 13 }

smLaunchRunIndexNext OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This variable is used for creating rows in the smRunTable.
         The value of this variable is a currently unused value
         for smRunIndex, which can be written into the smLaunchStart
         object associated with this row to launch a script.

         The value returned when reading this variable must be unique
         for the smLaunchOwner and smLaunchName associated with this
         row. Subsequent attempts to read this variable must return
         different values.

         This variable will return the special value 0 if no new rows
         can be created.

         Note that the data type and the range of this object must be
         consistent with the definition of smRunIndex."
    ::= { smLaunchEntry 14 }

smLaunchStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object defines if this row is kept in volatile storage
         and lost upon reboot or if this row is backed up by stable
         storage.

         The value of smLaunchStorageType is only meaningful if the
         value of the corresponding RowStatus object is active.

         If smLaunchStorageType has the value permanent(4), then all
         objects whose MAX-ACCESS value is read-create must be
         writable, with the exception of the smLaunchStorageType and
         smLaunchRowStatus objects, which shall be read-only."
    DEFVAL { volatile }
    ::= { smLaunchEntry 15 }

smLaunchRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A control that allows entries to be added and removed from
         this table.

         Attempts to `destroy' a row or to set a row `notInService'
         while the smLaunchOperStatus is `enabled' will result in
         an inconsistentValue error.

         Attempts to `destroy' a row or to set a row `notInService'
         where the value of the smLaunchStorageType object is
         `permanent' or `readOnly' will result in an
         inconsistentValue error.

         The value of this object has no effect on whether other
         objects in this conceptual row can be modified."
    ::= { smLaunchEntry 16 }

smLaunchError OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object contains a descriptive error message if an
         attempt to launch a script fails. Implementations must reset
         the error message to a zero-length string when a new attempt
         to launch a script is started."
    DEFVAL { ''H }
    ::= { smLaunchEntry 17 }

smLaunchLastChange OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when this launch table entry was last
         modified. The value '0000000000000000'H is returned if
         the launch table entry has not yet been modified.

         Note that a change of smLaunchStart, smLaunchControl,
         smLaunchRunIndexNext, smLaunchRowExpireTime, or the
         resetting of smLaunchError is not considered a change
         of this launch table entry."
    DEFVAL { '0000000000000000'H }
    ::= { smLaunchEntry 18 }

smLaunchRowExpireTime OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "centi-seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The value of this object specifies how long this row remains
         in the `enabled' or `disabled' operational state. The value
         reported by this object ticks backwards. When the value
         reaches 0, it stops ticking backward and the row is
         deleted if there are no smRunTable entries associated with

         this smLaunchTable entry. Otherwise, the smLaunchOperStatus
         changes to `expired' and the row deletion is deferred
         until there are no smRunTable entries associated with this
         smLaunchTable entry.

         The smLaunchRowExpireTime will not tick backwards if it is
         set to its maximum value (2147483647). In other words,
         setting this object to its maximum value turns the timer
         off.

         The value of this object may be set in order to increase
         or reduce the remaining time that the launch table entry
         may be used. Setting the value to 0 will cause an immediate
         row deletion or transition into the `expired' operational
         state.

         It is not possible to set this object while the operational
         status is `expired'. Attempts to modify this object while
         the operational status is `expired' leads to an
         inconsistentValue error.

         Note that the timer ticks backwards independent of the
         operational state of the launch table entry."
    DEFVAL { 2147483647 }
    ::= { smLaunchEntry 19 }

smRunTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SmRunEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists and describes scripts that are currently
         running or have been running in the past."
    ::= { smRunObjects 2 }

smRunEntry OBJECT-TYPE
    SYNTAX      SmRunEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry describing a particular running or finished
         script."
    INDEX { smLaunchOwner, smLaunchName, smRunIndex }
    ::= { smRunTable 1 }

SmRunEntry ::= SEQUENCE {
    smRunIndex          Integer32,
    smRunArgument       OCTET STRING,
    smRunStartTime      DateAndTime,
    smRunEndTime        DateAndTime,
    smRunLifeTime       TimeInterval,
    smRunExpireTime     TimeInterval,
    smRunExitCode       INTEGER,
    smRunResult         OCTET STRING,
    smRunControl        INTEGER,
    smRunState          INTEGER,
    smRunError          SnmpAdminString,
    smRunResultTime     DateAndTime,
    smRunErrorTime      DateAndTime
}

smRunIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally arbitrary, but unique identifier associated
         with this running or finished script. This value must be
         unique for all rows in the smRunTable with the same
         smLaunchOwner and smLaunchName.

         Note that the data type and the range of this object must
         be consistent with the definition of smLaunchRunIndexNext
         and smLaunchStart."
    ::= { smRunEntry 1 }

smRunArgument OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The argument supplied to the script when it started."
    DEFVAL { ''H }
    ::= { smRunEntry 2 }

smRunStartTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when the execution started. The value
         '0000000000000000'H is returned if the script has not
         started yet."
    DEFVAL { '0000000000000000'H }
    ::= { smRunEntry 3 }

smRunEndTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when the execution terminated. The value
         '0000000000000000'H is returned if the script has not
         terminated yet."
    DEFVAL { '0000000000000000'H }
    ::= { smRunEntry 4 }

smRunLifeTime OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "centi-seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object specifies how long the script can execute.
         This object returns the remaining time that the script
         may run. The object is initialized with the value of the
         associated smLaunchLifeTime object and ticks backwards.
         The script is aborted immediately when the value reaches 0.

         The value of this object may be set in order to increase or
         reduce the remaining time that the script may run. Setting
         this value to 0 will abort script execution immediately,
         and, if the value of smRunExpireTime is also 0, will remove
         this entry from the smRunTable once it has terminated.

         If smRunLifeTime is set to its maximum value (2147483647),
         either by a set operation or by its initialization from the
         smLaunchLifeTime object, then it will not tick backwards.
         A running script with a maximum smRunLifeTime value will
         thus never be terminated with a `lifeTimeExceeded' exit
         code.

         The value of smRunLifeTime reflects the real-time execution
         time as seen by the outside world. The value of this object
         will always be 0 for a script that finished execution, that
         is smRunState has the value `terminated'.

         The value of smRunLifeTime does not change while a script
         is suspended, that is smRunState has the value `suspended'.
         Note that this does not affect set operations. It is legal
         to modify smRunLifeTime via set operations while a script
         is suspended."
    ::= { smRunEntry 5 }

smRunExpireTime OBJECT-TYPE
    SYNTAX      TimeInterval
    UNITS       "centi-seconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this object specifies how long this row can
         exist in the smRunTable after the script has terminated.
         This object returns the remaining time that the row may
         exist before it is aged out. The object is initialized with
         the value of the associated smLaunchExpireTime object and
         ticks backwards. The entry in the smRunTable is destroyed
         when the value reaches 0 and the smRunState has the value
         `terminated'.

         The value of this object may be set in order to increase or
         reduce the remaining time that the row may exist.  Setting
         the value to 0 will destroy this entry as soon as the
         smRunState has the value `terminated'."
    ::= { smRunEntry 6 }

smRunExitCode OBJECT-TYPE
    SYNTAX      INTEGER {
                    noError(1),
                    halted(2),
                    lifeTimeExceeded(3),
                    noResourcesLeft(4),
                    languageError(5),
                    runtimeError(6),
                    invalidArgument(7),
                    securityViolation(8),
                    genericError(9)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the reason why a
         script finished execution. The smRunExitCode code may have
         one of the following values:

         - `noError', which indicates that the script completed
            successfully without errors;

         - `halted', which indicates that the script was halted
            by a request from an authorized manager;

         - `lifeTimeExceeded', which indicates that the script
            exited because a time limit was exceeded;

         - `noResourcesLeft', which indicates that the script
            exited because it ran out of resources (e.g. memory);

         - `languageError', which indicates that the script exited
            because of a language error (e.g. a syntax error in an
            interpreted language);

         - `runtimeError', which indicates that the script exited
            due to a runtime error (e.g. a division by zero);

         - `invalidArgument', which indicates that the script could
            not be run because of invalid script arguments;

         - `securityViolation', which indicates that the script
            exited due to a security violation;

         - `genericError', which indicates that the script exited
            for an unspecified reason.

         If the script has not yet begun running, or is currently
         running, the value will be `noError'."
    DEFVAL { noError }
    ::= { smRunEntry 7 }

smRunResult OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The result value produced by the running script. Note that
         the result may change while the script is executing."
    DEFVAL { ''H }
    ::= { smRunEntry 8 }

smRunControl OBJECT-TYPE
    SYNTAX      INTEGER {
                    abort(1),
                    suspend(2),
                    resume(3),
                    nop(4)
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the desired status of the
         script execution defined by this row.

         Setting this object to `abort' will abort execution if the

         value of smRunState is `initializing', `executing',
         `suspending', `suspended' or `resuming'. Setting this object
         to `abort' when the value of smRunState is `aborting' or
         `terminated', or if the implementation can determine that
         the attempt to abort the execution would fail, will result
         in an inconsistentValue error.

         Setting this object to `suspend' will suspend execution
         if the value of smRunState is `executing'. Setting this
         object to `suspend' will cause an inconsistentValue error
         if the value of smRunState is not `executing' or if the
         implementation can determine that the attempt to suspend
         the execution would fail.

         Setting this object to `resume' will resume execution
         if the value of smRunState is `suspending' or
         `suspended'. Setting this object to `resume' will cause an
         inconsistentValue error if the value of smRunState is
         not `suspended' or if the implementation can determine
         that the attempt to resume the execution would fail.

         Setting this object to nop(4) has no effect."
    DEFVAL { nop }
    ::= { smRunEntry 9 }

smRunState OBJECT-TYPE
    SYNTAX      INTEGER {
                    initializing(1),
                    executing(2),
                    suspending(3),
                    suspended(4),
                    resuming(5),
                    aborting(6),
                    terminated(7)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of this object indicates the script's execution
         state. If the script has been invoked but has not yet
         begun execution, the value will be `initializing'. If the
         script is running, the value will be `executing'.

         A running script which received a request to suspend
         execution first transitions into a temporary `suspending'
         state.  The temporary `suspending' state changes to
         `suspended' when the script has actually been suspended. The
         temporary `suspending' state changes back to `executing' if

         the attempt to suspend the running script fails.

         A suspended script which received a request to resume
         execution first transitions into a temporary `resuming'
         state. The temporary `resuming' state changes to `running'
         when the script has actually been resumed. The temporary
         `resuming' state changes back to `suspended' if the attempt
         to resume the suspended script fails.

         A script which received a request to abort execution but
         which is still running first transitions into a temporary
         `aborting' state.

         A script which has finished its execution is `terminated'."
    ::= { smRunEntry 10 }

smRunError OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object contains a descriptive error message if the
         script startup or execution raised an abnormal condition.
         An implementation must store a descriptive error message
         in this object if the script exits with the smRunExitCode
         `genericError'."
    DEFVAL { ''H }
    ::= { smRunEntry 11 }

smRunResultTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when the smRunResult was last updated.
         The value '0000000000000000'H is returned if smRunResult
         has not yet been updated after the creation of this
         smRunTable entry."
    DEFVAL { '0000000000000000'H }
    ::= { smRunEntry 12 }

smRunErrorTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date and time when the smRunError was last updated.
         The value '0000000000000000'H is returned if smRunError

         has not yet been updated after the creation of this
         smRunTable entry."
    DEFVAL { '0000000000000000'H }
    ::= { smRunEntry 13 }

--
-- Notifications. The definition of smTraps makes notification
-- registrations reversible (see STD 58, RFC 2578).
--

smTraps OBJECT IDENTIFIER ::= { smNotifications 0 }

smScriptAbort NOTIFICATION-TYPE
    OBJECTS     { smRunExitCode, smRunEndTime, smRunError }
    STATUS      current
    DESCRIPTION
        "This notification is generated whenever a running script
         terminates with an smRunExitCode unequal to `noError'."
    ::= { smTraps 1 }

smScriptResult NOTIFICATION-TYPE
    OBJECTS     { smRunResult }
    STATUS      current
    DESCRIPTION
        "This notification can be used by scripts to notify other
         management applications about results produced by the
         script.

         This notification is not automatically generated by the
         Script MIB implementation. It is the responsibility of
         the executing script to emit this notification where it
         is appropriate to do so."
    ::= { smTraps 2 }

smScriptException NOTIFICATION-TYPE
    OBJECTS     { smRunError }
    STATUS      current
    DESCRIPTION
        "This notification can be used by scripts to notify other
         management applications about script errors.

         This notification is not automatically generated by the
         Script MIB implementation. It is the responsibility of
         the executing script or the runtime system to emit this
         notification where it is appropriate to do so."
    ::= { smTraps 3 }

-- conformance information

smCompliances OBJECT IDENTIFIER ::= { smConformance 1 }
smGroups      OBJECT IDENTIFIER ::= { smConformance 2 }

-- compliance statements

smCompliance2 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for SNMP entities which implement
         the Script MIB."
    MODULE      -- this module
    MANDATORY-GROUPS {
            smLanguageGroup, smScriptGroup2, smLaunchGroup2,
            smRunGroup2, smNotificationsGroup2
    }
    GROUP   smCodeGroup
    DESCRIPTION
        "The smCodeGroup is mandatory only for those implementations
         that support the downloading of scripts via SNMP."
    OBJECT  smScriptSource
    MIN-ACCESS  read-only
    DESCRIPTION
        "The smScriptSource object is read-only for implementations
         that are not able to download script code from a URL."
    OBJECT smCodeText
    DESCRIPTION
        "A compliant implementation need only support write access to
         the smCodeText object only during row creation."
    OBJECT smLaunchArgument
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smLaunchArgument of 255 octets."
    OBJECT smRunArgument
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smRunArgument of 255 octets."
    OBJECT smRunResult
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smRunResult of 255 octets."
    OBJECT smRunState
    DESCRIPTION
        "A compliant implementation does not have to support script
         suspension and the smRunState `suspended'. Such an
         implementation will change into the `suspending' state
         when the smRunControl is set to `suspend' and remain in this
         state until smRunControl is set to `resume' or the script
         terminates."
    ::= { smCompliances 2 }

smLanguageGroup OBJECT-GROUP
    OBJECTS {
        smLangLanguage, smLangVersion,
        smLangVendor, smLangRevision,
        smLangDescr, smExtsnExtension,
        smExtsnVersion, smExtsnVendor,
        smExtsnRevision, smExtsnDescr
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about the
         capabilities of the scripting engine."
    ::= { smGroups 1 }

smScriptGroup2 OBJECT-GROUP
    OBJECTS {
        smScriptDescr, smScriptLanguage,
        smScriptSource, smScriptAdminStatus,
        smScriptOperStatus, smScriptStorageType,
        smScriptRowStatus, smScriptError,
        smScriptLastChange
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about
         installed scripts."
    ::= { smGroups 7 }

smCodeGroup OBJECT-GROUP
    OBJECTS {
        smCodeText, smCodeRowStatus
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects used to download or modify scripts
         by using SNMP set requests."
    ::= { smGroups 3 }

smLaunchGroup2 OBJECT-GROUP
    OBJECTS {
        smLaunchScriptOwner, smLaunchScriptName,
        smLaunchArgument, smLaunchMaxRunning,
        smLaunchMaxCompleted, smLaunchLifeTime,
        smLaunchExpireTime, smLaunchStart,
        smLaunchControl, smLaunchAdminStatus,
        smLaunchOperStatus, smLaunchRunIndexNext,
        smLaunchStorageType, smLaunchRowStatus,
        smLaunchError, smLaunchLastChange,
        smLaunchRowExpireTime
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about scripts
         that can be launched."
    ::= { smGroups 8 }

smRunGroup2 OBJECT-GROUP
    OBJECTS {
        smRunArgument, smRunStartTime,
        smRunEndTime, smRunLifeTime,
        smRunExpireTime, smRunExitCode,
        smRunResult, smRunState,
        smRunControl, smRunError,
        smRunResultTime, smRunErrorTime
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about running
         scripts."
    ::= { smGroups 9 }

smNotificationsGroup2 NOTIFICATION-GROUP
    NOTIFICATIONS {
        smScriptAbort,
        smScriptResult,
        smScriptException
    }
    STATUS      current
    DESCRIPTION
        "The notifications emitted by the Script MIB."
    ::= { smGroups 10 }

--
-- Deprecated compliance and conformance group definitions
-- from RFC 2592.
--

smCompliance MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "The compliance statement for SNMP entities which implement
         the Script MIB."
    MODULE      -- this module
    MANDATORY-GROUPS {

            smLanguageGroup, smScriptGroup, smLaunchGroup, smRunGroup
    }
    GROUP   smCodeGroup
    DESCRIPTION
        "The smCodeGroup is mandatory only for those implementations
         that support the downloading of scripts via SNMP."
    OBJECT  smScriptSource
    MIN-ACCESS  read-only
    DESCRIPTION
        "The smScriptSource object is read-only for implementations
         that are not able to download script code from a URL."
    OBJECT smCodeText
    DESCRIPTION
        "A compliant implementation need only support write access
         to the smCodeText object during row creation."
    OBJECT smLaunchArgument
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smLaunchArgument of 255 octets."
    OBJECT smRunArgument
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smRunArgument of 255 octets."
    OBJECT smRunResult
    DESCRIPTION
        "A compliant implementation has to support a minimum size
         for smRunResult of 255 octets."
    OBJECT smRunState
    DESCRIPTION
        "A compliant implementation does not have to support script
         suspension and the smRunState `suspended'. Such an
         implementation will change into the `suspending' state
         when the smRunControl is set to `suspend' and remain in this
         state until smRunControl is set to `resume' or the script
         terminates."
    ::= { smCompliances 1 }

smScriptGroup OBJECT-GROUP
    OBJECTS {
        smScriptDescr, smScriptLanguage,
        smScriptSource, smScriptAdminStatus,
        smScriptOperStatus, smScriptStorageType,
        smScriptRowStatus
    }
    STATUS      deprecated
    DESCRIPTION
        "A collection of objects providing information about
         installed scripts."
    ::= { smGroups 2 }

smLaunchGroup OBJECT-GROUP
    OBJECTS {
        smLaunchScriptOwner, smLaunchScriptName,
        smLaunchArgument, smLaunchMaxRunning,
        smLaunchMaxCompleted, smLaunchLifeTime,
        smLaunchExpireTime, smLaunchStart,
        smLaunchControl, smLaunchAdminStatus,
        smLaunchOperStatus, smLaunchRunIndexNext,
        smLaunchStorageType, smLaunchRowStatus
    }
    STATUS      deprecated
    DESCRIPTION
        "A collection of objects providing information about scripts
         that can be launched."
    ::= { smGroups 4 }

smRunGroup OBJECT-GROUP
    OBJECTS {
        smRunArgument, smRunStartTime,
        smRunEndTime, smRunLifeTime,
        smRunExpireTime, smRunExitCode,
        smRunResult, smRunState,
        smRunControl, smRunError
    }
    STATUS      deprecated
    DESCRIPTION
        "A collection of objects providing information about running
         scripts."
    ::= { smGroups 5 }

smNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        smScriptAbort,
        smScriptResult
    }
    STATUS      deprecated
    DESCRIPTION
        "The notifications emitted by the Script MIB."
    ::= { smGroups 6 }

END
share/snmp/mibs/RFC-1215.txt000064400000002226150553041300011314 0ustar00
RFC-1215 DEFINITIONS ::= BEGIN

-- This  module is a empty module.  It has been created solely for the 
-- purpose of allowing other modules to correctly import the TRAP-TYPE 
-- clause from RFC-1215 where it should be imported from.  It's a
-- built in type in the UCD-SNMP code, and in fact RFC-1215 doesn't
-- actually define a mib at all; it only defines macros.  However,
-- importing the TRAP-TYPE is conventionally done from an import
-- clause pointing to RFC-1215.
--
--   Wes 7/17/98

TRAP-TYPE MACRO ::=
BEGIN
    TYPE NOTATION ::= "ENTERPRISE" value
                      (enterprise OBJECT IDENTIFIER)
                      VarPart
                      DescrPart
                      ReferPart
    VALUE NOTATION ::= value (VALUE INTEGER)
    VarPart ::=
               "VARIABLES" "{" VarTypes "}"
               | empty
    VarTypes ::=
               VarType | VarTypes "," VarType
    VarType ::=
               value (vartype ObjectName)
    DescrPart ::=
               "DESCRIPTION" value (description DisplayString)
               | empty
    ReferPart ::=
               "REFERENCE" value (reference DisplayString)
               | empty
END
 

END
share/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt000064400000051155150553041300013525 0ustar00SNMP-USM-DH-OBJECTS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    -- OBJECT-IDENTITY,
    experimental, Integer32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    usmUserEntry
        FROM SNMP-USER-BASED-SM-MIB
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB;

snmpUsmDHObjectsMIB MODULE-IDENTITY
    LAST-UPDATED "200003060000Z"  -- 6 March 2000, Midnight
    ORGANIZATION "Excite@Home"
    CONTACT-INFO "Author: Mike StJohns
                  Postal: Excite@Home
                          450 Broadway
                          Redwood City, CA 94063
                  Email:  stjohns@corp.home.net
                  Phone:  +1-650-556-5368"
    DESCRIPTION
        "The management information definitions for providing forward
    secrecy for key changes for the usmUserTable, and for providing a
    method for 'kickstarting' access to the agent via a Diffie-Helman
    key agreement."

    REVISION     "200003060000Z"
    DESCRIPTION
       "Initial version published as RFC 2786."
    ::= { experimental 101 }  -- IANA DHKEY-CHANGE 101

-- Administrative assignments

usmDHKeyObjects OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 1 }
usmDHKeyConformance OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 2 }

-- Textual conventions

DHKeyChange ::=         TEXTUAL-CONVENTION
    STATUS              current
    DESCRIPTION
        "Upon initialization, or upon creation of a row containing an
    object of this type, and after any successful SET of this value, a
    GET of this value returns 'y' where y = g^xa MOD p, and where g is
    the base from usmDHParameters, p is the prime from
    usmDHParameters, and xa is a new random integer selected by the
    agent in the interval 2^(l-1) <= xa < 2^l < p-1.  'l' is the
    optional privateValueLength from usmDHParameters in bits.  If 'l'
    is omitted, then xa (and xr below) is selected in the interval 0
    <= xa < p-1.  y is expressed as an OCTET STRING 'PV' of length 'k'
    which satisfies

              k
        y =  SUM   2^(8(k-i)) PV'i
             i=1

        where PV1,...,PVk are the octets of PV from first to last, and
        where PV1 <> 0.

    A successful SET consists of the value 'y' expressed as an OCTET
    STRING as above concatenated with the value 'z'(expressed as an
    OCTET STRING in the same manner as y) where z = g^xr MOD p, where
    g, p and l are as above, and where xr is a new random integer
    selected by the manager in the interval 2^(l-1) <= xr < 2^l <
    p-1. A SET to an object of this type will fail with the error
    wrongValue if the current 'y' does not match the 'y' portion of
    the value of the varbind for the object. (E.g. GET yout, SET
    concat(yin, z), yout <> yin).

    Note that the private values xa and xr are never transmitted from
    manager to device or vice versa, only the values y and z.
    Obviously, these values must be retained until a successful SET on
    the associated object.

    The shared secret 'sk' is calculated at the agent as sk = z^xa MOD
    p, and at the manager as sk = y^xr MOD p.

    Each object definition of this type MUST describe how to map from
    the shared secret 'sk' to the operational key value used by the
    protocols and operations related to the object.  In general, if n
    bits of key are required, the author suggests using the n
    right-most bits of the shared secret as the operational key value."
    REFERENCE
        "-- Diffie-Hellman Key-Agreement Standard, PKCS #3;
            RSA Laboratories, November 1993"
    SYNTAX              OCTET STRING

-- Diffie Hellman public values

usmDHPublicObjects      OBJECT IDENTIFIER ::= { usmDHKeyObjects 1 }

usmDHParameters OBJECT-TYPE
    SYNTAX  OCTET STRING
    MAX-ACCESS read-write
    STATUS  current
    DESCRIPTION
        "The public Diffie-Hellman parameters for doing a Diffie-Hellman
    key agreement for this device.  This is encoded as an ASN.1
    DHParameter per PKCS #3, section 9.  E.g.

        DHParameter ::= SEQUENCE {
           prime   INTEGER,   -- p
           base    INTEGER,   -- g
           privateValueLength  INTEGER OPTIONAL }

    Implementors are encouraged to use either the values from
    Oakley Group 1  or the values of from Oakley Group 2 as specified
    in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the
    default for this object.  Other values may be used, but the
    security properties of those values MUST be well understood and
    MUST meet the requirements of PKCS #3 for the selection of
    Diffie-Hellman primes.

        In addition, any time usmDHParameters changes, all values of
    type DHKeyChange will change and new random numbers MUST be
    generated by the agent for each DHKeyChange object."
    REFERENCE
        "-- Diffie-Hellman Key-Agreement Standard, PKCS #3,
            RSA Laboratories, November 1993
         -- The Internet Key Exchange, RFC 2409, November 1998,
            Sec 6.1, 6.2"
    ::= { usmDHPublicObjects 1 }

usmDHUserKeyTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF UsmDHUserKeyEntry
    MAX-ACCESS not-accessible
    STATUS  current
    DESCRIPTION
        "This table augments and extends the usmUserTable and provides
    4 objects which exactly mirror the objects in that table with the
    textual convention of 'KeyChange'.  This extension allows key
    changes to be done in a manner where the knowledge of the current
    secret plus knowledge of the key change data exchanges (e.g. via
    wiretapping)  will not reveal the new key."
    ::= { usmDHPublicObjects 2 }

usmDHUserKeyEntry OBJECT-TYPE
    SYNTAX  UsmDHUserKeyEntry
    MAX-ACCESS not-accessible
    STATUS  current
    DESCRIPTION
        "A row of DHKeyChange objects which augment or replace the
    functionality of the KeyChange objects in the base table row."
    AUGMENTS { usmUserEntry }
    ::= {usmDHUserKeyTable 1 }

UsmDHUserKeyEntry ::= SEQUENCE {
        usmDHUserAuthKeyChange          DHKeyChange,
    usmDHUserOwnAuthKeyChange   DHKeyChange,
        usmDHUserPrivKeyChange          DHKeyChange,
        usmDHUserOwnPrivKeyChange       DHKeyChange
        }

usmDHUserAuthKeyChange OBJECT-TYPE
    SYNTAX  DHKeyChange
    MAX-ACCESS read-create
    STATUS  current
    DESCRIPTION
        "The object used to change any given user's Authentication Key
    using a Diffie-Hellman key exchange.

    The right-most n bits of the shared secret 'sk', where 'n' is the
    number of bits required for the protocol defined by
    usmUserAuthProtocol, are installed as the operational
    authentication key for this row after a successful SET."
    ::= { usmDHUserKeyEntry 1 }

usmDHUserOwnAuthKeyChange OBJECT-TYPE
    SYNTAX  DHKeyChange
    MAX-ACCESS read-create
    STATUS  current
    DESCRIPTION
        "The object used to change the agents own Authentication Key
    using a Diffie-Hellman key exchange.

    The right-most n bits of the shared secret 'sk', where 'n' is the
    number of bits required for the protocol defined by
    usmUserAuthProtocol, are installed as the operational
    authentication key for this row after a successful SET."
    ::= { usmDHUserKeyEntry 2 }

usmDHUserPrivKeyChange OBJECT-TYPE
    SYNTAX  DHKeyChange
    MAX-ACCESS read-create
    STATUS  current
    DESCRIPTION
        "The object used to change any given user's Privacy Key using
    a Diffie-Hellman key exchange.

    The right-most n bits of the shared secret 'sk', where 'n' is the
    number of bits required for the protocol defined by
    usmUserPrivProtocol, are installed as the operational privacy key
    for this row after a successful SET."
    ::= { usmDHUserKeyEntry 3 }

usmDHUserOwnPrivKeyChange OBJECT-TYPE
    SYNTAX  DHKeyChange
    MAX-ACCESS read-create
    STATUS  current
    DESCRIPTION
        "The object used to change the agent's own Privacy Key using a
    Diffie-Hellman key exchange.

    The right-most n bits of the shared secret 'sk', where 'n' is the
    number of bits required for the protocol defined by
    usmUserPrivProtocol, are installed as the operational privacy key
    for this row after a successful SET."
    ::= { usmDHUserKeyEntry 4 }

usmDHKickstartGroup OBJECT IDENTIFIER ::= { usmDHKeyObjects 2 }

usmDHKickstartTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF UsmDHKickstartEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of mappings between zero or more Diffie-Helman key
    agreement values and entries in the usmUserTable.  Entries in this
    table are created by providing the associated device with a
    Diffie-Helman public value and a usmUserName/usmUserSecurityName
    pair during initialization. How these values are provided is
    outside the scope of this MIB, but could be provided manually, or
    through a configuration file.  Valid public value/name pairs
    result in the creation of a row in this table as well as the
    creation of an associated row (with keys derived as indicated) in
    the usmUserTable.  The actual access the related usmSecurityName
    has is dependent on the entries in the VACM tables.  In general,
    an implementor will specify one or more standard security names
    and will provide entries in the VACM tables granting various
    levels of access to those names.  The actual content of the VACM

    table is beyond the scope of this MIB.

    Note: This table is expected to be readable without authentication
    using the usmUserSecurityName 'dhKickstart'.  See the conformance
    statements for details."
    ::= { usmDHKickstartGroup 1 }

usmDHKickstartEntry OBJECT-TYPE
    SYNTAX      UsmDHKickstartEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the usmDHKickstartTable.  The agent SHOULD either
    delete this entry or mark it as inactive upon a successful SET of
    any of the KeyChange-typed objects in the usmUserEntry or upon a
    successful SET of any of the DHKeyChange-typed objects in the
    usmDhKeyChangeEntry where the related usmSecurityName (e.g. row of
    usmUserTable or row of ushDhKeyChangeTable) equals this entry's
    usmDhKickstartSecurityName.  In otherwords, once you've changed
    one or more of the keys for a row in usmUserTable with a
    particular security name, the row in this table with that same
    security name is no longer useful or meaningful."
    INDEX   { usmDHKickstartIndex }
    ::= {usmDHKickstartTable 1 }

UsmDHKickstartEntry ::= SEQUENCE  {
        usmDHKickstartIndex     Integer32,
        usmDHKickstartMyPublic  OCTET STRING,
        usmDHKickstartMgrPublic OCTET STRING,
        usmDHKickstartSecurityName      SnmpAdminString
        }

usmDHKickstartIndex OBJECT-TYPE
    SYNTAX      Integer32  (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Index value for this row."
    ::= { usmDHKickstartEntry 1 }

usmDHKickstartMyPublic OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The agent's Diffie-Hellman public value for this row.  At

    initialization, the agent generates a random number and derives
    its public value from that number.  This public value is published
    here.  This public value 'y' equals g^r MOD p where g is the from
    the set of Diffie-Hellman parameters, p is the prime from those
    parameters, and r is a random integer selected by the agent in the
    interval 2^(l-1) <= r < p-1 < 2^l.  If l is unspecified, then r is
    a random integer selected in the interval 0 <= r < p-1

    The public value is expressed as an OCTET STRING 'PV' of length
    'k' which satisfies

              k
        y =  SUM   2^(8(k-i)) PV'i
             i = 1

        where PV1,...,PVk are the octets of PV from first to last, and
        where PV1 != 0.

    The following DH parameters (Oakley group #2, RFC 2409, sec 6.1,
    6.2) are used for this object:

    g = 2
    p = FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
        29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
        EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
        E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
        EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
        FFFFFFFF FFFFFFFF
    l=1024
    "
    REFERENCE
        "-- Diffie-Hellman Key-Agreement Standard, PKCS#3v1.4;
            RSA Laboratories, November 1993
         -- The Internet Key Exchange, RFC2409;
            Harkins, D., Carrel, D.; November 1998"
    ::= { usmDHKickstartEntry 2 }

usmDHKickstartMgrPublic OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The manager's Diffie-Hellman public value for this row.  Note
    that this value is not set via the SNMP agent, but may be set via
    some out of band method, such as the device's configuration file.

    The manager calculates this value in the same manner and using the
    same parameter set as the agent does.  E.g. it selects a random
    number 'r', calculates y = g^r mod p and provides 'y' as the
    public number expressed as an OCTET STRING.  See
    usmDHKickstartMyPublic for details.

    When this object is set with a valid value during initialization,
    a row is created in the usmUserTable with the following values:

    usmUserEngineID             localEngineID
    usmUserName                 [value of usmDHKickstartSecurityName]
    usmUserSecurityName         [value of usmDHKickstartSecurityName]
    usmUserCloneFrom            ZeroDotZero
    usmUserAuthProtocol         usmHMACMD5AuthProtocol
    usmUserAuthKeyChange        -- derived from set value
    usmUserOwnAuthKeyChange     -- derived from set value
    usmUserPrivProtocol         usmDESPrivProtocol
    usmUserPrivKeyChange        -- derived from set value
    usmUserOwnPrivKeyChange     -- derived from set value
    usmUserPublic               ''
    usmUserStorageType          permanent
    usmUserStatus               active

    A shared secret 'sk' is calculated at the agent as sk =
    mgrPublic^r mod p where r is the agents random number and p is the
    DH prime from the common parameters.  The underlying privacy key
    for this row is derived from sk by applying the key derivation
    function PBKDF2 defined in PKCS#5v2.0 with a salt of 0xd1310ba6,
    and iterationCount of 500, a keyLength of 16 (for
    usmDESPrivProtocol), and a prf (pseudo random function) of
    'id-hmacWithSHA1'.  The underlying authentication key for this row
    is derived from sk by applying the key derivation function PBKDF2
    with a salt of 0x98dfb5ac , an interation count of 500, a
    keyLength of 16 (for usmHMAC5AuthProtocol), and a prf of
    'id-hmacWithSHA1'.  Note: The salts are the first two words in the
    ks0 [key schedule 0] of the BLOWFISH cipher from 'Applied
    Cryptography' by Bruce Schnier - they could be any relatively
    random string of bits.

    The manager can use its knowledge of its own random number and the
    agent's public value to kickstart its access to the agent in a
    secure manner.  Note that the security of this approach is
    directly related to the strength of the authorization security of
    the out of band provisioning of the managers public value
    (e.g. the configuration file), but is not dependent at all on the
    strength of the confidentiality of the out of band provisioning
    data."
    REFERENCE
        "-- Password-Based Cryptography Standard, PKCS#5v2.0;
            RSA Laboratories, March 1999
         -- Applied Cryptography, 2nd Ed.; B. Schneier,
            Counterpane Systems; John Wiley & Sons, 1996"
    ::= { usmDHKickstartEntry 3 }

usmDHKickstartSecurityName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The usmUserName and usmUserSecurityName in the usmUserTable
    associated with this row.  This is provided in the same manner and
    at the same time as the usmDHKickstartMgrPublic value -
    e.g. possibly manually, or via the device's configuration file."
    ::= { usmDHKickstartEntry 4 }

-- Conformance Information

usmDHKeyMIBCompliances  OBJECT IDENTIFIER ::= { usmDHKeyConformance 1 }
usmDHKeyMIBGroups       OBJECT IDENTIFIER ::= { usmDHKeyConformance 2 }

-- Compliance statements

usmDHKeyMIBCompliance   MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for this module."
    MODULE
        GROUP usmDHKeyMIBBasicGroup
        DESCRIPTION
        "This group MAY be implemented by any agent which
        implements the usmUserTable and which wishes to provide the
        ability to change user and agent authentication and privacy
        keys via Diffie-Hellman key exchanges."

        GROUP usmDHKeyParamGroup
        DESCRIPTION
            "This group MUST be implemented by any agent which
        implements a MIB containing the DHKeyChange Textual
        Convention defined in this module."

        GROUP usmDHKeyKickstartGroup
        DESCRIPTION
            "This group MAY be implemented by any agent which
        implements the usmUserTable and which wishes the ability to
        populate the USM table based on out-of-band provided DH
        ignition values.

             Any agent implementing this group is expected to provide
        preinstalled entries in the vacm tables as follows:

             In the usmUserTable: This entry allows access to the
        system and dhKickstart groups

        usmUserEngineID         localEngineID
        usmUserName             'dhKickstart'
        usmUserSecurityName     'dhKickstart'
        usmUserCloneFrom        ZeroDotZero
        usmUserAuthProtocol     none
        usmUserAuthKeyChange    ''
        usmUserOwnAuthKeyChange ''
        usmUserPrivProtocol     none
        usmUserPrivKeyChange    ''
        usmUserOwnPrivKeyChange ''
        usmUserPublic           ''
        usmUserStorageType      permanent
        usmUserStatus           active

            In the vacmSecurityToGroupTable: This maps the initial
        user into the accessible objects.

        vacmSecurityModel               3 (USM)
        vacmSecurityName                'dhKickstart'
        vacmGroupName                   'dhKickstart'
        vacmSecurityToGroupStorageType  permanent
        vacmSecurityToGroupStatus       active

            In the vacmAccessTable: Group name to view name translation.

        vacmGroupName                   'dhKickstart'
    vacmAccessContextPrefix             ''
        vacmAccessSecurityModel         3 (USM)
        vacmAccessSecurityLevel         noAuthNoPriv
        vacmAccessContextMatch          exact
        vacmAccessReadViewName          'dhKickRestricted'
        vacmAccessWriteViewName         ''
        vacmAccessNotifyViewName        'dhKickRestricted'
        vacmAccessStorageType           permanent
        vacmAccessStatus                active

            In the vacmViewTreeFamilyTable: Two entries to allow the
        initial entry to access the system and kickstart groups.

        vacmViewTreeFamilyViewName      'dhKickRestricted'
        vacmViewTreeFamilySubtree       1.3.6.1.2.1.1  (system)
        vacmViewTreeFamilyMask          ''

        vacmViewTreeFamilyType          1
        vacmViewTreeFamilyStorageType   permanent
        vacmViewTreeFamilyStatus        active

        vacmViewTreeFamilyViewName      'dhKickRestricted'
        vacmViewTreeFamilySubtree         (usmDHKickstartTable OID)
        vacmViewTreeFamilyMask          ''
        vacmViewTreeFamilyType          1
        vacmViewTreeFamilyStorageType   permanent
        vacmViewTreeFamilyStatus        active
        "

        OBJECT usmDHParameters
        MIN-ACCESS      read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only for
        any device."
    ::= { usmDHKeyMIBCompliances 1 }

-- Units of Compliance

usmDHKeyMIBBasicGroup OBJECT-GROUP
    OBJECTS     {
                  usmDHUserAuthKeyChange,
                  usmDHUserOwnAuthKeyChange,
                  usmDHUserPrivKeyChange,
                  usmDHUserOwnPrivKeyChange
                }
    STATUS      current
    DESCRIPTION
        ""
    ::= { usmDHKeyMIBGroups 1 }

usmDHKeyParamGroup OBJECT-GROUP
    OBJECTS     {
                  usmDHParameters
                }
    STATUS      current
    DESCRIPTION
        "The mandatory object for all MIBs which use the DHKeyChange
    textual convention."
    ::= { usmDHKeyMIBGroups 2 }

usmDHKeyKickstartGroup OBJECT-GROUP
    OBJECTS     {
                  usmDHKickstartMyPublic,
                  usmDHKickstartMgrPublic,
                  usmDHKickstartSecurityName
                }
    STATUS      current
    DESCRIPTION
        "The objects used for kickstarting one or more SNMPv3 USM
    associations via a configuration file or other out of band,
    non-confidential access."
    ::= { usmDHKeyMIBGroups 3 }

END
share/snmp/mibs/IP-MIB.txt000064400000552503150553041300011241 0ustar00IP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Counter32, IpAddress,
    mib-2, Unsigned32, Counter64,
    zeroDotZero                        FROM SNMPv2-SMI
    PhysAddress, TruthValue,
    TimeStamp, RowPointer,
    TEXTUAL-CONVENTION, TestAndIncr,
    RowStatus, StorageType             FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
    InetAddress, InetAddressType,
    InetAddressPrefixLength,
    InetVersion, InetZoneIndex         FROM INET-ADDRESS-MIB
    InterfaceIndex                     FROM IF-MIB;

ipMIB MODULE-IDENTITY
    LAST-UPDATED "200602020000Z"
    ORGANIZATION "IETF IPv6 MIB Revision Team"
    CONTACT-INFO
           "Editor:

            Shawn A. Routhier
            Interworking Labs
            108 Whispering Pines Dr. Suite 235
            Scotts Valley, CA 95066
            USA
            EMail: <sar@iwl.com>"
    DESCRIPTION
           "The MIB module for managing IP and ICMP implementations, but
            excluding their management of IP routes.

            Copyright (C) The Internet Society (2006).  This version of
            this MIB module is part of RFC 4293; see the RFC itself for
            full legal notices."

    REVISION      "200602020000Z"
    DESCRIPTION
           "The IP version neutral revision with added IPv6 objects for
            ND, default routers, and router advertisements.  As well as
            being the successor to RFC 2011, this MIB is also the
            successor to RFCs 2465 and 2466.  Published as RFC 4293."

    REVISION      "199411010000Z"
    DESCRIPTION
           "A separate MIB module (IP-MIB) for IP and ICMP management
            objects.  Published as RFC 2011."

    REVISION      "199103310000Z"
    DESCRIPTION
           "The initial revision of this MIB module was part of MIB-II,
            which was published as RFC 1213."
    ::= { mib-2 48}

--
-- The textual conventions we define and use in this MIB.
--

IpAddressOriginTC ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
           "The origin of the address.

            manual(2) indicates that the address was manually configured
            to a specified address, e.g., by user configuration.

            dhcp(4) indicates an address that was assigned to this
            system by a DHCP server.

            linklayer(5) indicates an address created by IPv6 stateless

            auto-configuration.

            random(6) indicates an address chosen by the system at
            random, e.g., an IPv4 address within 169.254/16, or an RFC
            3041 privacy address."
    SYNTAX     INTEGER {
        other(1),
        manual(2),
        dhcp(4),
        linklayer(5),
        random(6)
    }

IpAddressStatusTC ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
           "The status of an address.  Most of the states correspond to
            states from the IPv6 Stateless Address Autoconfiguration
            protocol.

            The preferred(1) state indicates that this is a valid
            address that can appear as the destination or source address
            of a packet.

            The deprecated(2) state indicates that this is a valid but
            deprecated address that should no longer be used as a source
            address in new communications, but packets addressed to such
            an address are processed as expected.

            The invalid(3) state indicates that this isn't a valid
            address and it shouldn't appear as the destination or source
            address of a packet.

            The inaccessible(4) state indicates that the address is not
            accessible because the interface to which this address is
            assigned is not operational.

            The unknown(5) state indicates that the status cannot be
            determined for some reason.

            The tentative(6) state indicates that the uniqueness of the
            address on the link is being verified.  Addresses in this
            state should not be used for general communication and
            should only be used to determine the uniqueness of the
            address.

            The duplicate(7) state indicates the address has been
            determined to be non-unique on the link and so must not be

            used.

            The optimistic(8) state indicates the address is available
            for use, subject to restrictions, while its uniqueness on
            a link is being verified.

            In the absence of other information, an IPv4 address is
            always preferred(1)."
    REFERENCE "RFC 2462"
    SYNTAX     INTEGER {
        preferred(1),
        deprecated(2),
        invalid(3),
        inaccessible(4),
        unknown(5),
        tentative(6),
        duplicate(7),
        optimistic(8)
    }

IpAddressPrefixOriginTC ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
           "The origin of this prefix.

            manual(2) indicates a prefix that was manually configured.

            wellknown(3) indicates a well-known prefix, e.g., 169.254/16
            for IPv4 auto-configuration or fe80::/10 for IPv6 link-local
            addresses.  Well known prefixes may be assigned by IANA,
            the address registries, or by specification in a standards
            track RFC.

            dhcp(4) indicates a prefix that was assigned by a DHCP
            server.

            routeradv(5) indicates a prefix learned from a router
            advertisement.

            Note: while IpAddressOriginTC and IpAddressPrefixOriginTC
            are similar, they are not identical.  The first defines how
            an address was created, while the second defines how a
            prefix was found."
    SYNTAX     INTEGER {
        other(1),
        manual(2),
        wellknown(3),
        dhcp(4),
        routeradv(5)
    }

Ipv6AddressIfIdentifierTC ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2x:"
     STATUS       current
     DESCRIPTION
       "This data type is used to model IPv6 address
       interface identifiers.  This is a binary string
       of up to 8 octets in network byte-order."
     SYNTAX      OCTET STRING (SIZE (0..8))

--
-- the IP general group
-- some objects that affect all of IPv4
--

ip       OBJECT IDENTIFIER ::= { mib-2 4 }

ipForwarding OBJECT-TYPE
    SYNTAX     INTEGER {
                    forwarding(1),    -- acting as a router
                    notForwarding(2)  -- NOT acting as a router
               }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The indication of whether this entity is acting as an IPv4
            router in respect to the forwarding of datagrams received
            by, but not addressed to, this entity.  IPv4 routers forward
            datagrams.  IPv4 hosts do not (except those source-routed
            via the host).

            When this object is written, the entity should save the
            change to non-volatile storage and restore the object from
            non-volatile storage upon re-initialization of the system.
            Note: a stronger requirement is not used because this object
            was previously defined."
    ::= { ip 1 }

ipDefaultTTL OBJECT-TYPE
    SYNTAX     Integer32 (1..255)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The default value inserted into the Time-To-Live field of
            the IPv4 header of datagrams originated at this entity,
            whenever a TTL value is not supplied by the transport layer

            protocol.

            When this object is written, the entity should save the
            change to non-volatile storage and restore the object from
            non-volatile storage upon re-initialization of the system.
            Note: a stronger requirement is not used because this object
            was previously defined."
    ::= { ip 2 }

ipReasmTimeout OBJECT-TYPE
    SYNTAX     Integer32
    UNITS      "seconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The maximum number of seconds that received fragments are
            held while they are awaiting reassembly at this entity."
    ::= { ip 13 }

--
-- the IPv6 general group
-- Some objects that affect all of IPv6
--

ipv6IpForwarding OBJECT-TYPE
    SYNTAX     INTEGER {
                    forwarding(1),    -- acting as a router
                    notForwarding(2)  -- NOT acting as a router
               }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The indication of whether this entity is acting as an IPv6
            router on any interface in respect to the forwarding of
            datagrams received by, but not addressed to, this entity.
            IPv6 routers forward datagrams.  IPv6 hosts do not (except
            those source-routed via the host).

            When this object is written, the entity SHOULD save the
            change to non-volatile storage and restore the object from
            non-volatile storage upon re-initialization of the system."
    ::= { ip 25 }

ipv6IpDefaultHopLimit OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The default value inserted into the Hop Limit field of the
            IPv6 header of datagrams originated at this entity whenever
            a Hop Limit value is not supplied by the transport layer
            protocol.

            When this object is written, the entity SHOULD save the
            change to non-volatile storage and restore the object from
            non-volatile storage upon re-initialization of the system."
    REFERENCE "RFC 2461 Section 6.3.2"
    ::= { ip 26 }

--
-- IPv4 Interface Table
--

ipv4InterfaceTableLastChange OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The value of sysUpTime on the most recent occasion at which
            a row in the ipv4InterfaceTable was added or deleted, or
            when an ipv4InterfaceReasmMaxSize or an
            ipv4InterfaceEnableStatus object was modified.

            If new objects are added to the ipv4InterfaceTable that
            require the ipv4InterfaceTableLastChange to be updated when
            they are modified, they must specify that requirement in
            their description clause."
    ::= { ip 27 }

ipv4InterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Ipv4InterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table containing per-interface IPv4-specific
            information."
    ::= { ip 28 }

ipv4InterfaceEntry OBJECT-TYPE
    SYNTAX     Ipv4InterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing IPv4-specific information for a specific
            interface."
    INDEX { ipv4InterfaceIfIndex }
    ::= { ipv4InterfaceTable 1 }

Ipv4InterfaceEntry ::= SEQUENCE {
        ipv4InterfaceIfIndex         InterfaceIndex,
        ipv4InterfaceReasmMaxSize    Integer32,
        ipv4InterfaceEnableStatus    INTEGER,
        ipv4InterfaceRetransmitTime  Unsigned32
    }

ipv4InterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The index value that uniquely identifies the interface to
            which this entry is applicable.  The interface identified by
            a particular value of this index is the same interface as
            identified by the same value of the IF-MIB's ifIndex."
    ::= { ipv4InterfaceEntry 1 }

ipv4InterfaceReasmMaxSize OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The size of the largest IPv4 datagram that this entity can
            re-assemble from incoming IPv4 fragmented datagrams received
            on this interface."
    ::= { ipv4InterfaceEntry 2 }

ipv4InterfaceEnableStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                 up(1),
                 down(2)
    }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The indication of whether IPv4 is enabled (up) or disabled
            (down) on this interface.  This object does not affect the
            state of the interface itself, only its connection to an
            IPv4 stack.  The IF-MIB should be used to control the state
            of the interface."
    ::= { ipv4InterfaceEntry 3 }

ipv4InterfaceRetransmitTime OBJECT-TYPE
    SYNTAX     Unsigned32
    UNITS      "milliseconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The time between retransmissions of ARP requests to a
            neighbor when resolving the address or when probing the
            reachability of a neighbor."
    REFERENCE "RFC 1122"
    DEFVAL { 1000 }
    ::= { ipv4InterfaceEntry 4 }

--
-- v6 interface table
--

ipv6InterfaceTableLastChange OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The value of sysUpTime on the most recent occasion at which
            a row in the ipv6InterfaceTable was added or deleted or when
            an ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier,
            ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime,
            ipv6InterfaceRetransmitTime, or ipv6InterfaceForwarding
            object was modified.

            If new objects are added to the ipv6InterfaceTable that
            require the ipv6InterfaceTableLastChange to be updated when
            they are modified, they must specify that requirement in
            their description clause."
    ::= { ip 29 }

ipv6InterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Ipv6InterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table containing per-interface IPv6-specific
            information."
    ::= { ip 30 }

ipv6InterfaceEntry OBJECT-TYPE
    SYNTAX     Ipv6InterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing IPv6-specific information for a given
            interface."
    INDEX { ipv6InterfaceIfIndex }
    ::= { ipv6InterfaceTable 1 }

Ipv6InterfaceEntry ::= SEQUENCE {
        ipv6InterfaceIfIndex         InterfaceIndex,
        ipv6InterfaceReasmMaxSize    Unsigned32,
        ipv6InterfaceIdentifier      Ipv6AddressIfIdentifierTC,
        ipv6InterfaceEnableStatus    INTEGER,
        ipv6InterfaceReachableTime   Unsigned32,
        ipv6InterfaceRetransmitTime  Unsigned32,
        ipv6InterfaceForwarding      INTEGER
    }

ipv6InterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The index value that uniquely identifies the interface to
            which this entry is applicable.  The interface identified by
            a particular value of this index is the same interface as
            identified by the same value of the IF-MIB's ifIndex."
    ::= { ipv6InterfaceEntry 1 }

ipv6InterfaceReasmMaxSize OBJECT-TYPE
    SYNTAX     Unsigned32 (1500..65535)
    UNITS      "octets"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The size of the largest IPv6 datagram that this entity can
            re-assemble from incoming IPv6 fragmented datagrams received
            on this interface."
    ::= { ipv6InterfaceEntry 2 }

ipv6InterfaceIdentifier OBJECT-TYPE
    SYNTAX     Ipv6AddressIfIdentifierTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "The Interface Identifier for this interface.  The Interface
            Identifier is combined with an address prefix to form an
            interface address.

            By default, the Interface Identifier is auto-configured
            according to the rules of the link type to which this
            interface is attached.

            A zero length identifier may be used where appropriate.  One
            possible example is a loopback interface."
    ::= { ipv6InterfaceEntry 3 }

-- This object ID is reserved as it was used in earlier versions of
-- the MIB module.  In theory, OIDs are not assigned until the
-- specification is released as an R

Batosay - 2023
IDNSEO Team