package NetSNMP::default_store;

use strict;
use warnings;
use Carp;

require Exporter;
require DynaLoader;
use AutoLoader;

use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK @EXPORT $VERSION $AUTOLOAD);

@ISA = qw(Exporter DynaLoader);

# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.

# This allows declaration	use NetSNMP::default_store ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
%EXPORT_TAGS = ( 'all' => [ qw(
				   NETSNMP_DS_MAX_IDS
				   NETSNMP_DS_MAX_SUBIDS
				   NETSNMP_DS_LIBRARY_ID
				   NETSNMP_DS_APPLICATION_ID
				   NETSNMP_DS_TOKEN_ID
				   NETSNMP_DS_LIB_MIB_ERRORS
				   NETSNMP_DS_LIB_SAVE_MIB_DESCRS
				   NETSNMP_DS_LIB_MIB_COMMENT_TERM
				   NETSNMP_DS_LIB_MIB_PARSE_LABEL
				   NETSNMP_DS_LIB_DUMP_PACKET
				   NETSNMP_DS_LIB_LOG_TIMESTAMP
				   NETSNMP_DS_LIB_DONT_READ_CONFIGS
				   NETSNMP_DS_LIB_MIB_REPLACE
				   NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM
				   NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS
				   NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS
				   NETSNMP_DS_LIB_ALARM_DONT_USE_SIG
				   NETSNMP_DS_LIB_PRINT_FULL_OID
				   NETSNMP_DS_LIB_QUICK_PRINT
				   NETSNMP_DS_LIB_RANDOM_ACCESS
				   NETSNMP_DS_LIB_REGEX_ACCESS
				   NETSNMP_DS_LIB_DONT_CHECK_RANGE
				   NETSNMP_DS_LIB_NO_TOKEN_WARNINGS
				   NETSNMP_DS_LIB_NUMERIC_TIMETICKS
				   NETSNMP_DS_LIB_ESCAPE_QUOTES
				   NETSNMP_DS_LIB_REVERSE_ENCODE
				   NETSNMP_DS_LIB_PRINT_BARE_VALUE
				   NETSNMP_DS_LIB_EXTENDED_INDEX
				   NETSNMP_DS_LIB_PRINT_HEX_TEXT
				   NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID
				   NETSNMP_DS_LIB_READ_UCD_STYLE_OID
				   NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG
				   NETSNMP_DS_LIB_HAVE_READ_CONFIG
				   NETSNMP_DS_LIB_QUICKE_PRINT
				   NETSNMP_DS_LIB_DONT_PRINT_UNITS
				   NETSNMP_DS_LIB_NO_DISPLAY_HINT
				   NETSNMP_DS_LIB_16BIT_IDS
				   NETSNMP_DS_LIB_DONT_PERSIST_STATE
				   NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT
				   NETSNMP_DS_LIB_IGNORE_NO_COMMUNITY
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE
				   NETSNMP_DS_LIB_APPEND_LOGFILES
				   NETSNMP_DS_LIB_MIB_WARNINGS
				   NETSNMP_DS_LIB_SECLEVEL
				   NETSNMP_DS_LIB_SNMPVERSION
				   NETSNMP_DS_LIB_DEFAULT_PORT
				   NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_STRING_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH
				   NETSNMP_DS_LIB_SERVERSENDBUF
				   NETSNMP_DS_LIB_SERVERRECVBUF
				   NETSNMP_DS_LIB_CLIENTSENDBUF
				   NETSNMP_DS_LIB_CLIENTRECVBUF
				   NETSNMP_DS_SNMP_VERSION_1
				   NETSNMP_DS_SNMP_VERSION_2c
				   NETSNMP_DS_SNMP_VERSION_3
				   NETSNMP_DS_LIB_SECNAME
				   NETSNMP_DS_LIB_CONTEXT
				   NETSNMP_DS_LIB_PASSPHRASE
				   NETSNMP_DS_LIB_AUTHPASSPHRASE
				   NETSNMP_DS_LIB_PRIVPASSPHRASE
				   NETSNMP_DS_LIB_OPTIONALCONFIG
				   NETSNMP_DS_LIB_APPTYPE
				   NETSNMP_DS_LIB_COMMUNITY
				   NETSNMP_DS_LIB_PERSISTENT_DIR
				   NETSNMP_DS_LIB_CONFIGURATION_DIR
				   NETSNMP_DS_LIB_SECMODEL
				   NETSNMP_DS_LIB_MIBDIRS
				   NETSNMP_DS_LIB_OIDSUFFIX
				   NETSNMP_DS_LIB_OIDPREFIX
				   NETSNMP_DS_LIB_CLIENT_ADDR
				   NETSNMP_DS_LIB_TEMP_FILE_PATTERN
				   NETSNMP_DS_LIB_AUTHMASTERKEY
				   NETSNMP_DS_LIB_PRIVMASTERKEY
				   NETSNMP_DS_LIB_AUTHLOCALIZEDKEY
				   NETSNMP_DS_LIB_PRIVLOCALIZEDKEY
				   NETSNMP_DS_LIB_APPTYPES
				   NETSNMP_DS_LIB_KSM_KEYTAB
				   NETSNMP_DS_LIB_KSM_SERVICE_NAME
				   NETSNMP_DS_LIB_SBSM_LOCAL_PWD
	netsnmp_ds_get_boolean
	netsnmp_ds_get_int
	netsnmp_ds_get_string
	netsnmp_ds_get_void
	netsnmp_ds_register_config
	netsnmp_ds_register_premib
	netsnmp_ds_set_boolean
	netsnmp_ds_set_int
	netsnmp_ds_set_string
	netsnmp_ds_set_void
	netsnmp_ds_shutdown
	netsnmp_ds_toggle_boolean
) ] );

@EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

@EXPORT = qw(
				   NETSNMP_DS_MAX_IDS
				   NETSNMP_DS_MAX_SUBIDS
				   NETSNMP_DS_LIBRARY_ID
				   NETSNMP_DS_APPLICATION_ID
				   NETSNMP_DS_TOKEN_ID
				   NETSNMP_DS_LIB_MIB_ERRORS
				   NETSNMP_DS_LIB_SAVE_MIB_DESCRS
				   NETSNMP_DS_LIB_MIB_COMMENT_TERM
				   NETSNMP_DS_LIB_MIB_PARSE_LABEL
				   NETSNMP_DS_LIB_DUMP_PACKET
				   NETSNMP_DS_LIB_LOG_TIMESTAMP
				   NETSNMP_DS_LIB_DONT_READ_CONFIGS
				   NETSNMP_DS_LIB_MIB_REPLACE
				   NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM
				   NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS
				   NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS
				   NETSNMP_DS_LIB_ALARM_DONT_USE_SIG
				   NETSNMP_DS_LIB_PRINT_FULL_OID
				   NETSNMP_DS_LIB_QUICK_PRINT
				   NETSNMP_DS_LIB_RANDOM_ACCESS
				   NETSNMP_DS_LIB_REGEX_ACCESS
				   NETSNMP_DS_LIB_DONT_CHECK_RANGE
				   NETSNMP_DS_LIB_NO_TOKEN_WARNINGS
				   NETSNMP_DS_LIB_NUMERIC_TIMETICKS
				   NETSNMP_DS_LIB_ESCAPE_QUOTES
				   NETSNMP_DS_LIB_REVERSE_ENCODE
				   NETSNMP_DS_LIB_PRINT_BARE_VALUE
				   NETSNMP_DS_LIB_EXTENDED_INDEX
				   NETSNMP_DS_LIB_PRINT_HEX_TEXT
				   NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID
				   NETSNMP_DS_LIB_READ_UCD_STYLE_OID
				   NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG
				   NETSNMP_DS_LIB_HAVE_READ_CONFIG
				   NETSNMP_DS_LIB_QUICKE_PRINT
				   NETSNMP_DS_LIB_DONT_PRINT_UNITS
				   NETSNMP_DS_LIB_NO_DISPLAY_HINT
				   NETSNMP_DS_LIB_16BIT_IDS
				   NETSNMP_DS_LIB_DONT_PERSIST_STATE
				   NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT
				   NETSNMP_DS_LIB_IGNORE_NO_COMMUNITY
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE
				   NETSNMP_DS_LIB_APPEND_LOGFILES
				   NETSNMP_DS_LIB_MIB_WARNINGS
				   NETSNMP_DS_LIB_SECLEVEL
				   NETSNMP_DS_LIB_SNMPVERSION
				   NETSNMP_DS_LIB_DEFAULT_PORT
				   NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_STRING_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH
				   NETSNMP_DS_LIB_SERVERSENDBUF
				   NETSNMP_DS_LIB_SERVERRECVBUF
				   NETSNMP_DS_LIB_CLIENTSENDBUF
				   NETSNMP_DS_LIB_CLIENTRECVBUF
				   NETSNMP_DS_SNMP_VERSION_1
				   NETSNMP_DS_SNMP_VERSION_2c
				   NETSNMP_DS_SNMP_VERSION_3
				   NETSNMP_DS_LIB_SECNAME
				   NETSNMP_DS_LIB_CONTEXT
				   NETSNMP_DS_LIB_PASSPHRASE
				   NETSNMP_DS_LIB_AUTHPASSPHRASE
				   NETSNMP_DS_LIB_PRIVPASSPHRASE
				   NETSNMP_DS_LIB_OPTIONALCONFIG
				   NETSNMP_DS_LIB_APPTYPE
				   NETSNMP_DS_LIB_COMMUNITY
				   NETSNMP_DS_LIB_PERSISTENT_DIR
				   NETSNMP_DS_LIB_CONFIGURATION_DIR
				   NETSNMP_DS_LIB_SECMODEL
				   NETSNMP_DS_LIB_MIBDIRS
				   NETSNMP_DS_LIB_OIDSUFFIX
				   NETSNMP_DS_LIB_OIDPREFIX
				   NETSNMP_DS_LIB_CLIENT_ADDR
				   NETSNMP_DS_LIB_TEMP_FILE_PATTERN
				   NETSNMP_DS_LIB_AUTHMASTERKEY
				   NETSNMP_DS_LIB_PRIVMASTERKEY
				   NETSNMP_DS_LIB_AUTHLOCALIZEDKEY
				   NETSNMP_DS_LIB_PRIVLOCALIZEDKEY
				   NETSNMP_DS_LIB_APPTYPES
				   NETSNMP_DS_LIB_KSM_KEYTAB
				   NETSNMP_DS_LIB_KSM_SERVICE_NAME
				   NETSNMP_DS_LIB_SBSM_LOCAL_PWD
);
$VERSION = '5.0404';

sub AUTOLOAD {
    # This AUTOLOAD is used to 'autoload' constants from the constant()
    # XS function.

    my $constname;
    ($constname = $AUTOLOAD) =~ s/.*:://;
    croak "&NetSNMP::default_store::constant not defined" if $constname eq 'cons
tant';
    my ($error, $val) = constant($constname);
    if ($error) { croak $error; }
    {
        no strict 'refs';
        # Fixed between 5.005_53 and 5.005_61
#XXX    if ($] >= 5.00561) {
#XXX        *$AUTOLOAD = sub () { $val };
#XXX    }
#XXX    else {
            *$AUTOLOAD = sub { $val };
#XXX    }
    }
    goto &$AUTOLOAD;
}

bootstrap NetSNMP::default_store $VERSION;

# Preloaded methods go here.

# Autoload methods go after =cut, and are processed by the autosplit program.

1;
__END__

=head1 NAME

NetSNMP::default_store - Perl extension for Net-SNMP generic storage of global data

=head1 SYNOPSIS

  use NetSNMP::default_store qw(:all);
  $port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, DS_LIB_DEFAULT_PORT);
  netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, DS_LIB_DEFAULT_PORT, 161);

=head1 DESCRIPTION

This module is a wrapper around the net-snmp default store routines.
See the net-snmp default_store manual page for details on what the
various functions do and the values that can be set/retrieved.

=head2 EXPORT

None by default.

