|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Diese Funktion sendet eine ICMP-Nachricht. 'dest_host' ist die IP-Adresse
des Zielhosts, 'type' die Art des ICMP-Packets. 'code' ist ein ICMP-Kontrollcode,
der von der Art ('type') abhängig ist. 'data' ist ein Pointer auf Daten,
welche im Anschluß an den ICMP-Header gesendet werden sollen, 'length'
die Länge des Blocks in Bytes.
Es ist zu beachten, daß nach dem Aufruf dieser Funktion der Datenblock
weiterhin dem aufrufenden Code gehört.
Gibt E_NORMAL, oder E_BADDNAME, E_PARAMETER oder E_NOMEM zurück.
Eine Handler-Funktion, die die ankommenden ICMP-Datagramme sofort verarbeitet,
kann mit diesem Aufruf installiert werden.
Für jedes ICMP-Datagramm wird der Handler aufgerufen werden, egal, ob es
für die aufrufende Applikation bestimmt ist oder nicht. Es ist die Aufgabe
des Handlers, dieses zu überprüfen. Wenn das Datagramm für die
aufrufende Applikation nicht von Interesse ist, so muß der Handler ein
FALSE zurückliefern! Sonst sollte der Handler das Datagramm verarbeiten
und TRUE zurückgeben. In diesem Fall muß er das Datagramm über
den Aufruf ICMP_discard vernichten.
Beachten Sie, daß einige Arten von ICMP Datagrammen intern verarbeitet
werden und so niemals an installierte Handler weitergeleitet werden.
Die installierte Funktion wird aus dem Hauptinterrupt heraus aufgerufen,
darum darf nur ein geringer Betrag an Rechenzeit verbraucht werden. Daher
ist es nicht erlaubt, auf ein Event zu warten. Der Aufruf wird asynchron
im Supervisor-Modus getätigt, also seien Sie vorsichtig mit jedem
Betriebssystemaufruf, den Sie innerhalb der Handler-Funktion tätigen.
'install_code' kann folgendes sein:
Ein von einer Handlerfunktion verarbeitetes ICMP-Datagramm muß danach
mittels dieses Aufrufs vernichtet werden. Der Aufruf ist in der derzeitigen
Implementation identisch mit IP_discard (datagram, TRUE);
Der ICMP Manager
Der ICMP Manager enthält alle Funktionen, die für ICMP (Internet
Control Message Protokoll) benötigt werden. Da ICMP-Datagramme vorrangig
verarbeitet werden müssen, ist für ankommende Datagramme ein
Callback-Schema spezifiziert worden.
Die Aufrufe:
Die Funktion ICMP_send
int16 cdecl ICMP_send (uint32 dest_host, uint8 type, uint8 code,
void *data, uint16 length);
Funktion: Versendet ICMP-Datagramme.
Die Funktion ICMP_handler
int16 cdecl ICMP_handler (int16 cdecl (* handler) (IP_DGRAM *),
int16 install_code);
(De-)Installiert Handler für ICMP-Datagramme.
Die Funktion 'ICMP_discard'
void cdecl ICMP_discard (IP_DGRAM *datagram);
Vernichtet ein ICMP-Datagramm.
Zurück zur Startseite
Zum Anfang der Seite
English version not yet available. |