} else {
my $ref = DXUser->get_current($field[1]);
if ($ref && $ref->is_clx) {
- route($field[1], pc84($field[2], $field[1], $field[2], $field[3]));
+ $self->route($field[1], pc84($field[2], $field[1], $field[2], $field[3]));
} else {
$self->route($field[1], $line);
}
} else {
my $ref = DXUser->get_current($field[1]);
if ($ref && $ref->is_clx) {
- route($field[1], pc85($field[2], $field[1], $field[2], $field[3]));
+ $self->route($field[1], pc85($field[2], $field[1], $field[2], $field[3]));
} else {
$self->route($field[1], $line);
}
if ($ref && $ref->is_clx) {
$self->route($field[1], $line);
} else {
- route($field[1], pc34($field[2], $field[1], $field[4]));
+ $self->route($field[1], pc34($field[2], $field[1], $field[4]));
}
}
return;
if ($ref && $ref->is_clx) {
$self->route($field[1], $line);
} else {
- route($field[1], pc35($field[2], $field[1], $field[4]));
+ $self->route($field[1], pc35($field[2], $field[1], $field[4]));
}
}
return;
my $line = shift;
my @dxchan = DXChannel->get_all();
my $dxchan;
+ my ($wwv_dxcc, $wwv_itu, $wwv_cq, $org_dxcc, $org_itu, $org_cq) = (0..0);
+ my @dxcc = Prefix::extract($_[7]);
+ if (@dxcc > 0) {
+ $wwv_dxcc = $dxcc[1]->dxcc;
+ $wwv_itu = $dxcc[1]->itu;
+ $wwv_cq = $dxcc[1]->cq;
+ }
+ @dxcc = Prefix::extract($_[8]);
+ if (@dxcc > 0) {
+ $org_dxcc = $dxcc[1]->dxcc;
+ $org_itu = $dxcc[1]->itu;
+ $org_cq = $dxcc[1]->cq;
+ }
# send it if it isn't the except list and isn't isolated and still has a hop count
# taking into account filtering and so on
my ($filter, $hops);
if ($dxchan->{wwvfilter}) {
- ($filter, $hops) = $dxchan->{wwvfilter}->it(@_, $self->{call} );
+ ($filter, $hops) = $dxchan->{wwvfilter}->it(@_, $self->{call}, $wwv_dxcc, $wwv_itu, $wwv_cq, $org_dxcc, $org_itu, $org_cq);
next unless $filter;
}
if ($dxchan->is_node) {
my $line = shift;
my @dxchan = DXChannel->get_all();
my $dxchan;
+ my ($wcy_dxcc, $wcy_itu, $wcy_cq, $org_dxcc, $org_itu, $org_cq) = (0..0);
+ my @dxcc = Prefix::extract($_[11]);
+ if (@dxcc > 0) {
+ $wcy_dxcc = $dxcc[1]->dxcc;
+ $wcy_itu = $dxcc[1]->itu;
+ $wcy_cq = $dxcc[1]->cq;
+ }
+ @dxcc = Prefix::extract($_[12]);
+ if (@dxcc > 0) {
+ $org_dxcc = $dxcc[1]->dxcc;
+ $org_itu = $dxcc[1]->itu;
+ $org_cq = $dxcc[1]->cq;
+ }
# send it if it isn't the except list and isn't isolated and still has a hop count
# taking into account filtering and so on
my ($filter, $hops);
if ($dxchan->{wcyfilter}) {
- ($filter, $hops) = $dxchan->{wcyfilter}->it(@_, $self->{call} );
+ ($filter, $hops) = $dxchan->{wcyfilter}->it(@_, $self->{call}, $wcy_dxcc, $wcy_itu, $wcy_cq, $org_dxcc, $org_itu, $org_cq);
next unless $filter;
}
if ($dxchan->is_clx || $dxchan->is_spider || $dxchan->is_dxnet) {
Log('ann', $target, $_[0], $text);
+ # obtain country codes etc
+ my ($ann_dxcc, $ann_itu, $ann_cq, $org_dxcc, $org_itu, $org_cq) = (0..0);
+ my @dxcc = Prefix::extract($_[0]);
+ if (@dxcc > 0) {
+ $ann_dxcc = $dxcc[1]->dxcc;
+ $ann_itu = $dxcc[1]->itu;
+ $ann_cq = $dxcc[1]->cq;
+ }
+ @dxcc = Prefix::extract($_[4]);
+ if (@dxcc > 0) {
+ $org_dxcc = $dxcc[1]->dxcc;
+ $org_itu = $dxcc[1]->itu;
+ $org_cq = $dxcc[1]->cq;
+ }
+
# send it if it isn't the except list and isn't isolated and still has a hop count
# taking into account filtering and so on
foreach $dxchan (@dxchan) {
my ($filter, $hops);
if ($dxchan->{annfilter}) {
- my ($ann_dxcc, $ann_itu, $ann_cq, $org_dxcc, $org_itu, $org_cq) = (0..0);
- my @dxcc = Prefix::extract($_[0]);
- if (@dxcc > 0) {
- $ann_dxcc = $dxcc[1]->dxcc;
- $ann_itu = $dxcc[1]->itu;
- $ann_cq = $dxcc[1]->cq;
- }
- @dxcc = Prefix::extract($_[4]);
- if (@dxcc > 0) {
- $org_dxcc = $dxcc[1]->dxcc;
- $org_itu = $dxcc[1]->itu;
- $org_cq = $dxcc[1]->cq;
- }
($filter, $hops) = $dxchan->{annfilter}->it(@_, $self->{call}, $ann_dxcc, $ann_itu, $ann_cq, $org_dxcc, $org_itu, $org_cq);
next unless $filter;
}
unless ($dxchan) {
my $cl = DXCluster->get_exact($call);
$dxchan = $cl->dxchan if $cl;
+ if (ref $dxchan) {
+ if (ref $self && $dxchan eq $self) {
+ dbg('chan', "PCPROT: Trying to route back to source, dropped");
+ return;
+ }
+ }
}
if ($dxchan) {
my $routeit = adjust_hops($dxchan, $line); # adjust its hop count by node name
if ($routeit) {
$dxchan->send($routeit);
}
+ } else {
+ dbg('chan', "PCPROT: No route available, dropped");
}
}