summaryrefslogtreecommitdiff
path: root/packet.h
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>1999-11-25 00:26:21 +1100
committerDamien Miller <djm@mindrot.org>1999-11-25 00:26:21 +1100
commit95def09838fc61b37b6ea7cd5c234a465b4b129b (patch)
tree042744f76f40a326b873cb1c3690a6d7d966bc3e /packet.h
parent4d2f15f895f4c795afc008aeff3fd2ceffbc44f4 (diff)
- Merged very large OpenBSD source code reformat
- OpenBSD CVS updates - [channels.c cipher.c compat.c log-client.c scp.c serverloop.c] [ssh.h sshd.8 sshd.c] syslog changes: * Unified Logmessage for all auth-types, for success and for failed * Standard connections get only ONE line in the LOG when level==LOG: Auth-attempts are logged only, if authentication is: a) successfull or b) with passwd or c) we had more than AUTH_FAIL_LOG failues * many log() became verbose() * old behaviour with level=VERBOSE - [readconf.c readconf.h ssh.1 ssh.h sshconnect.c sshd.c] tranfer s/key challenge/response data in SSH_SMSG_AUTH_TIS_CHALLENGE messages. allows use of s/key in windows (ttssh, securecrt) and ssh-1.2.27 clients without 'ssh -v', ok: niels@ - [sshd.8] -V, for fallback to openssh in SSH2 compatibility mode - [sshd.c] fix sigchld race; cjc5@po.cwru.edu
Diffstat (limited to 'packet.h')
-rw-r--r--packet.h103
1 files changed, 52 insertions, 51 deletions
diff --git a/packet.h b/packet.h
index 250a6b336..ad1a5b089 100644
--- a/packet.h
+++ b/packet.h
@@ -1,19 +1,19 @@
1/* 1/*
2 2 *
3packet.h 3 * packet.h
4 4 *
5Author: Tatu Ylonen <ylo@cs.hut.fi> 5 * Author: Tatu Ylonen <ylo@cs.hut.fi>
6 6 *
7Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 7 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
8 All rights reserved 8 * All rights reserved
9 9 *
10Created: Sat Mar 18 02:02:14 1995 ylo 10 * Created: Sat Mar 18 02:02:14 1995 ylo
11 11 *
12Interface for the packet protocol functions. 12 * Interface for the packet protocol functions.
13 13 *
14*/ 14 */
15 15
16/* RCSID("$Id: packet.h,v 1.5 1999/11/21 02:23:53 damien Exp $"); */ 16/* RCSID("$Id: packet.h,v 1.6 1999/11/24 13:26:22 damien Exp $"); */
17 17
18#ifndef PACKET_H 18#ifndef PACKET_H
19#define PACKET_H 19#define PACKET_H
@@ -31,83 +31,84 @@ Interface for the packet protocol functions.
31 packet_set_encryption_key is called. It is permissible that fd_in 31 packet_set_encryption_key is called. It is permissible that fd_in
32 and fd_out are the same descriptor; in that case it is assumed to 32 and fd_out are the same descriptor; in that case it is assumed to
33 be a socket. */ 33 be a socket. */
34void packet_set_connection(int fd_in, int fd_out); 34void packet_set_connection(int fd_in, int fd_out);
35 35
36/* Puts the connection file descriptors into non-blocking mode. */ 36/* Puts the connection file descriptors into non-blocking mode. */
37void packet_set_nonblocking(void); 37void packet_set_nonblocking(void);
38 38
39/* Returns the file descriptor used for input. */ 39/* Returns the file descriptor used for input. */
40int packet_get_connection_in(void); 40int packet_get_connection_in(void);
41 41
42/* Returns the file descriptor used for output. */ 42/* Returns the file descriptor used for output. */
43int packet_get_connection_out(void); 43int packet_get_connection_out(void);
44 44
45/* Closes the connection (both descriptors) and clears and frees 45/* Closes the connection (both descriptors) and clears and frees
46 internal data structures. */ 46 internal data structures. */
47void packet_close(void); 47void packet_close(void);
48 48
49/* Causes any further packets to be encrypted using the given key. The same 49/* Causes any further packets to be encrypted using the given key. The same
50 key is used for both sending and reception. However, both directions 50 key is used for both sending and reception. However, both directions
51 are encrypted independently of each other. Cipher types are 51 are encrypted independently of each other. Cipher types are
52 defined in ssh.h. */ 52 defined in ssh.h. */
53void packet_set_encryption_key(const unsigned char *key, unsigned int keylen, 53void
54 int cipher_type); 54packet_set_encryption_key(const unsigned char *key, unsigned int keylen,
55 int cipher_type);
55 56
56/* Sets remote side protocol flags for the current connection. This can 57/* Sets remote side protocol flags for the current connection. This can
57 be called at any time. */ 58 be called at any time. */
58void packet_set_protocol_flags(unsigned int flags); 59void packet_set_protocol_flags(unsigned int flags);
59 60
60/* Returns the remote protocol flags set earlier by the above function. */ 61/* Returns the remote protocol flags set earlier by the above function. */
61unsigned int packet_get_protocol_flags(void); 62unsigned int packet_get_protocol_flags(void);
62 63
63/* Enables compression in both directions starting from the next packet. */ 64/* Enables compression in both directions starting from the next packet. */
64void packet_start_compression(int level); 65void packet_start_compression(int level);
65 66
66/* Informs that the current session is interactive. Sets IP flags for optimal 67/* Informs that the current session is interactive. Sets IP flags for optimal
67 performance in interactive use. */ 68 performance in interactive use. */
68void packet_set_interactive(int interactive, int keepalives); 69void packet_set_interactive(int interactive, int keepalives);
69 70
70/* Returns true if the current connection is interactive. */ 71/* Returns true if the current connection is interactive. */
71int packet_is_interactive(void); 72int packet_is_interactive(void);
72 73
73/* Starts constructing a packet to send. */ 74/* Starts constructing a packet to send. */
74void packet_start(int type); 75void packet_start(int type);
75 76
76/* Appends a character to the packet data. */ 77/* Appends a character to the packet data. */
77void packet_put_char(int ch); 78void packet_put_char(int ch);
78 79
79/* Appends an integer to the packet data. */ 80/* Appends an integer to the packet data. */
80void packet_put_int(unsigned int value); 81void packet_put_int(unsigned int value);
81 82
82/* Appends an arbitrary precision integer to packet data. */ 83/* Appends an arbitrary precision integer to packet data. */
83void packet_put_bignum(BIGNUM *value); 84void packet_put_bignum(BIGNUM * value);
84 85
85/* Appends a string to packet data. */ 86/* Appends a string to packet data. */
86void packet_put_string(const char *buf, unsigned int len); 87void packet_put_string(const char *buf, unsigned int len);
87 88
88/* Finalizes and sends the packet. If the encryption key has been set, 89/* Finalizes and sends the packet. If the encryption key has been set,
89 encrypts the packet before sending. */ 90 encrypts the packet before sending. */
90void packet_send(void); 91void packet_send(void);
91 92
92/* Waits until a packet has been received, and returns its type. */ 93/* Waits until a packet has been received, and returns its type. */
93int packet_read(int *payload_len_ptr); 94int packet_read(int *payload_len_ptr);
94 95
95/* Waits until a packet has been received, verifies that its type matches 96/* Waits until a packet has been received, verifies that its type matches
96 that given, and gives a fatal error and exits if there is a mismatch. */ 97 that given, and gives a fatal error and exits if there is a mismatch. */
97void packet_read_expect(int *payload_len_ptr, int type); 98void packet_read_expect(int *payload_len_ptr, int type);
98 99
99/* Checks if a full packet is available in the data received so far via 100/* Checks if a full packet is available in the data received so far via
100 packet_process_incoming. If so, reads the packet; otherwise returns 101 packet_process_incoming. If so, reads the packet; otherwise returns
101 SSH_MSG_NONE. This does not wait for data from the connection. 102 SSH_MSG_NONE. This does not wait for data from the connection.
102 103
103 SSH_MSG_DISCONNECT is handled specially here. Also, 104 SSH_MSG_DISCONNECT is handled specially here. Also,
104 SSH_MSG_IGNORE messages are skipped by this function and are never returned 105 SSH_MSG_IGNORE messages are skipped by this function and are never returned
105 to higher levels. */ 106 to higher levels. */
106int packet_read_poll(int *packet_len_ptr); 107int packet_read_poll(int *packet_len_ptr);
107 108
108/* Buffers the given amount of input characters. This is intended to be 109/* Buffers the given amount of input characters. This is intended to be
109 used together with packet_read_poll. */ 110 used together with packet_read_poll. */
110void packet_process_incoming(const char *buf, unsigned int len); 111void packet_process_incoming(const char *buf, unsigned int len);
111 112
112/* Returns a character (0-255) from the packet data. */ 113/* Returns a character (0-255) from the packet data. */
113unsigned int packet_get_char(void); 114unsigned int packet_get_char(void);
@@ -117,19 +118,19 @@ unsigned int packet_get_int(void);
117 118
118/* Returns an arbitrary precision integer from the packet data. The integer 119/* Returns an arbitrary precision integer from the packet data. The integer
119 must have been initialized before this call. */ 120 must have been initialized before this call. */
120void packet_get_bignum(BIGNUM *value, int *length_ptr); 121void packet_get_bignum(BIGNUM * value, int *length_ptr);
121 122
122/* Returns a string from the packet data. The string is allocated using 123/* Returns a string from the packet data. The string is allocated using
123 xmalloc; it is the responsibility of the calling program to free it when 124 xmalloc; it is the responsibility of the calling program to free it when
124 no longer needed. The length_ptr argument may be NULL, or point to an 125 no longer needed. The length_ptr argument may be NULL, or point to an
125 integer into which the length of the string is stored. */ 126 integer into which the length of the string is stored. */
126char *packet_get_string(unsigned int *length_ptr); 127char *packet_get_string(unsigned int *length_ptr);
127 128
128/* Logs the error in syslog using LOG_INFO, constructs and sends a disconnect 129/* Logs the error in syslog using LOG_INFO, constructs and sends a disconnect
129 packet, closes the connection, and exits. This function never returns. 130 packet, closes the connection, and exits. This function never returns.
130 The error message should not contain a newline. The total length of the 131 The error message should not contain a newline. The total length of the
131 message must not exceed 1024 bytes. */ 132 message must not exceed 1024 bytes. */
132void packet_disconnect(const char *fmt, ...); 133void packet_disconnect(const char *fmt,...);
133 134
134/* Sends a diagnostic message to the other side. This message 135/* Sends a diagnostic message to the other side. This message
135 can be sent at any time (but not while constructing another message). 136 can be sent at any time (but not while constructing another message).
@@ -139,31 +140,31 @@ void packet_disconnect(const char *fmt, ...);
139 must not exceed 1024 bytes. This will automatically call 140 must not exceed 1024 bytes. This will automatically call
140 packet_write_wait. If the remote side protocol flags do not indicate 141 packet_write_wait. If the remote side protocol flags do not indicate
141 that it supports SSH_MSG_DEBUG, this will do nothing. */ 142 that it supports SSH_MSG_DEBUG, this will do nothing. */
142void packet_send_debug(const char *fmt, ...); 143void packet_send_debug(const char *fmt,...);
143 144
144/* Checks if there is any buffered output, and tries to write some of the 145/* Checks if there is any buffered output, and tries to write some of the
145 output. */ 146 output. */
146void packet_write_poll(void); 147void packet_write_poll(void);
147 148
148/* Waits until all pending output data has been written. */ 149/* Waits until all pending output data has been written. */
149void packet_write_wait(void); 150void packet_write_wait(void);
150 151
151/* Returns true if there is buffered data to write to the connection. */ 152/* Returns true if there is buffered data to write to the connection. */
152int packet_have_data_to_write(void); 153int packet_have_data_to_write(void);
153 154
154/* Returns true if there is not too much data to write to the connection. */ 155/* Returns true if there is not too much data to write to the connection. */
155int packet_not_very_much_data_to_write(void); 156int packet_not_very_much_data_to_write(void);
156 157
157/* maximum packet size, requested by client with SSH_CMSG_MAX_PACKET_SIZE */ 158/* maximum packet size, requested by client with SSH_CMSG_MAX_PACKET_SIZE */
158extern int max_packet_size; 159extern int max_packet_size;
159int packet_set_maxsize(int s); 160int packet_set_maxsize(int s);
160#define packet_get_maxsize() max_packet_size 161#define packet_get_maxsize() max_packet_size
161 162
162/* Stores tty modes from the fd into current packet. */ 163/* Stores tty modes from the fd into current packet. */
163void tty_make_modes(int fd); 164void tty_make_modes(int fd);
164 165
165/* Parses tty modes for the fd from the current packet. */ 166/* Parses tty modes for the fd from the current packet. */
166void tty_parse_modes(int fd, int *n_bytes_ptr); 167void tty_parse_modes(int fd, int *n_bytes_ptr);
167 168
168#define packet_integrity_check(payload_len, expected_len, type) \ 169#define packet_integrity_check(payload_len, expected_len, type) \
169do { \ 170do { \
@@ -175,4 +176,4 @@ do { \
175 } \ 176 } \
176} while (0) 177} while (0)
177 178
178#endif /* PACKET_H */ 179#endif /* PACKET_H */