push non-pc9x nodes to the back for routing

Currently, if a directly connected non-pc9x node advertises a route
to another node, even if that node
This commit is contained in:
Dirk Koopman 2007-10-10 11:37:24 +01:00
parent 0181f6483f
commit be8bb8ddec
4 changed files with 12 additions and 14 deletions

View File

@ -1559,7 +1559,7 @@ sub pc92_handle_first_slot
}
$parent->here(Route::here($here));
$parent->version($version || $pc19_version) if $version;
$parent->build($build) if $build && $build > $parent->build;
$parent->build($build) if $build;
$parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call;
return ($parent, @radd);
}
@ -1674,16 +1674,9 @@ sub handle_92
# this is the main route section
# here is where all the routes are created and destroyed
# cope with missing duplicate node calls in the first slot for A or D
# cope with missing duplicate node calls in the first slot
my $me = $_[4] || '';
if (($sort eq 'A' || $sort eq 'D')) {
$me ||= _encode_pc92_call($parent) unless $me ;
} else {
unless ($me) {
dbg("PCPROT: this type of PC92 *must* have a node call in the first slot, ignored") if is_dbg('chanerr');
return;
}
}
$me ||= _encode_pc92_call($parent) unless $me ;
my @ent = map {my @a = _decode_pc92_call($_); @a ? \@a : ()} grep {$_ && /^[0-7]/} $me, @_[5 .. $#_];

View File

@ -422,7 +422,7 @@ sub pc92d
# send a config
sub pc92c
{
return _gen_pc92('C', 1, @_);
return _gen_pc92('C', 0, @_);
}
# send a keep alive

View File

@ -296,6 +296,8 @@ sub findroutes
# recursion detector
return () if $seen->{$call};
# return immediately if we are directly connected
if (my $dxchan = DXChannel::get($call)) {
$seen->{$call}++;
push @out, $level ? [$level, $dxchan] : $dxchan;
@ -308,8 +310,11 @@ sub findroutes
return () unless $nref;
foreach my $ncall (@{$nref->{parent}}) {
unless ($seen->{$ncall}) {
dbg("recursing from $call -> $ncall") if isdbg('routec');
my @rout = findroutes($ncall, $level+1, $seen);
# put non-pc9x nodes to the back of the queue
my $l = $level + ($nref->{do_pc9x} ? 0 : 30);
dbg("recursing from $call -> $ncall level $l") if isdbg('routec');
my @rout = findroutes($ncall, $l+1, $seen);
push @out, @rout;
}
}

View File

@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
$version = '1.54';
$subversion = '0';
$build = '167';
$build = '168';
1;