version 1.70.2.5, 2002/06/26 18:22:35 |
version 1.70.2.6, 2002/10/11 14:53:06 |
|
|
packet_set_connection(int fd_in, int fd_out) |
packet_set_connection(int fd_in, int fd_out) |
{ |
{ |
Cipher *none = cipher_by_name("none"); |
Cipher *none = cipher_by_name("none"); |
|
|
if (none == NULL) |
if (none == NULL) |
fatal("packet_set_connection: cannot load cipher 'none'"); |
fatal("packet_set_connection: cannot load cipher 'none'"); |
connection_in = fd_in; |
connection_in = fd_in; |
|
|
int number) |
int number) |
{ |
{ |
Cipher *cipher = cipher_by_number(number); |
Cipher *cipher = cipher_by_number(number); |
|
|
if (cipher == NULL) |
if (cipher == NULL) |
fatal("packet_set_encryption_key: unknown cipher number %d", number); |
fatal("packet_set_encryption_key: unknown cipher number %d", number); |
if (keylen < 20) |
if (keylen < 20) |
|
|
packet_put_char(int value) |
packet_put_char(int value) |
{ |
{ |
char ch = value; |
char ch = value; |
|
|
buffer_append(&outgoing_packet, &ch, 1); |
buffer_append(&outgoing_packet, &ch, 1); |
} |
} |
void |
void |
|
|
buffer_clear(&incoming_packet); |
buffer_clear(&incoming_packet); |
buffer_append(&incoming_packet, buffer_ptr(&compression_buffer), |
buffer_append(&incoming_packet, buffer_ptr(&compression_buffer), |
buffer_len(&compression_buffer)); |
buffer_len(&compression_buffer)); |
DBG(debug("input: len after de-compress %d", buffer_len(&incoming_packet))); |
DBG(debug("input: len after de-compress %d", |
|
buffer_len(&incoming_packet))); |
} |
} |
/* |
/* |
* get packet type, implies consume. |
* get packet type, implies consume. |
|
|
packet_get_char(void) |
packet_get_char(void) |
{ |
{ |
char ch; |
char ch; |
|
|
buffer_get(&incoming_packet, &ch, 1); |
buffer_get(&incoming_packet, &ch, 1); |
return (u_char) ch; |
return (u_char) ch; |
} |
} |
|
|
packet_get_raw(int *length_ptr) |
packet_get_raw(int *length_ptr) |
{ |
{ |
int bytes = buffer_len(&incoming_packet); |
int bytes = buffer_len(&incoming_packet); |
|
|
if (length_ptr != NULL) |
if (length_ptr != NULL) |
*length_ptr = bytes; |
*length_ptr = bytes; |
return buffer_ptr(&incoming_packet); |
return buffer_ptr(&incoming_packet); |
|
|
char buf[1024]; |
char buf[1024]; |
va_list args; |
va_list args; |
static int disconnecting = 0; |
static int disconnecting = 0; |
|
|
if (disconnecting) /* Guard against recursive invocations. */ |
if (disconnecting) /* Guard against recursive invocations. */ |
fatal("packet_disconnect called recursively."); |
fatal("packet_disconnect called recursively."); |
disconnecting = 1; |
disconnecting = 1; |
|
|
packet_write_poll(void) |
packet_write_poll(void) |
{ |
{ |
int len = buffer_len(&output); |
int len = buffer_len(&output); |
|
|
if (len > 0) { |
if (len > 0) { |
len = write(connection_out, buffer_ptr(&output), len); |
len = write(connection_out, buffer_ptr(&output), len); |
if (len <= 0) { |
if (len <= 0) { |
|
|
packet_set_maxsize(int s) |
packet_set_maxsize(int s) |
{ |
{ |
static int called = 0; |
static int called = 0; |
|
|
if (called) { |
if (called) { |
log("packet_set_maxsize: called twice: old %d new %d", |
log("packet_set_maxsize: called twice: old %d new %d", |
max_packet_size, s); |
max_packet_size, s); |