+09Oct07=======================================================================
+1. Added *VERY* important change to prevent loops on PC9x sentences.
06Oct07=======================================================================
1. added the possibility of having a motd_ax25 especially for sending to
radio connections after a suggestion by Paolo YV1DIG.
$pc9x_past_age = 62*60; # maximum age in the past of a px9x (a config record might be the only
# thing a node might send - once an hour)
-$pc9x_future_age = 5*60; # maximum age in the future ditto
+$pc9x_future_age = 2*3600; # maximum age in the future ditto
$pc10_dupe_age = 45; # just something to catch duplicate PC10->PC93 conversions
$pc92_slug_changes = 60; # slug any changes going outward for this long
$last_pc92_slug = 0; # the last time we sent out any delayed add or del PC92s
# the id on it is completely unreliable. Besides, only commands
# originating on this box will go through this code...
if ($parent->call ne $main::mycall) {
- my $lastid = $parent->lastid || 0;
- if ($t < $lastid) {
- if ($t+86400-$lastid > $pc9x_past_age) {
- dbg("PCPROT: dup id on $t <= $lastid, ignored") if isdbg('chanerr');
- return;
- }
- } elsif ($t == $lastid) {
- dbg("PCPROT: dup id on $t == $lastid, ignored") if isdbg('chanerr');
- return;
- } else {
- # $t > $lastid, check that the timestamp offered isn't too far away from 'now'
- if ($t+$main::systime_daystart-$main::systime > $pc9x_future_age ) {
- dbg("PCPROT: id $t too far in the future, ignored") if isdbg('chanerr');
+ my $lastid = $parent->lastid;
+ if (defined $lastid) {
+ if ($t < $lastid) {
+ if ($t+86400-$lastid > $pc9x_past_age) {
+ dbg("PCPROT: dup id on $t <= lastid $lastid, ignored") if isdbg('chanerr');
+ return;
+ }
+ } elsif ($t == $lastid) {
+ dbg("PCPROT: dup id on $t == lastid $lastid, ignored") if isdbg('chanerr');
return;
+ } else {
+ # $t > $lastid, check that the timestamp offered isn't too far away from 'now'
+ if ($t-$lastid > $pc9x_future_age ) {
+ dbg("PCPROT: id $t too far in the future of lastid $lastid, ignored") if isdbg('chanerr');
+ return;
+ }
}
}
}
--- /dev/null
+#!/usr/bin/perl
+
+my $pc9x_past_age = 3600;
+my $pc9x_future_age = 3600*2;
+my $lastid;
+
+try($_) for qw(85955 85968 518 85967 519 85968 520 85969), @ARGV;
+
+exit 0;
+
+sub try
+{
+ my $t = shift;
+
+ print "$t : ";
+
+ if (defined $lastid) {
+ if ($t < $lastid) {
+ my $wt;
+ if (($wt = $t+86400-$lastid) > $pc9x_past_age) {
+ print "PCPROT: dup id on $t + 86400 - $lastid ($wt) > $pc9x_past_age, ignored\n";
+ return;
+ }
+ print "wt = $wt ";
+ } elsif ($t == $lastid) {
+ print "PCPROT: dup id on $t == $lastid, ignored\n";
+ return;
+ } elsif ($t > $lastid) {
+ if ($t - $lastid > $pc9x_future_age) {
+ print "PCPROT: dup id $t too far in future on $lastid\n";
+ return;
+ }
+ }
+ }
+
+ print "$lastid Ok\n";
+ $lastid = $t;
+}
+
+