next up previous contents
Next: Listing der Beispiel-Kaskadendatei mib_gets.pl Up: Listings der Beispiel-Dateien Previous: Listing von subagent_start

Listing von subagent_standard.pl

# snmp - Subagent in Perl implementiert

sub Subagent {

########################################################
# Beginn des Hauptprogramms
########################################################

&initial_MIB;    # Intialisiere die MIB fuer den Subagenten

# Ermitteln des TCP-Port's, der fuer die DPI-Kommunikation
# mit dem Agenten benutzt werden soll.
$Port = &qDPIport;
print "Port:$Port\n";

# Ueber den ermittelten Port eine TCP-Verbindung zum Agenten
# aufbauen (fuer die DPI-Kommunikation) => Handle: DPI_Anschluss
&TCPConnect($Port);

# Oeffnen der DPI-Verbindung
&DPI_Open;
sleep 1;

# Registrieren des Teilbaums
&DPI_Register; 

#--------------------------------------------------------------
# Warten auf eine Anfrage 
while(TRUE)    # Warten auf DPI-Anfragen des Agenten
    {
    recv(DPI_Anschluss,$Laenge,2,0);
    $Laenge = unpack("n",$Laenge);
    recv(DPI_Anschluss,$dpi_packet,$Laenge,0);    
    @dpi_header = unpack("H2H2H2nH2",$dpi_packet);    # Header auslesen
    
    if ($dpi_header[4] eq "01")    # Falls get-Request
        {
        print "Get-Request empfangen\n";
        &answer_get;        # Beantworte get-Request
        }
    elsif ($dpi_header[4] eq "02")    # falls getnext-Request
        {
        print "Getnext-Request empfangen\n";
        &answer_getnext;    # Beantworte getnext-Request
        }    
    elsif ($dpi_header[4] eq "03" || $dpi_header[4] eq "0a" || $dpi_header[4] eq "0b")
        {    # falls set-Request Gruppe
        &answer_setgrp($dpi_header[4]);    
        }
    elsif ($dpi_header[4] eq "05")    # falls Response
        {
        print "Response empfangen\n";
        next;
        }    
    else
        {
        print "Undefinierbare Nachricht empfangen\n";
        print "gemeldeter Packettyp: $dpi_header[5]\n";
        }
    } 
#--------------------------------------------------------------
# Unregistrieren des Teilbaums
&DPI_UnRegister;

# Schliessen der DPI-Verbindung
&DPI_Close;

# Schliessen des Handles fuer die TCP-Verbindung zum Agenten
close(DPI_Anschluss);
} 
########################################################
# Ende des Hauptprogramms
########################################################


Copyright Munich Network Management Team