|
|
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.