fix init command so that it throws PC21s down the other channels
[spider.git] / cmd / init.pl
1 #
2 # reinit a cluster connection
3 #
4 # Copyright (c) 1999 Dirk Koopman G1TLH
5 #
6 # $Id$
7 #
8 my ($self, $line) = @_;
9 my @calls = split /\s+/, $line;
10 my $call;
11 my @out;
12
13 return (1, $self->msg('e5')) if $self->priv < 5;
14
15 foreach $call (@calls) {
16         $call = uc $call;
17         next if $call eq $main::mycall;
18         my $dxchan = DXChannel->get($call);
19         if ($dxchan) {
20                 if ($dxchan->is_ak1a) {
21                         
22                         # first clear out any nodes on this dxchannel
23                         my @gonenodes = grep { $_->dxchan == $dxchan } DXNode::get_all();
24                         foreach my $node (@gonenodes) {
25                                 next if $node->dxchan == $DXProt::me;
26                                 next unless $node->dxchan == $dxchan;
27                                 DXProt::broadcast_ak1a(DXProt::pc21($node->call, 'Gone, re-init') , $dxchan) unless $dxchan->{isolate}; 
28                                 $node->del();
29                         }
30                         $dxchan->send(DXProt::pc38());
31                         $dxchan->send(DXProt::pc18());
32                         $dxchan->state('init');
33                         push @out, $self->msg('init1', $call);
34                 } 
35         } else {
36                 push @out, $self->msg('e10', $call);
37         }
38 }
39
40 return (1, @out);
41