Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Exit-Routinen

&pagelevel(4)&pagelevel

Für die Behandlung der verschiedenen Exits übergeben die Aufrufer der Exit-Routine (TELNET-Client oder TELNET-Server) an den Einsprungspunkt YAPTEXIT die Adresse einer Parameterliste. Die Struktur yaptx dieser Parameterleiste wird unter dem Namen yaptx.h in SYSLIB.TCP-IP-AP.nnn ausgeliefert.


Struktur yaptx

Die Struktur yaptx ist wie folgt definiert:

struct yaptx {
        int     caller;         /* Aufrufer: S=Server, C=Client            */
#define client  0x01            /* X'01' Client                            */
#define server  0x02            /* X'02' Server                            */
        int     action          /* main action code                        */
#define telrecv 0x01            /* action = receive                        */
#define telsend 0x02            /* action = send                           */
#define telopen 0x03            /* action = open connection                */
#define telclos 0x04            /* action = close connection               */
        char   *selector;       /* Selector                                */
        int     portno;         /* Port-Nummer (Server-Port)               */
        char    hname[128+1];   /* Hostname von Server / Client            */
        char    reserved[3];    /* Reserved                                */
        int     connid;         /* identifies uniquely client-server       */
                                /* connection. Only for Server             */
        char   *inbuf;          /* Address of input buffer                 */
        int     inbuflen;       /* Length of input buffer                  */
        char   *outbuf;         /* Address of output buffer                */
        int     outbuflen;      /* Length of output buffer                 */
        int     outDatalen;     /* Length of output data                   */


Beschreibung der Parameter

Folgende Parameter werden übergeben:

  • Aufrufer der Exit-Routine (caller)

  • Typ des Entries (action)

  • abdruckbare Zeichenkette zur Identifizierung der Exit-Routine (selector)

  • Connection Identifier (connid)

  • Rechnername (hname)

    • des adressierten TELNET-Servers (bei TELNET-Clients)

    • des aufrufenden TELNET-Servers (bei TELNET-Servern)

  • Portnummer (portno)

    • des adressierten TELNET-Servers (bei TELNET-Clients)

    • des adressierten TELNET-Clients (bei TELNET-Servern)

  • bei Send-/Receive-Exits: inbuf, inbuflen, outbuf, outbufLen, outDataLen
    outDataLen muss vom Exit selbst versorgt werden.

caller

spezifiziert, ob die Exit-Routine vom TELNET-Client oder vom TELNET-Server aufgerufen wurde.

action

spezifiziert den Typ des Entries (receive, send, open connection, close connection)

selector

Abdruckbare Zeichenkette (String) zur Auswahl der gewünschten Exit-Routine. Die Zeichenkette wird durch ’\0’ abgeschlossen.

portno

Port-Nummer von Server bzw. Client:

  • Bei TELNET-Clients spezifiziert portno die Port-Nummer des adressierten TELNET-Servers.

  • Bei TELNET-Servern spezifiziert portno die Port-Nummer des adressierten TEL-NET-Clients.

hname[128+1]

Hostname von Server bzw. Client:

  • Bei TELNET-Clients spezifiziert hname den Rechnernamen des adressierten TELNET-Servers.

  • Bei TELNET-Servern spezifiziert hname den Rechnernamen des adressierten TELNET-Clients.

inBuf

enthält die Adresse des Puffers, in dem die umzuwandelnden Daten stehen (Eingabepuffer). Nur bei Send-/Receive-Exits von Bedeutung.

inBufLen

spezifiziert die Länge (Anzahl der gültigen Bytes) des Eingabepuffers. Nur bei Send-/Receive-Exits von Bedeutung.

outBuf

enthält die Adresse des Ausgabepuffers.Nur bei Send-/Receive-Exits von Bedeutung.

outBuflen

spezifiziert die Länge des Ausgabepuffers.Nur bei Send-/Receive-Exits von Bedeutung.

outDataLen

Vor dem Rücksprung zum Aufrufer muss die Routine in outDataLen hinterlegen, wieviele Bytes im Ausgabepuffer gültig sind und somit übertragen werden müssen. Nur bei Send-/Receive-Exits von Bedeutung.

connid

Connection-Identifier. Der Connection Identifier identifiziert die Client-Server-Verbindung bei festem TELNET-Server eindeutig. Wenn mehrere Server aktiv sind, identifiziert das Paar (portno, connid) die Verbindung zwischen Client und Server und somit den TELNET-Client eindeutig (siehe auch Parameter connid). Von Bedeutung ist dies z.B. bei der Code-Umsetzung, wenn zwei Bytes auf ein Byte abgebildet werden. In diesem Fall muss die Exit-Routine für die Umsetzung das erste Byte zwischenspeichern, um bei Eintreffen des zweiten Bytes die Umsetzung durchzuführen. Dabei gewährleistet connid die eindeutige Zuordnung des Zwischenspeichers zur jeweiligen Verbindung.


Ergebnisse und Return-Werte der Exit-Routinen

Exit-Routinen müssen in jedem Fall einen Return-Wert liefern. Jeder Exit, für den keine anwender-definierte Exit-Routine existiert, muss den Wert ’0xff’ als Return-Wert liefern.


Ergebnisse und Return-Werte bei send und receive

Nach ordnungsgemäßer Ausführung enthält outbuf den umgesetzten Code und outDataLen die Länge des umgesetzten Codes. Return-Wert: 0.

Wenn ein Exit feststellt, dass zuwenig Speicher für eine Code-Umsetzung vorhanden ist, muss der Return-Wert -2 zurückgeliefert werden.

Bei inbuf = 0 wird lediglich abgefragt, ob ein entsprechender Exit definiert wurde oder nicht:

  • Falls ein entsprechender Exit definiert ist, muss der Return-Wert gleich 0 sein.

  • Falls kein entsprechender Exit definiert ist, muss der Return-Wert gleich ’0xff’ sein.


Ergebnisse und Return-Werte bei open und close

open

Erlaubt der Exit den Zugang zum Server, so ist der Return-Wert gleich 0, andernfalls muss er gleich -1 sein.

close

close liefert stets den Return-Wert 0.