| package NetSNMP::ASN; |
| |
| 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::ASN ':all'; |
| # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK |
| # will save memory. |
| %EXPORT_TAGS = ( 'all' => [ qw( |
| ASN_APPLICATION |
| ASN_BIT_STR |
| ASN_BOOLEAN |
| ASN_COUNTER |
| ASN_COUNTER64 |
| ASN_DOUBLE |
| ASN_FLOAT |
| ASN_GAUGE |
| ASN_INTEGER |
| ASN_INTEGER64 |
| ASN_IPADDRESS |
| ASN_NULL |
| ASN_OBJECT_ID |
| ASN_OCTET_STR |
| ASN_OPAQUE |
| ASN_SEQUENCE |
| ASN_SET |
| ASN_TIMETICKS |
| ASN_UNSIGNED |
| ASN_UNSIGNED64 |
| ) ] ); |
| |
| @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); |
| |
| @EXPORT = qw( |
| ASN_APPLICATION |
| ASN_BIT_STR |
| ASN_BOOLEAN |
| ASN_COUNTER |
| ASN_COUNTER64 |
| ASN_DOUBLE |
| ASN_FLOAT |
| ASN_GAUGE |
| ASN_INTEGER |
| ASN_INTEGER64 |
| ASN_IPADDRESS |
| ASN_NULL |
| ASN_OBJECT_ID |
| ASN_OCTET_STR |
| ASN_OPAQUE |
| ASN_SEQUENCE |
| ASN_SET |
| ASN_TIMETICKS |
| ASN_UNSIGNED |
| ASN_UNSIGNED64 |
| ); |
| $VERSION = '5.0602'; |
| |
| sub AUTOLOAD { |
| # This AUTOLOAD is used to 'autoload' constants from the constant() |
| # XS function. If a constant is not found then control is passed |
| # to the AUTOLOAD in AutoLoader. |
| |
| my $constname; |
| ($constname = $AUTOLOAD) =~ s/.*:://; |
| croak "& not defined" if $constname eq 'constant'; |
| my $val; |
| ($!, $val) = constant($constname); |
| if ($! != 0) { |
| if ($! =~ /Invalid/ || $!{EINVAL}) { |
| $AutoLoader::AUTOLOAD = $AUTOLOAD; |
| goto &AutoLoader::AUTOLOAD; |
| } |
| else { |
| croak "Your vendor has not defined NetSNMP::ASN macro $constname"; |
| } |
| } |
| { |
| no strict 'refs'; |
| # Fixed between 5.005_53 and 5.005_61 |
| # if ($] >= 5.00561) { |
| # *$AUTOLOAD = sub () { $val }; |
| # } |
| # else { |
| *$AUTOLOAD = sub { $val }; |
| # } |
| } |
| goto &$AUTOLOAD; |
| } |
| |
| bootstrap NetSNMP::ASN $VERSION; |
| |
| # Preloaded methods go here. |
| |
| # Autoload methods go after =cut, and are processed by the autosplit program. |
| |
| 1; |
| __END__ |
| |
| =head1 NAME |
| |
| NetSNMP::ASN - Perl extension for SNMP ASN.1 types |
| |
| =head1 SYNOPSIS |
| |
| use NetSNMP::ASN qw(:all); |
| my $asn_int = ASN_INTEGER; |
| |
| =head1 DESCRIPTION |
| |
| The NetSNMP::ASN module provides the ASN.1 types for SNMP. |
| |
| =head2 EXPORT |
| |
| None by default. |
| |
| =head2 Exportable constants |
| |
| ASN_APPLICATION |
| ASN_BIT_STR |
| ASN_BOOLEAN |
| ASN_COUNTER |
| ASN_COUNTER64 |
| ASN_DOUBLE |
| ASN_FLOAT |
| ASN_GAUGE |
| ASN_INTEGER |
| ASN_INTEGER64 |
| ASN_IPADDRESS |
| ASN_NULL |
| ASN_OBJECT_ID |
| ASN_OCTET_STR |
| ASN_OPAQUE |
| ASN_SEQUENCE |
| ASN_SET |
| ASN_TIMETICKS |
| ASN_UNSIGNED |
| ASN_UNSIGNED64 |
| |
| |
| =head1 AUTHOR |
| |
| Wes Hardaker, E<lt>hardaker@users.sourceforge.netE<gt> |
| |
| =head1 SEE ALSO |
| |
| SNMP(3pm), NetSNMP::OID(3pm) |
| |
| perl(1). |
| |
| =cut |