ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-BER-XS/XS.pm
(Generate patch)

Comparing Convert-BER-XS/XS.pm (file contents):
Revision 1.45 by root, Sun Apr 21 02:45:12 2019 UTC vs.
Revision 1.50 by root, Sun Apr 21 23:10:55 2019 UTC

8 8
9 my $ber = ber_decode $buf, $Convert::BER::XS::SNMP_PROFILE 9 my $ber = ber_decode $buf, $Convert::BER::XS::SNMP_PROFILE
10 or die "unable to decode SNMP message"; 10 or die "unable to decode SNMP message";
11 11
12 # The above results in a data structure consisting of 12 # The above results in a data structure consisting of
13 # (class, tag, flags, data) 13 # (class, tag, flags, data)
14 # tuples. Below is such a message, SNMPv1 trap 14 # tuples. Below is such a message, SNMPv1 trap
15 # with a Cisco mac change notification. 15 # with a Cisco mac change notification.
16 # Did you know that Cisco is in the news almost 16 # Did you know that Cisco is in the news almost
17 # every week because of some backdoor password 17 # every week because of some backdoor password
18 # or other extremely stupid security bug? 18 # or other extremely stupid security bug?
412use Exporter qw(import); 412use Exporter qw(import);
413 413
414our $VERSION; 414our $VERSION;
415 415
416BEGIN { 416BEGIN {
417 $VERSION = '1.0'; 417 $VERSION = 1.1;
418 XSLoader::load __PACKAGE__, $VERSION; 418 XSLoader::load __PACKAGE__, $VERSION;
419} 419}
420 420
421our %EXPORT_TAGS = ( 421our %EXPORT_TAGS = (
422 const_index => [qw( 422 const_index => [qw(
496Example output: 496Example output:
497 497
498 SEQUENCE 498 SEQUENCE
499 | OCTET_STRING bytes 800063784300454045045400000001 499 | OCTET_STRING bytes 800063784300454045045400000001
500 | OCTET_STRING bytes 500 | OCTET_STRING bytes
501 | CONTEXT (7) bytes CONSTRUCTED 501 | CONTEXT (7) CONSTRUCTED
502 | | INTEGER int 1058588941 502 | | INTEGER int 1058588941
503 | | INTEGER int 0 503 | | INTEGER int 0
504 | | INTEGER int 0 504 | | INTEGER int 0
505 | | SEQUENCE 505 | | SEQUENCE
506 | | | SEQUENCE 506 | | | SEQUENCE
549 $class =~ s/^ASN_//; 549 $class =~ s/^ASN_//;
550 $tag =~ s/^(ASN_|SNMP_)//; 550 $tag =~ s/^(ASN_|SNMP_)//;
551 $type =~ s/^BER_TYPE_//; 551 $type =~ s/^BER_TYPE_//;
552 552
553 if ($ber->[BER_FLAGS]) { 553 if ($ber->[BER_FLAGS]) {
554 printf "$indent%-16.16s %-6.6s CONSTRUCTED\n", $tag, lc $type; 554 printf "$indent%-16.16s\n", $tag;
555 &_ber_dump ($_, $profile, "$indent| ") 555 &_ber_dump ($_, $profile, "$indent| ")
556 for @$data; 556 for @$data;
557 } else { 557 } else {
558 if ($data =~ y/\x20-\x7e//c / (length $data || 1) > 0.2 or $data =~ /\x00./s) { 558 if ($data =~ y/\x20-\x7e//c / (length $data || 1) > 0.2 or $data =~ /\x00./s) {
559 # assume binary 559 # assume binary
739 $SNMP_PROFILE->set (ASN_APPLICATION, SNMP_COUNTER64 , BER_TYPE_INT); 739 $SNMP_PROFILE->set (ASN_APPLICATION, SNMP_COUNTER64 , BER_TYPE_INT);
740 740
741=head2 LIMITATIONS/NOTES 741=head2 LIMITATIONS/NOTES
742 742
743This module can only en-/decode 64 bit signed and unsigned integers, and 743This module can only en-/decode 64 bit signed and unsigned integers, and
744only when your perl supports those. So no UUID OIDs for now. 744only when your perl supports those. So no UUID OIDs for now (unless you
745map the C<OBJECT IDENTIFIER> tag to something other than C<BER_TYPE_OID>).
745 746
746This module does not generally care about ranges, i.e. it will happily 747This module does not generally care about ranges, i.e. it will happily
747de-/encode 64 bit integers into an C<ASN_INTEGER> value, or a negative 748de-/encode 64 bit integers into an C<ASN_INTEGER> value, or a negative
748number into an C<SNMP_COUNTER64>. 749number into an C<SNMP_COUNTER64>.
749 750

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines