X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXChannel.pm;h=c4a81c7f509b503a9c3025217f2a3f80b45c5177;hb=198c2082a99dcd8ae4dc2a740ee901cf4ac711b4;hp=a0b09548444a612545fd68c814f67cc7c9060fa9;hpb=8f58735f5c9c090f2e5e00e05c7ad0834eccb741;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index a0b09548..c4a81c7f 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -32,6 +32,7 @@ use DXVars; use DXDebug; use Filter; use Prefix; +use Route; use strict; use vars qw(%channels %valid @ISA $count); @@ -500,6 +501,26 @@ sub decode_input return ($sort, $call, $line); } +sub rspfcheck +{ + my ($self, $flag, $node, $user) = @_; + my $nref = Route::Node::get($node); + if ($nref) { + if ($nref->dxchan == $self) { + return 1 unless $user; + my @users = $nref->users; + return 1 if @users == 0 || grep $user eq $_, @users; + dbg("RSPF: $user not on $node") if isdbg('rspf'); + } else { + dbg("RSPF: Shortest path for $node is " . $nref->dxchan->{call}) if isdbg('rspf'); + } + } else { + return 1 if $flag; + dbg("RSPF: required $node not found" ) if isdbg('rspf'); + } + return 0; +} + no strict; sub AUTOLOAD {