next up previous contents
Next: Änderung in der Datei Up: 4 Details der Implementierung Previous: 4 Details der Implementierung

Änderung in der Datei snmpd.c

  Die Datei snmpd.c enthält das Hauptprogramm des UCD-Agenten. Da hier bisher nur die Manager-Agenten-Kommunikation implementiert ist, muß sie um die Subagent-Agent-Kommunikation erweitert werden. Die Funktion receive ist beim Agenten für den Empfang von eingehenden Paketen zuständig. Durch die neuen Funktionen reading_data_from_tcpsockets und reading_data_from_udpsockets wird sie nun um diesen neuen Kommunikationsweg ergänzt.

Funktion receive

...
            default:
                printf("select returned %d\n", count);
                return -1;
        }
   
        reading_data_from_tcpsockets();
        reading_data_from_udpsockets();

        gettimeofday(nvp, (struct timezone *) NULL);
        if (nvp->tv_sec > svp->tv_sec
            || (nvp->tv_sec == svp->tv_sec && nvp->tv_usec > svp->tv_usec)){
#ifdef USING_ALARM_MODULE
            alarmTimer(nvp);
...
Für den Betrieb dieser Funktionen muß noch eine kleine Vorarbeit in der Funktion main geleistet werden.

Funktion main

...
    starttime.tv_usec += 1000000L;

    /* send coldstart trap via snmptrap(1) if possible */
    send_easy_trap (0);

    if (komm_init() < 0) {
       fprintf(stderr, "Fehler beim DPI-Socket einrichten.\n");
       exit(1);
    }

    if (!read_trap_database("/etc/trap.conf")) {
       if (snmp_dump_packet) 
          fprintf(stderr, "Fehler beim Einlesen der Zielrechner fuer SNMPv1 TRAPs.\n");
    }

    interne_teilbaeume_registrieren();


    memset(addrCache, 0, sizeof(addrCache));
    receive(sdlist, sdlen);
...
Die Deklarationen dieser neuen Funktionen sind in der Datei dpi.h zu finden. Diese Deklarationen werden folgendermaßen in die Datei snmpd.c eingefügt: der letzten include-Anweisung wird die Anweisung #include "dpi.h" angehängt.

Dieser Schritt muß auch für die Dateien in Abschnitt 4.2 und 4.3 durchgeführt werden.

Eine weitere Änderung betrifft die Anweisung

int snmp_dump_packet;
die zu
extern int snmp_dump_packet;
wird. Der Grund hierfür kann in Abschnitt 4.7 gefunden werden.



Copyright Munich Network Management Team