summaryrefslogtreecommitdiff
path: root/static/v10/man3/ipc.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
commit97d5c458cfa039d857301e1ca7d5af3beb37131d (patch)
treeb460cd850d0537eb71806ba30358840377b27688 /static/v10/man3/ipc.3
parentb89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff)
build: Better Build System
Diffstat (limited to 'static/v10/man3/ipc.3')
-rw-r--r--static/v10/man3/ipc.3348
1 files changed, 0 insertions, 348 deletions
diff --git a/static/v10/man3/ipc.3 b/static/v10/man3/ipc.3
deleted file mode 100644
index 68679457..00000000
--- a/static/v10/man3/ipc.3
+++ /dev/null
@@ -1,348 +0,0 @@
-.TH IPC 3X
-.CT 2 comm_proc
-.SH NAME
-ipccreat, ipcopen, ipclisten, ipcaccept, ipcreject, ipcexec, ipcpath , ipclogin, ipcrogin
-\(mi set up connections between processes or machines
-.SH SYNOPSIS
-.B #include <ipc.h>
-.PP
-.B char *ipcpath(name, network, service)
-.br
-.B char *name;
-.br
-.B char *network;
-.br
-.B char *service;
-.PP
-.B int ipcopen(name, param)
-.br
-.B char *name;
-.br
-.B char *param;
-.PP
-.B int ipccreat(name, param)
-.br
-.B char *name;
-.br
-.B char *param;
-.PP
-.B ipcinfo *ipclisten(fd)
-.br
-.B int fd;
-.PP
-.B int ipcaccept(ip)
-.br
-.B ipcinfo *ip;
-.PP
-.B int ipcreject(ip, no, str)
-.br
-.B ipcinfo *ip;
-.br
-.B int no;
-.br
-.B char *str;
-.PP
-.B int ipcexec(name, param, cmd)
-.br
-.B char *name;
-.br
-.B char *param;
-.br
-.B char *cmd;
-.PP
-.B int ipclogin(fd)
-.br
-.B int fd;
-.PP
-.B int ipcrogin(fd, opt)
-.br
-.B int fd;
-.br
-.B char *opt;
-.PP
-.B extern char *errstr;
-.SH DESCRIPTION
-These routines establish communication between unrelated
-processes, often for networking purposes.
-They are loaded by the
-.B -lipc
-option of
-.IR ld (1).
-.PP
-End points in the network are identified by names of the form:
-.BR element [ !element "]... " .
-The name is translated element by element relative to the name space
-selected by the previous element.
-The first element is always a name in the local file system.
-By convention, all network interfaces and services
-mount themselves in
-.FR /cs .
-For example:
-.TP
-.B /cs/exec
-refers to a local process which has mounted itself (via
-.I ipccreat )
-on
-.FR /cs/exec .
-.TP
-.B /cs/dk!nj/astro/voice
-refers to a voice synthesizer attached
-to Datakit; process
-.F /cs/dk
-is the Datakit interface.
-.TP
-.B /cs/dk!dutoit!exec
-is the process that has mounted itself on
-.F /cs/exec
-in machine `dutoit'.
-.PP
-.I Ipcpath,
-forms a network name from its arguments and returns a pointer to it.
-It takes three arguments: the destination
-.I name,
-the default
-.I network,
-and the default
-.I service.
-It assumes that
-.I name
-is a three part name of the form: network!host!service.
-If either network or service is missing from
-.I name, ipcpath
-supplies them
-from the default arguments.
-It then tacks a
-.F /cs
-on the front and returns a pointer to that.
-Thus,
-.IP
-.EX
-ipcpath("dutoit", "dk", "dcon")
-.EE
-.LP
-returns a pointer to the string
-.LR /cs/dk!dutoit!dcon .
-.PP
-.I Ipcopen
-places a call to a named network end point and returns
-a file descriptor for the resulting connection.
-.I Param,
-a whitespace-delimited string of values, specifies
-properties which the connection must have.
-At present four parameter values are defined:
-.TF heavy
-.TP
-.B heavy
-.br
-.ns
-.TP
-.B light
-Heavy (usually computer-to-computer) or light (computer-to-terminal)
-traffic is expected.
-.TP
-.B delim
-The connection must support delimiters; see
-.IR stream (4).
-.TP
-.B hup
-.B SIGHUP
-must be generated at end of file; see
-.IR signal (2).
-.PD
-.PP
-.I Ipccreat
-attaches a process to a name space.
-It returns a file descriptor representing the attachment.
-.I Name
-and
-.I param
-mean the same as for
-.I ipcopen.
-.PP
-.I Ipclisten
-waits for calls (from
-.I ipcopen
-in other processes) appearing on file descriptor
-.I fd
-(obtained from
-.IR ipccreat ).
-When a call arrives, it returns an
-.B ipcinfo
-structure, defined in
-.FR <ipc.h> :
-.IP
-.EX
-.ta \w'typedef\ 'u +\w'char\ 'u +\w'reserved[5];\ 'u
-typedef struct {
- int reserved[5];
- char *name; that being dialed
- char *param; parameters used to set up call
- char *machine; machine id of caller
- char *user; user name of caller
- int uid, gid; uid, gid of caller
-} ipcinfo;
-.EE
-.PP
-The call may be accepted by
-.I ipcaccept
-or rejected by
-.I ipcreject.
-.I Ipcaccept
-returns a file descriptor for the connection.
-.I Ipcreject
-takes an integer error number and an error message string,
-which will be passed back to the caller as
-.I errno
-and
-.I errstr.
-.PP
-A higher-level routine,
-.I ipcexec,
-executes the command,
-.I cmd,
-on a named machine.
-The file descriptor returned by
-.I ipcexec
-is the standard input, standard output, and
-standard error of the command.
-As in
-.I ipcopen,
-.I param
-lists properties required of the channel.
-.PP
-Once a connection is established using
-.I ipcopen
-it is often necessary to authenticate yourself
-to the destination.
-This is done using
-.I ipclogin
-and
-.I ipcrogin.
-.I Ipclogin
-runs the client side of the authentication protocol
-described in
-.IR svcmgr (8)
-for the
-.I v9auth
-action.
-The supplied
-.I fd
-is the descriptor returned by
-.I ipcopen.
-Until the authentication is accepted,
-.I ipclogin
-will prompt the user (using
-.F /dev/tty )
-for a login id and password to be sent over
-.I fd.
-.PP
-.I Ipcrogin
-runs the client side of the authentication protocol
-used by BSD's
-.I rlogin
-and
-.I rsh
-services.
-Unlike
-.I ipclogin,
-it will not prompt the user if the authentication
-fails.
-.I Ipcrogin
-takes a second argument that is written to
-.I fd
-after the authentication is accepted.
-.SH EXAMPLES
-To connect to the voice synthesizer attached to the Datakit:
-.EX
-.ta \w'12345678'u +\w'12345678'u +\w'12345678'u
-#include <ipc.h>
-main() {
- int fd;
- fd = ipcopen(ipcpath("voice", "dk", 0), "light");
- if(fd<0){
- printf("can't connect: %s\en", errstr);
- exit(1);
- }
- ...
- close(fd);
-}
-.EE
-.PP
-To place a Dataphone call via Datakit; the service name is
-derived in an obvious way from the ACU service class; see
-.IR dialout (3).
-.EX
- fd = ipcopen(ipcpath("9-1-201-582-0000", "dk", "dial1200"), "light");
-.EE
-.PP
-To announce as a local service and wait for incoming calls:
-.EX
-.ta \w'12345678'u +\w'12345678'u +\w'12345678'u
-#include <ipc.h>
-main() {
- int fd;
- ipcinfo *ip;
- fd = ipccreat("/tmp/service", 0);
- if(fd<0){
- printf("can't announce: %s\en", errstr);
- exit(1);
- }
- while(ip = ipclisten(fd)){
- int nfd;
- if(i_hate_this_user(ip->machine, ip->user)) {
- ipcreject(ip, EACCES, "i hate you");
- continue;
- }
- nfd = ipcaccept(ip);
- ...
- close(nfd);
- }
- printf("lost the announced connection somehow\en");
- exit(1);
-}
-.EE
-.SH FILES
-.TF /cs/tpc
-.TP
-.F /cs/dk
-the announce point for the Datakit dialer
-.TP
-.F /cs/tcp
-the announce point for the internet dialer
-.SH SEE ALSO
-.IR dialout (3),
-.IR connld (4),
-.IR dkmgr (8),
-.IR svcmgr (8),
-.IR tcpmgr (8)
-.br
-D. L. Presotto,
-`Interprocess Communication in the Eighth Edition
-.SM UNIX
-System',
-this manual, Volume 2
-.SH DIAGNOSTICS
-Integer return values of \-1 and pointer return
-values of 0 denote error.
-.I Errno
-contains an error code (see
-.IR intro (2))
-and
-.I errstr
-points to an explanatory string.
-.SH BUGS
-Files created by
-.I ipccreat
-in the local name space are not removed when
-the file descriptor returned by
-.I ipccreat
-is closed.
-.br
-Information in
-.B ipcinfo
-is no more trustworthy than its origin.
-Information, such as user name, sent by foreign
-machines may be suspect.
-On Ethernet or dialup connections (but not on Datakit)
-machine names can be forged.
-Let's not even think about wire-swappers and wiretappers.