]> andersk Git - openssh.git/blobdiff - packet.h
- markus@cvs.openbsd.org 2001/03/23 14:28:32
[openssh.git] / packet.h
index ee2b6bc34a791745c58641f7e29c5cbedbc7e590..e5432714e903befd5a323dd9eadbecaf25604a34 100644 (file)
--- a/packet.h
+++ b/packet.h
@@ -1,29 +1,22 @@
 /*
- * 
- * packet.h
- * 
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
- * Created: Sat Mar 18 02:02:14 1995 ylo
- * 
  * Interface for the packet protocol functions.
- * 
+ *
+ * As far as I am concerned, the code I have written for this software
+ * can be used freely for any purpose.  Any derived versions of this
+ * software must be clearly marked as such, and if the derived work is
+ * incompatible with the protocol description in the RFC file, it must be
+ * called by a name other than "ssh" or "Secure Shell".
  */
 
-/* RCSID("$Id$"); */
+/* RCSID("$OpenBSD: packet.h,v 1.21 2001/02/28 21:27:47 markus Exp $"); */
 
 #ifndef PACKET_H
 #define PACKET_H
 
-#ifdef HAVE_OPENSSL
 #include <openssl/bn.h>
-#endif
-#ifdef HAVE_SSL
-#include <ssl/bn.h>
-#endif
 
 /*
  * Sets the socket used for communication.  Disables encryption until
@@ -52,18 +45,18 @@ void    packet_close(void);
  * key is used for both sending and reception.  However, both directions are
  * encrypted independently of each other.  Cipher types are defined in ssh.h.
  */
-void 
-packet_set_encryption_key(const unsigned char *key, unsigned int keylen,
+void
+packet_set_encryption_key(const u_char *key, u_int keylen,
     int cipher_type);
 
 /*
  * Sets remote side protocol flags for the current connection.  This can be
  * called at any time.
  */
-void    packet_set_protocol_flags(unsigned int flags);
+void    packet_set_protocol_flags(u_int flags);
 
 /* Returns the remote protocol flags set earlier by the above function. */
-unsigned int packet_get_protocol_flags(void);
+u_int packet_get_protocol_flags(void);
 
 /* Enables compression in both directions starting from the next packet. */
 void    packet_start_compression(int level);
@@ -72,7 +65,7 @@ void    packet_start_compression(int level);
  * Informs that the current session is interactive.  Sets IP flags for
  * optimal performance in interactive use.
  */
-void    packet_set_interactive(int interactive, int keepalives);
+void    packet_set_interactive(int interactive);
 
 /* Returns true if the current connection is interactive. */
 int     packet_is_interactive(void);
@@ -84,16 +77,16 @@ void    packet_start(int type);
 void    packet_put_char(int ch);
 
 /* Appends an integer to the packet data. */
-void    packet_put_int(unsigned int value);
+void    packet_put_int(u_int value);
 
 /* Appends an arbitrary precision integer to packet data. */
 void    packet_put_bignum(BIGNUM * value);
 void    packet_put_bignum2(BIGNUM * value);
 
 /* Appends a string to packet data. */
-void    packet_put_string(const char *buf, unsigned int len);
+void    packet_put_string(const char *buf, u_int len);
 void    packet_put_cstring(const char *str);
-void    packet_put_raw(const char *buf, unsigned int len);
+void    packet_put_raw(const char *buf, u_int len);
 
 /*
  * Finalizes and sends the packet.  If the encryption key has been set,
@@ -124,13 +117,13 @@ int     packet_read_poll(int *packet_len_ptr);
  * Buffers the given amount of input characters.  This is intended to be used
  * together with packet_read_poll.
  */
-void    packet_process_incoming(const char *buf, unsigned int len);
+void    packet_process_incoming(const char *buf, u_int len);
 
 /* Returns a character (0-255) from the packet data. */
-unsigned int packet_get_char(void);
+u_int packet_get_char(void);
 
 /* Returns an integer from the packet data. */
-unsigned int packet_get_int(void);
+u_int packet_get_int(void);
 
 /*
  * Returns an arbitrary precision integer from the packet data.  The integer
@@ -146,7 +139,7 @@ char        *packet_get_raw(int *length_ptr);
  * no longer needed.  The length_ptr argument may be NULL, or point to an
  * integer into which the length of the string is stored.
  */
-char   *packet_get_string(unsigned int *length_ptr);
+char   *packet_get_string(u_int *length_ptr);
 
 /*
  * Logs the error in syslog using LOG_INFO, constructs and sends a disconnect
@@ -201,6 +194,16 @@ do { \
   } \
 } while (0)
 
+#define packet_done() \
+do { \
+       int _len = packet_remaining(); \
+       if (_len > 0) { \
+               log("Packet integrity error (%d bytes remaining) at %s:%d", \
+                   _len ,__FILE__, __LINE__); \
+               packet_disconnect("Packet integrity error."); \
+       } \
+} while (0)
+
 /* remote host is connected via a socket/ipv4 */
 int    packet_connection_is_on_socket(void);
 int    packet_connection_is_ipv4(void);
@@ -208,4 +211,13 @@ int        packet_connection_is_ipv4(void);
 /* enable SSH2 packet format */
 void   packet_set_ssh2_format(void);
 
+/* returns remaining payload bytes */
+int    packet_remaining(void);
+
+/* append an ignore message */
+void   packet_send_ignore(int nbytes);
+
+/* add an ignore message and make sure size (current+ignore) = n*sumlen */
+void   packet_inject_ignore(int sumlen);
+
 #endif                         /* PACKET_H */
This page took 0.038733 seconds and 4 git commands to generate.