Lines Matching defs:ssh

13  * called by a name other than "ssh" or "Secure Shell".
84 #include "ssh.h"
223 struct ssh *
226 struct ssh *ssh = NULL;
229 if ((ssh = calloc(1, sizeof(*ssh))) == NULL ||
237 TAILQ_INIT(&ssh->private_keys);
238 TAILQ_INIT(&ssh->public_keys);
250 ssh->state = state;
251 return ssh;
260 free(ssh);
268 struct ssh *
269 ssh_packet_set_connection(struct ssh *ssh, int fd_in, int fd_out)
279 if (ssh == NULL)
280 ssh = ssh_alloc_session_state();
281 if (ssh == NULL) {
285 state = ssh->state;
293 free(ssh);
302 (void)ssh_remote_ipaddr(ssh);
303 return ssh;
307 ssh_packet_set_timeout(struct ssh *ssh, int timeout, int count)
309 struct session_state *state = ssh->state;
322 ssh_packet_stop_discard(struct ssh *ssh)
324 struct session_state *state = ssh->state;
341 logit("Finished discarding for %.200s", ssh_remote_ipaddr(ssh));
346 ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc,
349 struct session_state *state = ssh->state;
353 if ((r = sshpkt_disconnect(ssh, "Packet corrupt")) != 0)
360 (r = ssh_packet_stop_discard(ssh)) != 0)
369 ssh_packet_connection_is_on_socket(struct ssh *ssh)
371 struct session_state *state = ssh->state;
396 ssh_packet_get_bytes(struct ssh *ssh, u_int64_t *ibytes, u_int64_t *obytes)
399 *ibytes = ssh->state->p_read.bytes;
401 *obytes = ssh->state->p_send.bytes;
405 ssh_packet_connection_af(struct ssh *ssh)
411 if (getsockname(ssh->state->connection_out, (struct sockaddr *)&to,
425 ssh_packet_set_nonblocking(struct ssh *ssh)
428 set_nonblock(ssh->state->connection_in);
430 if (ssh->state->connection_out != ssh->state->connection_in)
431 set_nonblock(ssh->state->connection_out);
437 ssh_packet_get_connection_in(struct ssh *ssh)
439 return ssh->state->connection_in;
445 ssh_packet_get_connection_out(struct ssh *ssh)
447 return ssh->state->connection_out;
456 ssh_remote_ipaddr(struct ssh *ssh)
459 if (ssh->remote_ipaddr == NULL)
460 ssh->remote_ipaddr = ssh_packet_connection_is_on_socket(ssh) ?
461 get_peer_ipaddr(ssh->state->connection_in) :
463 if (ssh->remote_ipaddr == NULL)
465 return ssh->remote_ipaddr;
471 ssh_packet_close(struct ssh *ssh)
473 struct session_state *state = ssh->state;
522 if (ssh->remote_ipaddr) {
523 free(ssh->remote_ipaddr);
524 ssh->remote_ipaddr = NULL;
526 free(ssh->state);
527 ssh->state = NULL;
533 ssh_packet_set_protocol_flags(struct ssh *ssh, u_int protocol_flags)
535 ssh->state->remote_protocol_flags = protocol_flags;
541 ssh_packet_get_protocol_flags(struct ssh *ssh)
543 return ssh->state->remote_protocol_flags;
552 ssh_packet_init_compression(struct ssh *ssh)
554 if (!ssh->state->compression_buffer &&
555 ((ssh->state->compression_buffer = sshbuf_new()) == NULL))
561 start_compression_out(struct ssh *ssh, int level)
566 if (ssh->state->compression_out_started == 1)
567 deflateEnd(&ssh->state->compression_out_stream);
568 switch (deflateInit(&ssh->state->compression_out_stream, level)) {
570 ssh->state->compression_out_started = 1;
581 start_compression_in(struct ssh *ssh)
583 if (ssh->state->compression_in_started == 1)
584 inflateEnd(&ssh->state->compression_in_stream);
585 switch (inflateInit(&ssh->state->compression_in_stream)) {
587 ssh->state->compression_in_started = 1;
598 ssh_packet_start_compression(struct ssh *ssh, int level)
602 if (ssh->state->packet_compression && !compat20)
604 ssh->state->packet_compression = 1;
605 if ((r = ssh_packet_init_compression(ssh)) != 0 ||
606 (r = start_compression_in(ssh)) != 0 ||
607 (r = start_compression_out(ssh, level)) != 0)
614 compress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
619 if (ssh->state->compression_out_started != 1)
627 if ((ssh->state->compression_out_stream.next_in =
630 ssh->state->compression_out_stream.avail_in = sshbuf_len(in);
635 ssh->state->compression_out_stream.next_out = buf;
636 ssh->state->compression_out_stream.avail_out = sizeof(buf);
639 status = deflate(&ssh->state->compression_out_stream,
647 ssh->state->compression_out_stream.avail_out)) != 0)
652 ssh->state->compression_out_failures++;
655 } while (ssh->state->compression_out_stream.avail_out == 0);
660 uncompress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
665 if (ssh->state->compression_in_started != 1)
668 if ((ssh->state->compression_in_stream.next_in =
671 ssh->state->compression_in_stream.avail_in = sshbuf_len(in);
675 ssh->state->compression_in_stream.next_out = buf;
676 ssh->state->compression_in_stream.avail_out = sizeof(buf);
678 status = inflate(&ssh->state->compression_in_stream,
683 ssh->state->compression_in_stream.avail_out)) != 0)
699 ssh->state->compression_in_failures++;
708 ssh_packet_get_compress_state(struct sshbuf *m, struct ssh *ssh)
710 struct session_state *state = ssh->state;
736 ssh_packet_set_compress_state(struct ssh *ssh, struct sshbuf *m)
738 struct session_state *state = ssh->state;
774 ssh_packet_set_compress_hooks(struct ssh *ssh, void *ctx,
778 ssh->state->compression_out_stream.zalloc = (alloc_func)allocfunc;
779 ssh->state->compression_out_stream.zfree = (free_func)freefunc;
780 ssh->state->compression_out_stream.opaque = ctx;
781 ssh->state->compression_in_stream.zalloc = (alloc_func)allocfunc;
782 ssh->state->compression_in_stream.zfree = (free_func)freefunc;
783 ssh->state->compression_in_stream.opaque = ctx;
793 ssh_packet_set_encryption_key(struct ssh *ssh, const u_char *key, u_int keylen, int number)
798 struct session_state *state = ssh->state;
831 ssh_packet_send1(struct ssh *ssh)
833 struct session_state *state = ssh->state;
851 if ((r = compress_buffer(ssh, state->outgoing_packet,
919 ssh_set_newkeys(struct ssh *ssh, int mode)
921 struct session_state *state = ssh->state;
963 if ((state->newkeys[mode] = ssh->kex->newkeys[mode]) == NULL)
965 ssh->kex->newkeys[mode] = NULL;
990 if ((r = ssh_packet_init_compression(ssh)) < 0)
993 if ((r = start_compression_out(ssh, 6)) != 0)
996 if ((r = start_compression_in(ssh)) != 0)
1021 ssh_packet_enable_delayed_compress(struct ssh *ssh)
1023 struct session_state *state = ssh->state;
1038 if ((r = ssh_packet_init_compression(ssh)) != 0)
1041 if ((r = start_compression_out(ssh, 6)) != 0)
1044 if ((r = start_compression_in(ssh)) != 0)
1057 ssh_packet_send2_wrapped(struct ssh *ssh)
1059 struct session_state *state = ssh->state;
1093 if ((r = compress_buffer(ssh, state->outgoing_packet,
1187 if (!(ssh->compat & SSH_BUG_NOREKEY))
1194 r = ssh_set_newkeys(ssh, MODE_OUT);
1196 r = ssh_packet_enable_delayed_compress(ssh);
1204 ssh_packet_send2(struct ssh *ssh)
1206 struct session_state *state = ssh->state;
1237 if ((r = ssh_packet_send2_wrapped(ssh)) != 0)
1251 if ((r = ssh_packet_send2_wrapped(ssh)) != 0)
1265 ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1267 struct session_state *state = ssh->state;
1284 if ((r = ssh_packet_write_wait(ssh)) != 0)
1290 r = ssh_packet_read_poll_seqnr(ssh, typep, seqnr_p);
1298 if ((r = sshpkt_get_end(ssh)) != 0)
1353 if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0)
1362 ssh_packet_read(struct ssh *ssh)
1367 if ((r = ssh_packet_read_seqnr(ssh, &type, NULL)) != 0)
1378 ssh_packet_read_expect(struct ssh *ssh, u_int expected_type)
1383 if ((r = ssh_packet_read_seqnr(ssh, &type, NULL)) != 0)
1386 if ((r = sshpkt_disconnect(ssh,
1405 ssh_packet_read_poll1(struct ssh *ssh, u_char *typep)
1407 struct session_state *state = ssh->state;
1423 if ((r = sshpkt_disconnect(ssh, "Bad packet length %u",
1441 * Cryptographic attack detector for ssh
1463 if ((r = sshpkt_disconnect(ssh, "%s", emsg)) != 0 ||
1464 (r = ssh_packet_write_wait(ssh)) != 0)
1498 if ((r = sshpkt_disconnect(ssh, "invalid packet length")) != 0 ||
1499 (r = ssh_packet_write_wait(ssh)) != 0)
1508 if ((r = sshpkt_disconnect(ssh, "connection corrupted")) != 0 ||
1509 (r = ssh_packet_write_wait(ssh)) != 0)
1518 if ((r = uncompress_buffer(ssh, state->incoming_packet,
1532 if ((r = sshpkt_disconnect(ssh, "invalid packet type")) != 0 ||
1533 (r = ssh_packet_write_wait(ssh)) != 0)
1543 ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1545 struct session_state *state = ssh->state;
1582 if ((r = sshpkt_disconnect(ssh, "Packet corrupt")) != 0)
1612 return ssh_packet_start_discard(ssh, enc, mac,
1635 return ssh_packet_start_discard(ssh, enc, mac,
1683 return ssh_packet_start_discard(ssh, enc, mac,
1696 if (!(ssh->compat & SSH_BUG_NOREKEY))
1705 if ((r = sshpkt_disconnect(ssh,
1707 (r = ssh_packet_write_wait(ssh)) != 0)
1721 if ((r = uncompress_buffer(ssh, state->incoming_packet,
1738 if ((r = sshpkt_disconnect(ssh,
1740 (r = ssh_packet_write_wait(ssh)) != 0)
1745 r = ssh_set_newkeys(ssh, MODE_IN);
1747 r = ssh_packet_enable_delayed_compress(ssh);
1761 ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1763 struct session_state *state = ssh->state;
1771 r = ssh_packet_read_poll2(ssh, typep, seqnr_p);
1783 if ((r = sshpkt_get_u8(ssh, NULL)) != 0 ||
1784 (r = sshpkt_get_string(ssh, &msg, NULL)) != 0 ||
1785 (r = sshpkt_get_string(ssh, NULL, NULL)) != 0) {
1794 if ((r = sshpkt_get_u32(ssh, &reason)) != 0 ||
1795 (r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1798 do_log2(ssh->state->server_side &&
1802 ssh_remote_ipaddr(ssh), reason, msg);
1806 if ((r = sshpkt_get_u32(ssh, &seqnr)) != 0)
1815 r = ssh_packet_read_poll1(ssh, typep);
1822 if ((r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1828 if ((r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1831 ssh_remote_ipaddr(ssh), msg);
1848 ssh_packet_process_incoming(struct ssh *ssh, const char *buf, u_int len)
1850 struct session_state *state = ssh->state;
1856 if ((r = ssh_packet_stop_discard(ssh)) != 0)
1862 if ((r = sshbuf_put(ssh->state->input, buf, len)) != 0)
1869 ssh_packet_remaining(struct ssh *ssh)
1871 return sshbuf_len(ssh->state->incoming_packet);
1883 ssh_packet_send_debug(struct ssh *ssh, const char *fmt,...)
1889 if (compat20 && (ssh->compat & SSH_BUG_DEBUG))
1897 if ((r = sshpkt_start(ssh, SSH2_MSG_DEBUG)) != 0 ||
1898 (r = sshpkt_put_u8(ssh, 0)) != 0 || /* always display */
1899 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
1900 (r = sshpkt_put_cstring(ssh, "")) != 0 ||
1901 (r = sshpkt_send(ssh)) != 0)
1904 if ((r = sshpkt_start(ssh, SSH_MSG_DEBUG)) != 0 ||
1905 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
1906 (r = sshpkt_send(ssh)) != 0)
1909 if ((r = ssh_packet_write_wait(ssh)) != 0)
1917 sshpkt_fatal(struct ssh *ssh, const char *tag, int r)
1921 logit("Connection closed by %.200s", ssh_remote_ipaddr(ssh));
1924 logit("Connection to %.200s timed out", ssh_remote_ipaddr(ssh));
1928 ssh_remote_ipaddr(ssh));
1933 ssh_remote_ipaddr(ssh));
1942 if (ssh && ssh->kex && ssh->kex->failed_choice) {
1944 "Their offer: %s", ssh_remote_ipaddr(ssh),
1945 ssh_err(r), ssh->kex->failed_choice);
1951 ssh_remote_ipaddr(ssh), ssh_err(r));
1962 ssh_packet_disconnect(struct ssh *ssh, const char *fmt,...)
1988 if ((r = sshpkt_disconnect(ssh, "%s", buf)) != 0)
1989 sshpkt_fatal(ssh, __func__, r);
1991 if ((r = ssh_packet_write_wait(ssh)) != 0)
1992 sshpkt_fatal(ssh, __func__, r);
1995 ssh_packet_close(ssh);
2004 ssh_packet_write_poll(struct ssh *ssh)
2006 struct session_state *state = ssh->state;
2033 ssh_packet_write_wait(struct ssh *ssh)
2038 struct session_state *state = ssh->state;
2044 ssh_packet_write_poll(ssh);
2045 while (ssh_packet_have_data_to_write(ssh)) {
2077 if ((r = ssh_packet_write_poll(ssh)) != 0) {
2089 ssh_packet_have_data_to_write(struct ssh *ssh)
2091 return sshbuf_len(ssh->state->output) != 0;
2097 ssh_packet_not_very_much_data_to_write(struct ssh *ssh)
2099 if (ssh->state->interactive_mode)
2100 return sshbuf_len(ssh->state->output) < 16384;
2102 return sshbuf_len(ssh->state->output) < 128 * 1024;
2106 ssh_packet_set_tos(struct ssh *ssh, int tos)
2109 if (!ssh_packet_connection_is_on_socket(ssh))
2111 switch (ssh_packet_connection_af(ssh)) {
2115 if (setsockopt(ssh->state->connection_in,
2124 if (setsockopt(ssh->state->connection_in,
2137 ssh_packet_set_interactive(struct ssh *ssh, int interactive, int qos_interactive, int qos_bulk)
2139 struct session_state *state = ssh->state;
2149 if (!ssh_packet_connection_is_on_socket(ssh))
2152 ssh_packet_set_tos(ssh, interactive ? qos_interactive :
2159 ssh_packet_is_interactive(struct ssh *ssh)
2161 return ssh->state->interactive_mode;
2165 ssh_packet_set_maxsize(struct ssh *ssh, u_int s)
2167 struct session_state *state = ssh->state;
2185 ssh_packet_inc_alive_timeouts(struct ssh *ssh)
2187 return ++ssh->state->keep_alive_timeouts;
2191 ssh_packet_set_alive_timeouts(struct ssh *ssh, int ka)
2193 ssh->state->keep_alive_timeouts = ka;
2197 ssh_packet_get_maxsize(struct ssh *ssh)
2199 return ssh->state->max_packet_size;
2214 ssh_packet_send_ignore(struct ssh *ssh, int nbytes)
2219 if ((r = sshpkt_start(ssh, compat20 ?
2221 (r = sshpkt_put_u32(ssh, nbytes)) != 0)
2226 if ((r = sshpkt_put_u8(ssh, (u_char)rnd & 0xff)) != 0)
2234 ssh_packet_need_rekeying(struct ssh *ssh)
2236 struct session_state *state = ssh->state;
2238 if (ssh->compat & SSH_BUG_NOREKEY)
2252 ssh_packet_set_rekey_limits(struct ssh *ssh, u_int32_t bytes, time_t seconds)
2256 ssh->state->rekey_limit = bytes;
2257 ssh->state->rekey_interval = seconds;
2261 ssh_packet_get_rekey_timeout(struct ssh *ssh)
2265 seconds = ssh->state->rekey_time + ssh->state->rekey_interval -
2271 ssh_packet_set_server(struct ssh *ssh)
2273 ssh->state->server_side = 1;
2277 ssh_packet_set_authenticated(struct ssh *ssh)
2279 ssh->state->after_authentication = 1;
2283 ssh_packet_get_input(struct ssh *ssh)
2285 return (void *)ssh->state->input;
2289 ssh_packet_get_output(struct ssh *ssh)
2291 return (void *)ssh->state->output;
2300 ssh_packet_backup_state(struct ssh *ssh,
2301 struct ssh *backup_state)
2303 struct ssh *tmp;
2305 close(ssh->state->connection_in);
2306 ssh->state->connection_in = -1;
2307 close(ssh->state->connection_out);
2308 ssh->state->connection_out = -1;
2313 backup_state = ssh;
2314 ssh = tmp;
2322 ssh_packet_restore_state(struct ssh *ssh,
2323 struct ssh *backup_state)
2325 struct ssh *tmp;
2330 backup_state = ssh;
2331 ssh = tmp;
2332 ssh->state->connection_in = backup_state->state->connection_in;
2334 ssh->state->connection_out = backup_state->state->connection_out;
2338 if ((r = sshbuf_putb(ssh->state->input,
2348 ssh_packet_set_postauth(struct ssh *ssh)
2355 ssh->state->after_authentication = 1;
2356 ssh->state->rekeying = 0;
2358 if (ssh->state->newkeys[mode] == NULL)
2360 comp = &ssh->state->newkeys[mode]->comp;
2362 (r = ssh_packet_init_compression(ssh)) != 0)
2392 newkeys_to_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2402 if ((newkey = ssh->state->newkeys[mode]) == NULL)
2407 cc = (mode == MODE_OUT) ? &ssh->state->send_context :
2408 &ssh->state->receive_context;
2440 ssh_packet_get_state(struct ssh *ssh, struct sshbuf *m)
2442 struct session_state *state = ssh->state;
2462 if ((r = kex_to_blob(m, ssh->kex)) != 0 ||
2463 (r = newkeys_to_blob(m, ssh, MODE_OUT)) != 0 ||
2464 (r = newkeys_to_blob(m, ssh, MODE_IN)) != 0 ||
2491 if ((r = ssh_packet_get_compress_state(m, ssh)) != 0 ||
2506 newkeys_from_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2565 ssh->kex->newkeys[mode] = newkey;
2624 ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)
2626 struct session_state *state = ssh->state;
2642 ssh_packet_set_encryption_key(ssh, ssh1key, ssh1keylen,
2651 if ((r = kex_from_blob(m, &ssh->kex)) != 0 ||
2652 (r = newkeys_from_blob(m, ssh, MODE_OUT)) != 0 ||
2653 (r = newkeys_from_blob(m, ssh, MODE_IN)) != 0 ||
2671 if ((r = ssh_set_newkeys(ssh, MODE_IN)) != 0 ||
2672 (r = ssh_set_newkeys(ssh, MODE_OUT)) != 0)
2684 if ((r = ssh_packet_set_compress_state(ssh, m)) != 0 ||
2685 (r = ssh_packet_set_postauth(ssh)) != 0)
2713 sshpkt_put(struct ssh *ssh, const void *v, size_t len)
2715 return sshbuf_put(ssh->state->outgoing_packet, v, len);
2719 sshpkt_putb(struct ssh *ssh, const struct sshbuf *b)
2721 return sshbuf_putb(ssh->state->outgoing_packet, b);
2725 sshpkt_put_u8(struct ssh *ssh, u_char val)
2727 return sshbuf_put_u8(ssh->state->outgoing_packet, val);
2731 sshpkt_put_u32(struct ssh *ssh, u_int32_t val)
2733 return sshbuf_put_u32(ssh->state->outgoing_packet, val);
2737 sshpkt_put_u64(struct ssh *ssh, u_int64_t val)
2739 return sshbuf_put_u64(ssh->state->outgoing_packet, val);
2743 sshpkt_put_string(struct ssh *ssh, const void *v, size_t len)
2745 return sshbuf_put_string(ssh->state->outgoing_packet, v, len);
2749 sshpkt_put_cstring(struct ssh *ssh, const void *v)
2751 return sshbuf_put_cstring(ssh->state->outgoing_packet, v);
2755 sshpkt_put_stringb(struct ssh *ssh, const struct sshbuf *v)
2757 return sshbuf_put_stringb(ssh->state->outgoing_packet, v);
2763 sshpkt_put_ec(struct ssh *ssh, const EC_POINT *v, const EC_GROUP *g)
2765 return sshbuf_put_ec(ssh->state->outgoing_packet, v, g);
2771 sshpkt_put_bignum1(struct ssh *ssh, const BIGNUM *v)
2773 return sshbuf_put_bignum1(ssh->state->outgoing_packet, v);
2778 sshpkt_put_bignum2(struct ssh *ssh, const BIGNUM *v)
2780 return sshbuf_put_bignum2(ssh->state->outgoing_packet, v);
2787 sshpkt_get(struct ssh *ssh, void *valp, size_t len)
2789 return sshbuf_get(ssh->state->incoming_packet, valp, len);
2793 sshpkt_get_u8(struct ssh *ssh, u_char *valp)
2795 return sshbuf_get_u8(ssh->state->incoming_packet, valp);
2799 sshpkt_get_u32(struct ssh *ssh, u_int32_t *valp)
2801 return sshbuf_get_u32(ssh->state->incoming_packet, valp);
2805 sshpkt_get_u64(struct ssh *ssh, u_int64_t *valp)
2807 return sshbuf_get_u64(ssh->state->incoming_packet, valp);
2811 sshpkt_get_string(struct ssh *ssh, u_char **valp, size_t *lenp)
2813 return sshbuf_get_string(ssh->state->incoming_packet, valp, lenp);
2817 sshpkt_get_string_direct(struct ssh *ssh, const u_char **valp, size_t *lenp)
2819 return sshbuf_get_string_direct(ssh->state->incoming_packet, valp, lenp);
2823 sshpkt_get_cstring(struct ssh *ssh, char **valp, size_t *lenp)
2825 return sshbuf_get_cstring(ssh->state->incoming_packet, valp, lenp);
2831 sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g)
2833 return sshbuf_get_ec(ssh->state->incoming_packet, v, g);
2839 sshpkt_get_bignum1(struct ssh *ssh, BIGNUM *v)
2841 return sshbuf_get_bignum1(ssh->state->incoming_packet, v);
2846 sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v)
2848 return sshbuf_get_bignum2(ssh->state->incoming_packet, v);
2853 sshpkt_get_end(struct ssh *ssh)
2855 if (sshbuf_len(ssh->state->incoming_packet) > 0)
2861 sshpkt_ptr(struct ssh *ssh, size_t *lenp)
2864 *lenp = sshbuf_len(ssh->state->incoming_packet);
2865 return sshbuf_ptr(ssh->state->incoming_packet);
2871 sshpkt_start(struct ssh *ssh, u_char type)
2880 sshbuf_reset(ssh->state->outgoing_packet);
2881 return sshbuf_put(ssh->state->outgoing_packet, buf, len);
2887 sshpkt_send(struct ssh *ssh)
2890 return ssh_packet_send2(ssh);
2892 return ssh_packet_send1(ssh);
2896 sshpkt_disconnect(struct ssh *ssh, const char *fmt,...)
2907 if ((r = sshpkt_start(ssh, SSH2_MSG_DISCONNECT)) != 0 ||
2908 (r = sshpkt_put_u32(ssh, SSH2_DISCONNECT_PROTOCOL_ERROR)) != 0 ||
2909 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
2910 (r = sshpkt_put_cstring(ssh, "")) != 0 ||
2911 (r = sshpkt_send(ssh)) != 0)
2914 if ((r = sshpkt_start(ssh, SSH_MSG_DISCONNECT)) != 0 ||
2915 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
2916 (r = sshpkt_send(ssh)) != 0)
2924 sshpkt_add_padding(struct ssh *ssh, u_char pad)
2926 ssh->state->extra_pad = pad;