Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rpc_svc_cr(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

rpcbind(1M)

rpc(3N)

rpc_svc_create(3N)                                       rpc_svc_create(3N)

NAME
     rpcsvccreate: svccreate, svcdestroy, svcdgcreate, svcfdcreate,
     svcrawcreate, svctlicreate, svctpcreate, svcvccreate - Bibli-
     otheksroutinen für die Erzeugung von Serverhandles

BESCHREIBUNG
     Diese Routinen sind Teil der RPC-Bibliothek, die C-Programmen ermög-
     licht, Prozeduraufrufe auf Servern über ein Netzwerk durchzuführen.
     Diese Routinen betreffen die Erzeugung von Serverhandles. Wenn ein
     Handle einmal erzeugt wurde, kann der Server durch einen Aufruf von
     svcrun gestartet werden.

     Wenn Sie eine der rpc-Funktionen verwenden, müssen Sie bei der Über-
     setzung die Bibliothek libnsl dazubinden (cc -lnsl).

   Routinen

     Die Definition der Datenstruktur SVCXPRT ist in rpc(3N) beschrieben.

     #include <rpc/rpc.h>

     int
     svccreate(const void (*dispatch)(const struct svcreq *,
          const SVCXPRT *), const ulong prognum, const ulong versnum,
          const char *nettype);

          svccreate erzeugt Serverhandles für alle Transporte, die zur
          Klasse nettype gehören.

          nettype definiert eine Klasse von Transporten, die für eine
          bestimmte Anwendung verwendet werden können. Die Transporte wer-
          den in der Reihenfolge von links nach rechts in der Variable
          NETPATH und von oben nach unten in der netconfig-Datenbank aus-
          probiert.

          Wenn nettype NULL ist, wird standardmäßig netpath genommen.
          svccreate registriert den Dienst bei rpcbind [siehe
          rpcbind(1M)]. dispatch wird aufgerufen, wenn ein ferner Prozedu-
          raufruf für die angegebenen Nummern prognum und versnum ein-
          trifft. Dies erfordert den Aufruf von svcrun [siehe svcrun in
          rpcsvcreg(3N)]. Im Erfolgsfall liefert svccreate die Anzahl
          der Serverhandles zurück, die es erzeugt hat. Andernfalls wird 0
          zurückgegeben und die Fehlermeldung wird protokolliert.

     void
     svcdestroy(SVCXPRT *xprt);

          Ein Funktionsmakro, das das Serverhandle xprt des RPC-Dienstes
          löscht. Das Löschen schließt normalerweise die Freigabe privater
          Datenstrukturen mit ein (einschließlich xprt selbst). Die Verwen-
          dung von xprt nach einem Aufruf dieser Routine ist nicht erlaubt.




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

rpc_svc_create(3N)                                       rpc_svc_create(3N)

     SVCXPRT *
     svcdgcreate(const int fd, const uint sendsz, const uint recvsz);

          Diese Routine erzeugt ein Serverhandle für verbindungslose Dien-
          ste und liefert einen Zeiger auf das erzeugte Handle zurück. Im
          Fehlerfall liefert die Routine NULL zurück und es wird eine Feh-
          lermeldung protokolliert. Die beiden Parameter sendsz und recvsz
          sind die Größenangaben der Sende- und Empfangspuffer. Wenn die
          Werte 0 sind, werden geeignete Standardwerte ausgewählt. Der
          Dateideskriptor fd sollte zu einer geöffneten und verbundenen
          Datei gehören und an eine Adresse gebunden sein.

          Warnung:

          Da auf verbindungslosem Transport basierende RPC-Nachrichten nur
          eine begrenzte Anzahl an verschlüsselten Daten enthalten können,
          kann dieser Transport nicht für Prozeduren verwendet werden, die
          extrem große Argumente benötigen oder große Ergebnisse zurücklie-
          fern.

     SVCXPRT *
     svcfdcreate(const int fd, const uint sendsz, const uint recvsz);

          Diese Routine generiert ein Dienstobjekt für einen Dateideskrip-
          tor einer geöffneten Datei, der an eine Adresse gebunden ist, und
          liefert den Zeiger auf das erzeugte Handle zurück. Üblicherweise
          gilt der Dateideskriptor für einen verbindungsorientierten Trans-
          port, und die Verbindung besteht bereits. sendsz und recvsz geben
          die Größen der Sende- und Empfangspuffer an. Falls diese den Wert
          0 haben, werden geeignete Standardwerte ausgewählt. Die Routine
          liefert im Fehlerfall NULL zurück, und es wird eine Fehlermeldung
          protokolliert.

     SVCXPRT *
     svcrawcreate(void);

          Diese Routine erzeugt ein Serverhandle für Pseudo-RPC und liefert
          einen Zeiger auf das Handle zurück. Der "Transport" ist in Wirk-
          lichkeit ein Puffer innerhalb des Prozeßadreßraums. Deshalb
          sollte sich der entsprechende RPC-Client innerhalb desselben
          Adreßraums befinden [siehe clntrawcreate in
          rpcclntcreate(3N)]. Die Routine ermöglicht die Simulation von
          RPC ohne den Einfluß des Kerns. Die Routine liefert im Fehlerfall
          NULL zurück, und es wird eine Fehlermeldung protokolliert.










Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

rpc_svc_create(3N)                                       rpc_svc_create(3N)

     SVCXPRT *
     svctlicreate(const int fd, const struct netconfig *netconf,
          const struct tbind *bindaddr, const uint sendsz,
          const uint recvsz);

          Diese Routine erzeugt ein RPC-Serverobjekt und liefert den Zeiger
          auf das Handle zurück. fd ist der Dateideskriptor für den Dienst.
          Falls fd den Wert RPCANYFD hat, öffnet die Routine eine Datei
          für den Transport, der durch netconf spezifiziert ist. Falls der
          Dateideskriptor nicht gebunden ist, wird er an die Adresse gebun-
          den, die in bindaddr angegeben ist, wenn diese Adresse nicht NULL
          ist. Ansonsten wird er an eine Datei mit einer Standardadresse
          gebunden, die anhand des Transports ausgewählt wird. Falls eine
          Standardadresse gewählt wird, wird die Anzahl offenstehender Ver-
          bindungsanfragen für verbindungsorientierte Transporte auf 8
          gesetzt. Der Benutzer kann die Größe der Sende- und Empfangspuf-
          fer durch die Parameter sendsz und recvsz bestimmen. Bei Angabe
          von 0 werden geeignete Standardwerte gewählt. Die Routine liefert
          im Fehlerfall NULL zurück, und es wird eine Fehlermeldung proto-
          kolliert.

     SVCPRT *
     svctpcreate(const void (*dispatch)(const RQSTP *, const SVCXPRT *),
          const ulong prognum, const ulong versnum,
          const struct netconfig *netconf);

          svctpcreate erzeugt ein Serverobjekt für den Transport, der
          durch netconf festgelegt ist, und registriert sich selbst mittels
          rpcbind. Bei einem fernen Prozeduraufruf für das gegebene Pro-
          gramm prognum der Version versnum wird dispatch aufgerufen. Dies
          erfordert den Aufruf von svcrun. svctpcreate liefert im
          Erfolgsfall einen Zeiger auf das Serverhandle zurück. Andernfalls
          wird NULL zurückgeliefert und eine Fehlermeldung protokolliert.

     SVCXPRT *
     svcvccreate(const int fd, const uint sendsz, const uint recvsz);

          Diese Routine erzeugt ein RPC-Serverhandle für verbindungs-
          orientierte Transporte und liefert einen Zeiger auf das Handle
          zurück. Der Benutzer kann die Größen von Sende- und Empfangspuf-
          fer durch die Parameter sendsz und recvsz festlegen. Bei Angabe
          der Größe 0 werden geeignete Standardwerte ausgewählt. Der Datei-
          deskriptor fd sollte zu einer geöffneten Datei gehören und an
          eine Adresse gebunden sein. Im Fehlerfall wird NULL zurückgelie-
          fert, und es wird eine Fehlermeldung protokolliert.

SIEHE AUCH
     rpcbind(1M), rpc(3N), rpcsvccalls(3N), rpcsvcerr(3N),
     rpcsvcreg(3N).





Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026