Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Benutzerdefinierte Exits

&pagelevel(4)&pagelevel

Für die Exit-Behandlung mit eigenen Prozeduren ergänzen Sie den Modul EXITTEL.C um den entsprechenden Code.

Wenn Sie einen Exit für send oder receive definieren, sind Sie auch für die Behandlung aller Sonderzeichen zuständig. Insbesondere müssen Sie dafür sorgen, dass

  • ein Zeichen ’0xff’ beim Senden verdoppelt wird,

  • zwei aufeinanderfolgende Zeichen ’0xff’ beim Empfangen in ein einzelnes ’0xff’ verwandelt werden.


Benutzerdefinierte Server-Exits im TELNET-Server aktivieren

Den so erstellten Code aktivieren Sie im TELNET-Server mit der Option -e:

-e [open:<selector1>!][close:<selector2>!][receive:<selector3>!][send:<selector4>]

Bei Angabe von * für <selector> wird grundsätzlich der Exit-Mechanismus ohne die genauer spezifizierende Angabe von <selector> gestartet.


Benutzerdefinierte Server-Exits im TELNET-Client aktivieren

Im TELNET-Client können Sie Server-Exits für send und receive mit dem Kommando rexit (remote exit) aktivieren. Dabei beschränkt sich die Wirkung von rexit jedoch auf die Verbindung dieses speziellen Clients zum Server.

Das rexit-Kommando hat folgende Syntax:

rexit [receive:<selector1>][<send:<selector2>]

Folgende Fälle sind zu unterscheiden:

  • Server-Options sind angegeben:

    Wenn für eine Verbindung zwischen Client und Server kein rexit-Kommando angegeben wurde, gilt die Einstellung der Server-Option -e.

    Gibt es für eine Exit-Routine Angaben sowohl im rexit-Kommando als auch in der Server-Option -e, so gelten die Angaben des rexit-Kommandos. Eine spätere Angabe von * für <selector1> bzw. <selector2> im rexit-Kommando bewirkt ein Rücksetzen auf die Angabe in der Server-Option. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.

  • Es sind keine Server-Options angegeben:

    Die Angabe von * für <selector> im rexit-Kommando aktiviert die Exit-Routine. Eine genauere Unterscheidung der Behandlungsart, wie sie durch die Angabe von <selector> ermöglicht wird, ist in diesem Fall nicht vorgesehen. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.


Benutzerdefinierte Client-Exits im TELNET-Client aktivieren

Benutzerdefinierte Exit-Routinen für den Client stellen Sie mit dem Kommando exit im Client ein:

exit [receive:<selector1>][<send:<selector2>]

Bei Angabe von * für <selector1> bzw. <selector2> wird zwar der Entry YAPTEXIT angesprungen, jedoch ohne die genauer spezifzierende Angabe von selector. Fehlt die Angabe für <selector>, so wird keine Exit-Routine angesprungen. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.


Beispiele

  1. Clients vom Rechner Rechner sollen keinen Zugang zum TELNET-Server erhalten.
    Dies lässt sich mit folgendem benutzerdefinierten Modul mit Entry YAPTEXIT erreichen:

    YAPTEXIT (struct yaptx *exparam)
    {
       switch (exparam->action) {
          case telopen:
             if (strcmp(exparam->hname,"Rechner") == 0)
                return(-1);
             break;
          default;
             break;
      }
    }
    

    Dieser Modul muss in der Bibliothek SYSLNK.TCP-IP-AP.nnn den EXITTEL-Modul ersetzen und mit Option -e open:* aktiviert werden. Zur Ablaufzeit wird der Externverweis YAPTEXIT aus dem benutzerdefinierten Modul befriedigt.

  2. Für einen TELNET-Server sind zwei verschiedene benutzerdefinierte Open-Exits definiert:

    • Meldet sich ein Client von Rechner1, so soll exit1 angesprungen werden.

    • Meldet sich ein Client von Rechner2, so soll exit2 angesprungen werden.

    YAPTEXIT (struct yaptx *exparam)
    {
       if ((exparam->action) == telopen)
          if (strcmp(exparam.hname,"Rechner1")==0)
             exit1(exparam)
          else
             if ((strcmp(exparam.hname,"Rechner2")==0)
                exit2(exparam);
    }
    

    Die entsprechende Option lautet: -e open;*

  3. Es sollen zwei verschiedene Code-Umsetzungen für die Daten definiert werden, die vom Client zum Server gesendet werden. So soll z.B. x’0102’ nach x’0a’ bzw. x’0a0b’ umgesetzt werden. Im nachfolgend dargestellten Beispiel heissen die Code-Umsetzungsroutinen proc1 bzw. proc2. Die Erkennungsstrings sind "proc1" bzw. "proc2".

    YAPTEXIT (struct yaptx *exparam)
    {
       if ((exparam->caller) == client) && (exparam->action == telsend))
          if (strcmp(exparam->selector,"proc1")==0)
             proc1(exparam);
          else
             if ((strcmp(exparam->selector,"proc2")==0)
                proc2(exparam);
    }
    

    Die entsprechenden Kommandos zu Einschalten dieser Exits lauten:

    exit send:proc1 bzw. exit send:proc2


Benutzerdefinierte TELNET-Exits unter POSIX

Der POSIX-TELNET entsteht aus dem Zusammenbinden der LLMs TELPOSIX und EXITTEL. Somit können Sie auch unter POSIX mit den TELNET-Exits arbeiten.

Der Lieferumfang von interNet Services beinhaltet den Dummy-Modul EXITTEL, der nur einen Rücksprung ausführt.

Eigene TELNET-Exits schreiben Sie wie folgt: