our @ISA = qw(Exporter);
our @EXPORT_OK = qw(checksum verify_cksum);
+our $debug = 0;
sub checksum {
my $pkt = shift;
-
return (-unpack('%16U*', $pkt) & 0xFFFF);
}
my $cksum;
my $shortsum;
- return 0 if (substr($pkt, -6, 2) ne "AZ"); # No checksum at end
+ if ($pkt =~ /AZ(....)$/) {
+ $debug and warn "verify_cksum: sum ($1) detected";
+ } else {
+ warn "verify_cksum: no sum detected";
+ return 0; # No checksum at end
+ }
+ # return 0 if (substr($pkt, -6, 2) ne "AZ");
# Convert the checksum back to hex and calculate the sum of the
# pack without the checksum.
- $cksum = hex(substr($pkt, -4));
+ $cksum = hex($1);
$shortsum = unpack("%16U*", substr($pkt, 0, -4));
# The checksum is valid if the hex sum, plus the checksum of the
{
no warnings qw(once);
eval join('',<main::DATA>) || die $@ unless caller();
+ # FIXME: what the heck is this?
}
+
+1;
__END__
#