[BACK]Return to packet.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/packet.h, Revision 1.62

1.62    ! markus      1: /* $OpenBSD: packet.h,v 1.61 2014/05/03 17:20:34 markus Exp $ */
1.33      stevesk     2:
1.1       deraadt     3: /*
1.5       deraadt     4:  * Author: Tatu Ylonen <ylo@cs.hut.fi>
                      5:  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
                      6:  *                    All rights reserved
                      7:  * Interface for the packet protocol functions.
1.15      markus      8:  *
1.17      deraadt     9:  * As far as I am concerned, the code I have written for this software
                     10:  * can be used freely for any purpose.  Any derived versions of this
                     11:  * software must be clearly marked as such, and if the derived work is
                     12:  * incompatible with the protocol description in the RFC file, it must be
                     13:  * called by a name other than "ssh" or "Secure Shell".
1.5       deraadt    14:  */
1.1       deraadt    15:
                     16: #ifndef PACKET_H
                     17: #define PACKET_H
1.44      stevesk    18:
                     19: #include <termios.h>
1.1       deraadt    20:
1.13      markus     21: #include <openssl/bn.h>
1.54      djm        22: #include <openssl/ec.h>
1.62    ! markus     23: #include <sys/signal.h>
        !            24: #include <sys/queue.h>
1.1       deraadt    25:
1.62    ! markus     26: struct kex;
        !            27: struct sshkey;
        !            28: struct sshbuf;
        !            29: struct session_state;  /* private session data */
        !            30:
        !            31: struct ssh {
        !            32:        /* Session state */
        !            33:        struct session_state *state;
        !            34:
        !            35:        /* Key exchange */
        !            36:        struct kex *kex;
        !            37:
        !            38:        /* cached remote ip address and port*/
        !            39:        char *remote_ipaddr;
        !            40:        int remote_port;
        !            41:
        !            42:        /* datafellows */
        !            43:        int compat;
        !            44: };
        !            45:
        !            46: struct ssh *ssh_alloc_session_state(void);
        !            47: struct ssh *ssh_packet_set_connection(struct ssh *, int, int);
        !            48: void     ssh_packet_set_timeout(struct ssh *, int, int);
        !            49: int     ssh_packet_stop_discard(struct ssh *);
        !            50: int     ssh_packet_connection_af(struct ssh *);
        !            51: void     ssh_packet_set_nonblocking(struct ssh *);
        !            52: int      ssh_packet_get_connection_in(struct ssh *);
        !            53: int      ssh_packet_get_connection_out(struct ssh *);
        !            54: void     ssh_packet_close(struct ssh *);
        !            55: void    ssh_packet_set_encryption_key(struct ssh *, const u_char *, u_int, int);
        !            56: void     ssh_packet_set_protocol_flags(struct ssh *, u_int);
        !            57: u_int   ssh_packet_get_protocol_flags(struct ssh *);
        !            58: int      ssh_packet_start_compression(struct ssh *, int);
        !            59: void    ssh_packet_set_tos(struct ssh *, int);
        !            60: void     ssh_packet_set_interactive(struct ssh *, int, int, int);
        !            61: int      ssh_packet_is_interactive(struct ssh *);
        !            62: void     ssh_packet_set_server(struct ssh *);
        !            63: void     ssh_packet_set_authenticated(struct ssh *);
        !            64:
        !            65: int     ssh_packet_send1(struct ssh *);
        !            66: int     ssh_packet_send2_wrapped(struct ssh *);
        !            67: int     ssh_packet_send2(struct ssh *);
        !            68:
        !            69: int      ssh_packet_read(struct ssh *);
        !            70: void     ssh_packet_read_expect(struct ssh *, int type);
        !            71: int      ssh_packet_read_poll(struct ssh *);
        !            72: int ssh_packet_read_poll1(struct ssh *, u_char *);
        !            73: int ssh_packet_read_poll2(struct ssh *, u_char *, u_int32_t *seqnr_p);
        !            74: void     ssh_packet_process_incoming(struct ssh *, const char *buf, u_int len);
        !            75: int      ssh_packet_read_seqnr(struct ssh *, u_char *, u_int32_t *seqnr_p);
        !            76: int      ssh_packet_read_poll_seqnr(struct ssh *, u_char *, u_int32_t *seqnr_p);
        !            77:
        !            78: const void *ssh_packet_get_string_ptr(struct ssh *, u_int *length_ptr);
        !            79: void     ssh_packet_disconnect(struct ssh *, const char *fmt, ...)
        !            80:        __attribute__((format(printf, 2, 3)))
        !            81:        __attribute__((noreturn));
        !            82: void     ssh_packet_send_debug(struct ssh *, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
        !            83:
        !            84: int     ssh_set_newkeys(struct ssh *, int mode);
        !            85: void    ssh_packet_get_bytes(struct ssh *, u_int64_t *, u_int64_t *);
        !            86:
        !            87: typedef void *(ssh_packet_comp_alloc_func)(void *, u_int, u_int);
        !            88: typedef void (ssh_packet_comp_free_func)(void *, void *);
        !            89: void    ssh_packet_set_compress_hooks(struct ssh *, void *,
        !            90:     ssh_packet_comp_alloc_func *, ssh_packet_comp_free_func *);
        !            91:
        !            92: void     ssh_packet_write_poll(struct ssh *);
        !            93: void     ssh_packet_write_wait(struct ssh *);
        !            94: int      ssh_packet_have_data_to_write(struct ssh *);
        !            95: int      ssh_packet_not_very_much_data_to_write(struct ssh *);
        !            96:
        !            97: int     ssh_packet_connection_is_on_socket(struct ssh *);
        !            98: int     ssh_packet_remaining(struct ssh *);
        !            99: void    ssh_packet_send_ignore(struct ssh *, int);
1.1       deraadt   100:
1.25      markus    101: void    tty_make_modes(int, struct termios *);
                    102: void    tty_parse_modes(int, int *);
1.1       deraadt   103:
1.62    ! markus    104: void    ssh_packet_set_alive_timeouts(struct ssh *, int);
        !           105: int     ssh_packet_inc_alive_timeouts(struct ssh *);
        !           106: int     ssh_packet_set_maxsize(struct ssh *, u_int);
        !           107: u_int   ssh_packet_get_maxsize(struct ssh *);
        !           108:
        !           109: int     ssh_packet_get_state(struct ssh *, struct sshbuf *);
        !           110: int     ssh_packet_set_state(struct ssh *, struct sshbuf *);
        !           111:
        !           112: const char *ssh_remote_ipaddr(struct ssh *);
        !           113:
        !           114: int     ssh_packet_need_rekeying(struct ssh *);
        !           115: void    ssh_packet_set_rekey_limits(struct ssh *, u_int32_t, time_t);
        !           116: time_t  ssh_packet_get_rekey_timeout(struct ssh *);
        !           117:
        !           118: /* XXX FIXME */
        !           119: void    ssh_packet_backup_state(struct ssh *, struct ssh *);
        !           120: void    ssh_packet_restore_state(struct ssh *, struct ssh *);
        !           121:
        !           122: void   *ssh_packet_get_input(struct ssh *);
        !           123: void   *ssh_packet_get_output(struct ssh *);
        !           124:
        !           125: /* new API */
        !           126: int    sshpkt_start(struct ssh *ssh, u_char type);
        !           127: int    sshpkt_send(struct ssh *ssh);
        !           128: int     sshpkt_disconnect(struct ssh *, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
        !           129: int    sshpkt_add_padding(struct ssh *, u_char);
        !           130:
        !           131: int    sshpkt_put(struct ssh *ssh, const void *v, size_t len);
        !           132: int    sshpkt_putb(struct ssh *ssh, const struct sshbuf *b);
        !           133: int    sshpkt_put_u8(struct ssh *ssh, u_char val);
        !           134: int    sshpkt_put_u32(struct ssh *ssh, u_int32_t val);
        !           135: int    sshpkt_put_u64(struct ssh *ssh, u_int64_t val);
        !           136: int    sshpkt_put_string(struct ssh *ssh, const void *v, size_t len);
        !           137: int    sshpkt_put_cstring(struct ssh *ssh, const void *v);
        !           138: int    sshpkt_put_stringb(struct ssh *ssh, const struct sshbuf *v);
        !           139: int    sshpkt_put_ec(struct ssh *ssh, const EC_POINT *v, const EC_GROUP *g);
        !           140: int    sshpkt_put_bignum1(struct ssh *ssh, const BIGNUM *v);
        !           141: int    sshpkt_put_bignum2(struct ssh *ssh, const BIGNUM *v);
        !           142:
        !           143: int    sshpkt_get(struct ssh *ssh, void *valp, size_t len);
        !           144: int    sshpkt_get_u8(struct ssh *ssh, u_char *valp);
        !           145: int    sshpkt_get_u32(struct ssh *ssh, u_int32_t *valp);
        !           146: int    sshpkt_get_u64(struct ssh *ssh, u_int64_t *valp);
        !           147: int    sshpkt_get_string(struct ssh *ssh, u_char **valp, size_t *lenp);
        !           148: int    sshpkt_get_string_direct(struct ssh *ssh, const u_char **valp, size_t *lenp);
        !           149: int    sshpkt_get_cstring(struct ssh *ssh, char **valp, size_t *lenp);
        !           150: int    sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g);
        !           151: int    sshpkt_get_bignum1(struct ssh *ssh, BIGNUM *v);
        !           152: int    sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v);
        !           153: int    sshpkt_get_end(struct ssh *ssh);
        !           154: const u_char   *sshpkt_ptr(struct ssh *, size_t *lenp);
        !           155:
        !           156: /* OLD API */
        !           157: extern struct ssh *active_state;
        !           158: #include "opacket.h"
1.1       deraadt   159:
1.5       deraadt   160: #endif                         /* PACKET_H */