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.