1 #ifndef _OPACKET_H 2 /* Written by Markus Friedl. Placed in the public domain. */ 3 4 /* Map old to new API */ 5 void ssh_packet_start(struct ssh *, u_char); 6 void ssh_packet_put_char(struct ssh *, int ch); 7 void ssh_packet_put_int(struct ssh *, u_int value); 8 void ssh_packet_put_int64(struct ssh *, u_int64_t value); 9 void ssh_packet_put_bignum(struct ssh *, BIGNUM * value); 10 void ssh_packet_put_bignum2(struct ssh *, BIGNUM * value); 11 void ssh_packet_put_ecpoint(struct ssh *, const EC_GROUP *, const EC_POINT *); 12 void ssh_packet_put_string(struct ssh *, const void *buf, u_int len); 13 void ssh_packet_put_cstring(struct ssh *, const char *str); 14 void ssh_packet_put_raw(struct ssh *, const void *buf, u_int len); 15 void ssh_packet_send(struct ssh *); 16 17 u_int ssh_packet_get_char(struct ssh *); 18 u_int ssh_packet_get_int(struct ssh *); 19 u_int64_t ssh_packet_get_int64(struct ssh *); 20 void ssh_packet_get_bignum(struct ssh *, BIGNUM * value); 21 void ssh_packet_get_bignum2(struct ssh *, BIGNUM * value); 22 void ssh_packet_get_ecpoint(struct ssh *, const EC_GROUP *, EC_POINT *); 23 void *ssh_packet_get_string(struct ssh *, u_int *length_ptr); 24 char *ssh_packet_get_cstring(struct ssh *, u_int *length_ptr); 25 26 /* don't allow remaining bytes after the end of the message */ 27 #define ssh_packet_check_eom(ssh) \ 28 do { \ 29 int _len = ssh_packet_remaining(ssh); \ 30 if (_len > 0) { \ 31 logit("Packet integrity error (%d bytes remaining) at %s:%d", \ 32 _len ,__FILE__, __LINE__); \ 33 ssh_packet_disconnect(ssh, \ 34 "Packet integrity error."); \ 35 } \ 36 } while (0) 37 38 /* old API */ 39 void packet_close(void); 40 u_int packet_get_char(void); 41 u_int packet_get_int(void); 42 void packet_backup_state(void); 43 void packet_restore_state(void); 44 void packet_set_connection(int, int); 45 int packet_read_seqnr(u_int32_t *); 46 int packet_read_poll_seqnr(u_int32_t *); 47 void packet_process_incoming(const char *buf, u_int len); 48 void packet_write_wait(void); 49 void packet_write_poll(void); 50 void packet_read_expect(int expected_type); 51 #define packet_set_timeout(timeout, count) \ 52 ssh_packet_set_timeout(active_state, (timeout), (count)) 53 #define packet_connection_is_on_socket() \ 54 ssh_packet_connection_is_on_socket(active_state) 55 #define packet_set_nonblocking() \ 56 ssh_packet_set_nonblocking(active_state) 57 #define packet_get_connection_in() \ 58 ssh_packet_get_connection_in(active_state) 59 #define packet_get_connection_out() \ 60 ssh_packet_get_connection_out(active_state) 61 #define packet_set_protocol_flags(protocol_flags) \ 62 ssh_packet_set_protocol_flags(active_state, (protocol_flags)) 63 #define packet_get_protocol_flags() \ 64 ssh_packet_get_protocol_flags(active_state) 65 #define packet_start_compression(level) \ 66 ssh_packet_start_compression(active_state, (level)) 67 #define packet_set_encryption_key(key, keylen, number) \ 68 ssh_packet_set_encryption_key(active_state, (key), (keylen), (number)) 69 #define packet_start(type) \ 70 ssh_packet_start(active_state, (type)) 71 #define packet_put_char(value) \ 72 ssh_packet_put_char(active_state, (value)) 73 #define packet_put_int(value) \ 74 ssh_packet_put_int(active_state, (value)) 75 #define packet_put_int64(value) \ 76 ssh_packet_put_int64(active_state, (value)) 77 #define packet_put_string( buf, len) \ 78 ssh_packet_put_string(active_state, (buf), (len)) 79 #define packet_put_cstring(str) \ 80 ssh_packet_put_cstring(active_state, (str)) 81 #define packet_put_raw(buf, len) \ 82 ssh_packet_put_raw(active_state, (buf), (len)) 83 #define packet_put_bignum(value) \ 84 ssh_packet_put_bignum(active_state, (value)) 85 #define packet_put_bignum2(value) \ 86 ssh_packet_put_bignum2(active_state, (value)) 87 #define packet_send() \ 88 ssh_packet_send(active_state) 89 #define packet_read() \ 90 ssh_packet_read(active_state) 91 #define packet_get_int64() \ 92 ssh_packet_get_int64(active_state) 93 #define packet_get_bignum(value) \ 94 ssh_packet_get_bignum(active_state, (value)) 95 #define packet_get_bignum2(value) \ 96 ssh_packet_get_bignum2(active_state, (value)) 97 #define packet_remaining() \ 98 ssh_packet_remaining(active_state) 99 #define packet_get_string(length_ptr) \ 100 ssh_packet_get_string(active_state, (length_ptr)) 101 #define packet_get_string_ptr(length_ptr) \ 102 ssh_packet_get_string_ptr(active_state, (length_ptr)) 103 #define packet_get_cstring(length_ptr) \ 104 ssh_packet_get_cstring(active_state, (length_ptr)) 105 void packet_send_debug(const char *, ...) 106 __attribute__((format(printf, 1, 2))); 107 void packet_disconnect(const char *, ...) 108 __attribute__((format(printf, 1, 2))) 109 __attribute__((noreturn)); 110 #define packet_have_data_to_write() \ 111 ssh_packet_have_data_to_write(active_state) 112 #define packet_not_very_much_data_to_write() \ 113 ssh_packet_not_very_much_data_to_write(active_state) 114 #define packet_set_interactive(interactive, qos_interactive, qos_bulk) \ 115 ssh_packet_set_interactive(active_state, (interactive), (qos_interactive), (qos_bulk)) 116 #define packet_is_interactive() \ 117 ssh_packet_is_interactive(active_state) 118 #define packet_set_maxsize(s) \ 119 ssh_packet_set_maxsize(active_state, (s)) 120 #define packet_inc_alive_timeouts() \ 121 ssh_packet_inc_alive_timeouts(active_state) 122 #define packet_set_alive_timeouts(ka) \ 123 ssh_packet_set_alive_timeouts(active_state, (ka)) 124 #define packet_get_maxsize() \ 125 ssh_packet_get_maxsize(active_state) 126 #define packet_add_padding(pad) \ 127 sshpkt_add_padding(active_state, (pad)) 128 #define packet_send_ignore(nbytes) \ 129 ssh_packet_send_ignore(active_state, (nbytes)) 130 #define packet_need_rekeying() \ 131 ssh_packet_need_rekeying(active_state) 132 #define packet_set_server() \ 133 ssh_packet_set_server(active_state) 134 #define packet_set_authenticated() \ 135 ssh_packet_set_authenticated(active_state) 136 #define packet_get_input() \ 137 ssh_packet_get_input(active_state) 138 #define packet_get_output() \ 139 ssh_packet_get_output(active_state) 140 #define packet_set_compress_hooks(ctx, allocfunc, freefunc) \ 141 ssh_packet_set_compress_hooks(active_state, ctx, \ 142 allocfunc, freefunc); 143 #define packet_check_eom() \ 144 ssh_packet_check_eom(active_state) 145 #define set_newkeys(mode) \ 146 ssh_set_newkeys(active_state, (mode)) 147 #define packet_get_state(m) \ 148 ssh_packet_get_state(active_state, m) 149 #define packet_set_state(m) \ 150 ssh_packet_set_state(active_state, m) 151 #if 0 152 #define get_remote_ipaddr() \ 153 ssh_remote_ipaddr(active_state) 154 #endif 155 #define packet_get_raw(lenp) \ 156 sshpkt_ptr(active_state, lenp) 157 #define packet_get_ecpoint(c,p) \ 158 ssh_packet_get_ecpoint(active_state, c, p) 159 #define packet_put_ecpoint(c,p) \ 160 ssh_packet_put_ecpoint(active_state, c, p) 161 #define packet_get_rekey_timeout() \ 162 ssh_packet_get_rekey_timeout(active_state) 163 #define packet_set_rekey_limits(x,y) \ 164 ssh_packet_set_rekey_limits(active_state, x, y) 165 #define packet_get_bytes(x,y) \ 166 ssh_packet_get_bytes(active_state, x, y) 167 168 #endif /* _OPACKET_H */ 169