jablonka.czprosek.czf

hotsanic

Subversion Repositories:
[/] [trunk/] [modules/] [bgp/] [platform/] [default.pm] - Rev 36 Go to most recent revision

Compare with Previous - Blame - Download


package HotSaNICmod::OSdep;

use RRDs;

sub version {
        ($VERSION = '$Revision: 1.0 $') =~ s/.*(\d+\.\d+).*/$1/;
        my $platform;
        foreach (keys(%INC)) { $platform=$_ if $_ =~ /platform/; }
        return "$platform $VERSION";
}

sub sample {

#uncomment this for debug output to temp.txt
#all print will be done into the file
#$temp = "/opt/HotSaNIC/modules/bgp/temp.txt";
#open (TEMPFILE,">$temp");
#open (STDERR,">&TEMPFILE")  || die ("open STDERR failed");
#open (STDOUT,">&TEMPFILE")  || die ("open STDOUT failed");


        my %args=@_;

        $mtime=(stat("rrd"))[9];
        $now=time;

        utime $now,$now,"rrd";

        $IWCONF = $args{IWCONFIG};
        $IWLIST = $args{IWLIST};
        $hostap = $args{HOSTAP};


        my @IFACES=();
        my @IFMACS=();

        foreach (keys(%args)) {
                if (index($_,"IFACE:") >=0 ) {
                        (undef,$device)=split /:/;
                        push @IFACES,$device;
                }
        }
        foreach (keys(%args)) {
                if (index($_,"MAC,") >=0 ) {
                        (undef,$dev,$mac)=split /,/;
                        push @IFMACS,"$dev,$mac";
                }
        }

        foreach $device (@IFACES) {
                                if ( ! -e "rrd/$device.rrd" ) { system("./makerrd","$device","U") }
        } # foreach

                my $asnum = 0;
                my $pathlen = 0;
                my $refcnt = 0;
                my $signal = 0;
                my $voltage = 0;

                $command = "cat /tmp/bgp.txt";
                open (FILE,"$command|");
                while(<FILE>) {
                        $var=$_;
                        if ($var =~ /^10/) {
                            @path=split(" ",$var);
                            $pathlen=scalar(@path);
                            if ($pathlen > 2) {
#                               print "line: $pathlen";
#                               print "line: $_";
                                $asnum = $path[$pathlen-2];
                                $pathlen = $pathlen-2;
#                               print "$asnum $pathlen\n";
                                if ( ! -e "rrd/$asnum.rrd" ) { system("./makerrd","$asnum","U") }
                                RRDs::update "rrd/$asnum.rrd",time.":".$pathlen.":".$refcnt.":".$signal.":".$voltage;
#                               if ($ERROR = RRDs::error) { print time," ",$MODNAME,": unable to update `$asnum.rrd': $ERROR"; }
                                if ($ERROR = RRDs::error) { print time," bgp: unable to update `$asnum.rrd': $ERROR\n"; }
                                $pathlen = 0;
                            }
                        }
                } # while
                close(FILE);


#uncomment this for debug output to temp.txt
#all print will be done into the file
#       close (TEMPFILE);
#       close (STDERR);
#       close (STDOUT);
}
1;

Powered by WebSVN 2.2.1