|
|
1.1 root 1: .TH TCP 4
2: .CT comm_mach
3: .SH NAME
4: tcp, tcp_ld \- DARPA transmission control protocol
5: .SH SYNOPSIS
6: .B #include <sys/inio.h>
7: .br
8: .B #include <sys/inet/tcp_user.h>
9: .SH DESCRIPTION
10: The
11: .I tcp_ld
12: line discipline
13: and the
14: .F /dev/tcp*
15: devices together implement the DARPA TCP circuit protocol.
16: They are normally used through
17: .IR tcpmgr (8)
18: and the routines in
19: .IR ipc (3).
20: .PP
21: One instance of
22: .I tcp_ld
23: should be pushed on an IP device stream,
24: usually
25: .FR /dev/ip6 ;
26: see
27: .IR ip (4).
28: Thereafter,
29: data written on the
30: .I tcp
31: devices is turned into IP packets
32: written to the IP device,
33: and vice versa.
34: .PP
35: Different
36: .I tcp
37: devices represent different software channels.
38: Files with odd minor device numbers
39: are for placing calls;
40: while such a file is open,
41: it may not be opened again.
42: Files with even device numbers
43: receive calls.
44: .PP
45: To place a call,
46: open an unused odd-numbered
47: .I tcp
48: file;
49: write a
50: .B struct tcpuser
51: describing the address to be called;
52: and read a
53: .B struct tcpuser
54: for status.
55: The structure is defined in
56: .BR <sys/inet/tcp_user.h> :
57: .PP
58: .EX
59: struct tcpuser {
60: int code;
61: tcp_port lport, fport;
62: in_addr laddr, faddr;
63: int param;
64: };
65:
66: #define TCPC_LISTEN 1
67: #define TCPC_CONNECT 2
68:
69: #define TCPC_OK 3
70: #define TCPC_SORRY 4 /* unknown error */
71: #define TCPC_BADDEV 5 /* tcp device is bad */
72: #define TCPC_NOROUTE 6 /* no routing to dest */
73: #define TCPC_BADLOCAL 7 /* bad local address */
74: #define TCPC_BOUND 8 /* address already bound */
75:
76: #define SO_KEEPALIVE 0x2 /* generate keepalives */
77: .EE
78: .PP
79: In the structure describing the call,
80: .B code
81: should be
82: .BR TCPC_CONNECT ;
83: .B faddr
84: and
85: .B fport
86: are the destination IP address and TCP port number;
87: .B laddr
88: is the IP address associated with a local IP interface,
89: or
90: .B INADDR_ANY
91: to let the system pick;
92: .B lport
93: is the local TCP port number,
94: or
95: 0
96: to let the system pick;
97: .B param
98: is 0 or
99: .BR SO_KEEPALIVE .
100: .PP
101: In the structure returned for status,
102: .B code
103: is
104: .B TCPC_OK
105: if the call completed correctly;
106: henceforth data written to and read from the file
107: is transported on the circuit.
108: Other codes mean the circuit was not set up.
109: .PP
110: To listen for incoming calls,
111: open an odd-numbered device
112: and write a
113: .B struct tcpuser
114: with
115: .B code
116: set to
117: .BR TCPC_LISTEN ;
118: .B laddr
119: set to the local IP address for which calls should be taken,
120: or
121: .B INADDR_ANY
122: to catch any calls not explicitly taken by another listener;
123: .B lport
124: set to the port on which to listen,
125: or 0 for any port;
126: and
127: .B param
128: set to 0.
129: Thereafter,
130: reads return successive
131: .B tcpuser
132: structures,
133: each describing a new call;
134: .B faddr
135: and
136: .B fport
137: identify the caller,
138: .B laddr
139: and
140: .B lport
141: the assigned local address.
142: The local
143: .I tcp
144: device number,
145: .I n,
146: assigned to the call
147: is returned in
148: .BR param .
149: The corresponding device,
150: .BI /dev/tcp n,
151: should be opened;
152: data read and written there is transported by the circuit.
153: .PP
154: Several
155: .IR ioctl (2)
156: calls, defined in
157: .BR <sys/inio.h> ,
158: apply to
159: .I tcp
160: devices:
161: .nr Pw \w'\f5TCPIOMAXSEG 'u
162: .TP \n(Pwu
163: .B TCPIOHUP
164: When the remote end of the circuit is disconnected,
165: send signal
166: .B SIGHUP
167: to the local process group associated with the stream.
168: .TP
169: .B TCPMAXSEG
170: The third argument points to an integer
171: giving the maximum segment size for this connection:
172: the greatest number of bytes to be packed into one IP packet.
173: .TP
174: .B TCPGETADDR
175: The third argument points to a
176: .BR "struct tcpuser" ;
177: fill in
178: .BR laddr ,
179: .BR lport ,
180: .BR faddr ,
181: and
182: .BR fport
183: with the local and foreign addresses associated with the circuit.
184: .SH FILES
185: .F /dev/tcp??
186: .br
187: .F /dev/ip6
188: .SH SEE ALSO
189: .IR ip (4),
190: .IR internet (3),
191: .IR tcpmgr (8)
192: .br
193: DARPA standards RFC 793, 1122
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.