=head2 Exportable constants

				   NETSNMP_DS_MAX_IDS
				   NETSNMP_DS_MAX_SUBIDS
				   NETSNMP_DS_LIBRARY_ID
				   NETSNMP_DS_APPLICATION_ID
				   NETSNMP_DS_TOKEN_ID
				   NETSNMP_DS_LIB_MIB_ERRORS
				   NETSNMP_DS_LIB_SAVE_MIB_DESCRS
				   NETSNMP_DS_LIB_MIB_COMMENT_TERM
				   NETSNMP_DS_LIB_MIB_PARSE_LABEL
				   NETSNMP_DS_LIB_DUMP_PACKET
				   NETSNMP_DS_LIB_LOG_TIMESTAMP
				   NETSNMP_DS_LIB_DONT_READ_CONFIGS
				   NETSNMP_DS_LIB_MIB_REPLACE
				   NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM
				   NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS
				   NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS
				   NETSNMP_DS_LIB_ALARM_DONT_USE_SIG
				   NETSNMP_DS_LIB_PRINT_FULL_OID
				   NETSNMP_DS_LIB_QUICK_PRINT
				   NETSNMP_DS_LIB_RANDOM_ACCESS
				   NETSNMP_DS_LIB_REGEX_ACCESS
				   NETSNMP_DS_LIB_DONT_CHECK_RANGE
				   NETSNMP_DS_LIB_NO_TOKEN_WARNINGS
				   NETSNMP_DS_LIB_NUMERIC_TIMETICKS
				   NETSNMP_DS_LIB_ESCAPE_QUOTES
				   NETSNMP_DS_LIB_REVERSE_ENCODE
				   NETSNMP_DS_LIB_PRINT_BARE_VALUE
				   NETSNMP_DS_LIB_EXTENDED_INDEX
				   NETSNMP_DS_LIB_PRINT_HEX_TEXT
				   NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID
				   NETSNMP_DS_LIB_READ_UCD_STYLE_OID
				   NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG
				   NETSNMP_DS_LIB_HAVE_READ_CONFIG
				   NETSNMP_DS_LIB_QUICKE_PRINT
				   NETSNMP_DS_LIB_DONT_PRINT_UNITS
				   NETSNMP_DS_LIB_NO_DISPLAY_HINT
				   NETSNMP_DS_LIB_16BIT_IDS
				   NETSNMP_DS_LIB_DONT_PERSIST_STATE
				   NETSNMP_DS_LIB_2DIGIT_HEX_OUTPUT
				   NETSNMP_DS_LIB_IGNORE_NO_COMMUNITY
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD
				   NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE
				   NETSNMP_DS_LIB_APPEND_LOGFILES
				   NETSNMP_DS_LIB_MIB_WARNINGS
				   NETSNMP_DS_LIB_SECLEVEL
				   NETSNMP_DS_LIB_SNMPVERSION
				   NETSNMP_DS_LIB_DEFAULT_PORT
				   NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_STRING_OUTPUT_FORMAT
				   NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH
				   NETSNMP_DS_LIB_SERVERSENDBUF
				   NETSNMP_DS_LIB_SERVERRECVBUF
				   NETSNMP_DS_LIB_CLIENTSENDBUF
				   NETSNMP_DS_LIB_CLIENTRECVBUF
				   NETSNMP_DS_SNMP_VERSION_1
				   NETSNMP_DS_SNMP_VERSION_2c
				   NETSNMP_DS_SNMP_VERSION_3
				   NETSNMP_DS_LIB_SECNAME
				   NETSNMP_DS_LIB_CONTEXT
				   NETSNMP_DS_LIB_PASSPHRASE
				   NETSNMP_DS_LIB_AUTHPASSPHRASE
				   NETSNMP_DS_LIB_PRIVPASSPHRASE
				   NETSNMP_DS_LIB_OPTIONALCONFIG
				   NETSNMP_DS_LIB_APPTYPE
				   NETSNMP_DS_LIB_COMMUNITY
				   NETSNMP_DS_LIB_PERSISTENT_DIR
				   NETSNMP_DS_LIB_CONFIGURATION_DIR
				   NETSNMP_DS_LIB_SECMODEL
				   NETSNMP_DS_LIB_MIBDIRS
				   NETSNMP_DS_LIB_OIDSUFFIX
				   NETSNMP_DS_LIB_OIDPREFIX
				   NETSNMP_DS_LIB_CLIENT_ADDR
				   NETSNMP_DS_LIB_TEMP_FILE_PATTERN
				   NETSNMP_DS_LIB_AUTHMASTERKEY
				   NETSNMP_DS_LIB_PRIVMASTERKEY
				   NETSNMP_DS_LIB_AUTHLOCALIZEDKEY
				   NETSNMP_DS_LIB_PRIVLOCALIZEDKEY
				   NETSNMP_DS_LIB_APPTYPES
				   NETSNMP_DS_LIB_KSM_KEYTAB
				   NETSNMP_DS_LIB_KSM_SERVICE_NAME
				   NETSNMP_DS_LIB_SBSM_LOCAL_PWD

=head2 Exportable functions

  int netsnmp_ds_get_boolean(int storeid, int which)
  int netsnmp_ds_get_int(int storeid, int which)
  char *netsnmp_ds_get_string(int storeid, int which)
  void *netsnmp_ds_get_void(int storeid, int which)
  int netsnmp_ds_register_config(unsigned char type, const char *ftype, const char *token,
                       int storeid, int which)
  int netsnmp_ds_register_premib(unsigned char type, const char *ftype, const char *token,
                       int storeid, int which)
  int netsnmp_ds_set_boolean(int storeid, int which, int value)
  int netsnmp_ds_set_int(int storeid, int which, int value)
  int netsnmp_ds_set_string(int storeid, int which, const char *value)
  int netsnmp_ds_set_void(int storeid, int which, void *value)
  void netsnmp_ds_shutdown(void)
  int netsnmp_ds_toggle_boolean(int storeid, int which)

=head1 AUTHOR

Wes Hardaker, hardaker@users.sourceforge.net

=head1 SEE ALSO

perl(1), default_store(3).

=cut
