X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRoute.pm;h=ef76c9e8b5a793201e871b28a776ee2277c42f82;hb=f18ba64dd93bbf7c47e6b5143bfc99af817888e8;hp=eb83af11f8e16d6c1cb55e7e6429ddf6905911af;hpb=ba799b8ac9feef688cff478a4006399b6dfc183f;p=spider.git diff --git a/perl/Route.pm b/perl/Route.pm index eb83af11..ef76c9e8 100644 --- a/perl/Route.pm +++ b/perl/Route.pm @@ -22,7 +22,7 @@ use DXUtil; use strict; -use vars qw(%list %valid $filterdef); +use vars qw(%list %valid $filterdef $maxlevel); %valid = ( call => "0,Callsign", @@ -32,6 +32,7 @@ use vars qw(%list %valid $filterdef); cq => '0,CQ Zone', state => '0,State', city => '0,City', + ip => '0,IP Address,piplist', ); $filterdef = bless ([ @@ -53,6 +54,7 @@ $filterdef = bless ([ ['by_state', 'ns', 9], ], 'Filter::Cmd'); +$maxlevel = 25; # maximum recursion level in Route::config sub new { @@ -205,7 +207,7 @@ sub config $pcall = ' ' x length $pcall; # recursion detector - if ((DXChannel::get($call) && $level > 1) || $seen->{$call}) { + if ((DXChannel::get($call) && $level > 1) || $seen->{$call} || $level > $maxlevel) { $line .= ' ...'; push @out, $line; return @out; @@ -239,7 +241,7 @@ sub config push @out, $line if length $line; } else { # recursion detector - if ((DXChannel::get($call) && $level > 1) || $seen->{$call}) { + if ((DXChannel::get($call) && $level > 1) || $seen->{$call} || $level > $maxlevel) { return @out; } $seen->{$call}++; @@ -269,11 +271,14 @@ sub cluster { my $nodes = Route::Node::count(); my $tot = Route::User::count(); - my $users = scalar DXCommandmode::get_all(); + my ($users, $maxlocalusers) = DXCommandmode::user_count(); my $maxusers = Route::User::max(); my $uptime = main::uptime(); + my $localnodes = $DXChannel::count - $users; + + return ($nodes, $tot, $users, $maxlocalusers, $maxusers, $uptime, $localnodes); + - return " $nodes nodes, $users local / $tot total users Max users $maxusers Uptime $uptime"; } # @@ -370,12 +375,26 @@ sub dxchan return $dxchan[0]; } +# IP address handling +# this allows one to ask whether an IP address has been used with this node or let's one set an IP address for this node. +sub ip +{ + my $self = shift; + my $node = shift; + my $ipin = shift; + + $self->{ip} = {} unless ref $self->{ip}; + my $ref = $self->{ip}; + my $ip = $ref->{$node}->[0]; + $ip = $ref->{$node} = [$ipin, $main::systime] if $ipin; + return $ip; +} + sub delete_interface { } - # # track destruction #