next up previous contents
Next: Registrierung der Teilbäume Up: Anmeldung beim DPI-Agenten Previous: Anmeldung beim DPI-Agenten

Eröffnen einer Verbindung

Bevor ein Subagent DPI-Pakete vom Agenten empfangen bzw. an diesen schicken kann, muß er sich beim Agenten anmelden und sich als Subagent identifizieren. Beide Schritte werden durch die Funktion do_connect_and_open() realisiert, die sich im Modul 'dpi_system.c befindet. Die an diese Stelle aufgerufenen Funktionen, die dem tatsächlichen Verbindungsaufbau dienen, befinden sich in den Modulen 'snmp_lDPI.c', 'snmp_mDPI.c' sowie 'snmp_qDPI.c'.

Um eine Verbindung zum Agenten zu eröffnen, wird in do_connect_and_open() die Funktion DPIconnect_to_agent_TCP() aufgerufen. Sie erwartet zwei Argumente:

Wurde die Verbindung zum Agenten erfolgreich aufgebaut, gibt die Funktion einen Deskriptor zurück, der die Verbindung zum Agenten repräsentiert. Dieser Deskriptor wird hauptsächlich beim Senden und Empfangen von DPI-Paketen verwendet. Im Fehlerfall wird ein negativer Fehlercode zurückgegeben.

Im einem zweiten Schritt identifizieren wir uns beim Agenten. Wir bauen uns hierzu ein DPI OPEN Paket, schicken es an den Agenten und warten danach auf dessen RESPONSE Paket. Der Agent kann dabei unseren OPEN Request verweigern oder akzeptieren.

Ein DPI OPEN Paket wird durch den Aufruf von mkDPIopen() aufgebaut. Diese Funktion erwartet dabei folgende Argumente:

Als Rückgabewert liefert mkDPIopen() einen Zeiger auf einen statischen Speicherbereich, in dem das DPI OPEN Paket steht. Im Fehlerfall wird NULL zurückgegeben. Nachdem das OPEN Paket aufgebaut wurde, wird es an den Agenten geschickt. Dies wir durch die Funktion DPIsend_to_agent() realisiert. Sie erwartet folgende Argumente:

Der Rückgabewert der Funktion ist entweder Null (wird durch DPI_RC_OK repräsentiert) oder ein entsprechender Fehlercode, der in 'snmp_dpi.h' definiert ist.

Nachdem wir nun das Paket an den Agenten geschickt haben, warten wir auf die Antwort auf unseren OPEN Request. Das Warten auf ein Paket vom Agenten wird durch die Funktion DPIawait_packet_from_agent() realisiert, welche folgende Argumente erwartet:

Der Rückgabewert der Funktion ist entweder Null (DPI_RC_OK) oder ein entsprechender Fehlercode, der in 'snmp_dpi.h' definiert ist.

Haben wir ein Paket erhalten, müssen wir prüfen ob es sich dabei um ein RESPONSE Paket auf unseren OPEN Request handelt. Zudem müssen wir sicherstellen, daß uns der Agent als gültigen Subagenten akzeptiert hat. Dazu parsen wir das angekommene Paket durch den Aufruf von pDPIpacket(), das einen Zeiger auf ein Paket erwartet, und nehmen danach die entsprechenden Prüfungen vor.

Damit ist der reine Verbindungsaufbau zum Agenten abgeschlossen.


next up previous contents
Next: Registrierung der Teilbäume Up: Anmeldung beim DPI-Agenten Previous: Anmeldung beim DPI-Agenten
Copyright Munich Network Management Team