Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

t_rcvuderr() - Fehlerinformation über gesendetes Datagramm abfragen

&pagelevel(4)&pagelevel

#include <xti.h>

int t_rcvuderr(int fd, struct t_uderr *uderr);

Beschreibung

Mit der Funktion t_rcvuderr() kann der Benutzer im verbindungslosen Modus Informationen abfragen, die sich auf einen Fehler bei einem zuvor abgeschickten oder empfangenen Datagramm beziehen. t_rcvuderr() sollte nur nach einer Fehleranzeige aufgerufen werden.

Der Parameter fd spezifiziert den lokalen Transportendpunkt, über den die Fehlermeldung empfangen wird. Der Parameter uderr ist ein Zeiger auf ein Objekt vom Typ struct t_uderr.

Die Struktur t_uderr ist in <xti.h> wie folgt deklariert:

struct t_uderr {
   struct netbuf addr;
   struct netbuf opt;
   long error;
};

Vor Aufruf von t_rcvuderr() muss der Benutzer in uderr->addr die Komponente maxlen mit dem Wert für die jeweils maximale Puffergröße versorgen.

Die Rückgabe protokollspezifischer Optionen in uderr->opt wird vom Transportanbieter nicht unterstützt.

In uderr->error liefert t_uderr() einen protokollspezifischen Fehlercode zurück. Dieser Fehlercode entspricht einem der möglichen Werte für die Fehlervariable errno (definiert in <errno.h>). Folgende Codes sind derzeit möglich:

EADDRNOTAVAIL

Der Partner, an den das zuletzt mit t_sndudata() verschickte Datagramm gesendet werden sollte, ist nicht erreichbar.

ENETDOWN

Der Transportendpunkt wurde durch das Transportsystem von diesem getrennt. In diesem Fall sollte der Benutzer den Transportendpunkt mit t_close() schließen.

Wenn der Benutzer das fehlerhafte Datagramm nicht ermitteln will, kann er beim Aufruf von t_rcvuderr() den Null-Zeiger als aktuellen Parameter für uderr angeben.

Returnwert

0:

Bei Erfolg.

-1:

Bei Fehler. t_ errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

TBADF

Der angegebene Dateideskriptor verweist nicht auf einen Transportendpunkt.

TBUFOVFLW

Die Anzahl der Bytes, die für die zurückzuliefernde Protokolladresse oder die Optionen angelegt wurde, ist zu klein, um diese Informationen zu speichern. Die Informationen, die in *uderr zurückzuliefern sind, werden nicht berücksichtigt.

TNOTSUPPORT

Diese Funktion wird vom darunter liegenden Transportanbieter nicht unterstützt.

TNOUDERR

Zurzeit liegt auf dem angegebenen Transportendpunkt keine Fehlermeldung zu einem Datagramm vor.

TSYSERR

Während der Ausführung dieser Funktion ist ein Systemfehler aufgetreten.

Siehe auch

t_rcvudata(), t_sndudata()