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;
301 (void)ssh_remote_ipaddr(ssh);
302 return ssh;
306 ssh_packet_set_timeout(struct ssh *ssh, int timeout, int count)
308 struct session_state *state = ssh->state;
321 ssh_packet_stop_discard(struct ssh *ssh)
323 struct session_state *state = ssh->state;
340 logit("Finished discarding for %.200s", ssh_remote_ipaddr(ssh));
345 ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc,
348 struct session_state *state = ssh->state;
352 if ((r = sshpkt_disconnect(ssh, "Packet corrupt")) != 0)
359 (r = ssh_packet_stop_discard(ssh)) != 0)
368 ssh_packet_connection_is_on_socket(struct ssh *ssh)
370 struct session_state *state = ssh->state;
395 ssh_packet_get_bytes(struct ssh *ssh, u_int64_t *ibytes, u_int64_t *obytes)
398 *ibytes = ssh->state->p_read.bytes;
400 *obytes = ssh->state->p_send.bytes;
404 ssh_packet_connection_af(struct ssh *ssh)
410 if (getsockname(ssh->state->connection_out, (struct sockaddr *)&to,
424 ssh_packet_set_nonblocking(struct ssh *ssh)
427 set_nonblock(ssh->state->connection_in);
429 if (ssh->state->connection_out != ssh->state->connection_in)
430 set_nonblock(ssh->state->connection_out);
436 ssh_packet_get_connection_in(struct ssh *ssh)
438 return ssh->state->connection_in;
444 ssh_packet_get_connection_out(struct ssh *ssh)
446 return ssh->state->connection_out;
455 ssh_remote_ipaddr(struct ssh *ssh)
458 if (ssh->remote_ipaddr == NULL)
459 ssh->remote_ipaddr = ssh_packet_connection_is_on_socket(ssh) ?
460 get_peer_ipaddr(ssh->state->connection_in) :
462 if (ssh->remote_ipaddr == NULL)
464 return ssh->remote_ipaddr;
470 ssh_packet_close(struct ssh *ssh)
472 struct session_state *state = ssh->state;
521 if (ssh->remote_ipaddr) {
522 free(ssh->remote_ipaddr);
523 ssh->remote_ipaddr = NULL;
525 free(ssh->state);
526 ssh->state = NULL;
532 ssh_packet_set_protocol_flags(struct ssh *ssh, u_int protocol_flags)
534 ssh->state->remote_protocol_flags = protocol_flags;
540 ssh_packet_get_protocol_flags(struct ssh *ssh)
542 return ssh->state->remote_protocol_flags;
551 ssh_packet_init_compression(struct ssh *ssh)
553 if (!ssh->state->compression_buffer &&
554 ((ssh->state->compression_buffer = sshbuf_new()) == NULL))
560 start_compression_out(struct ssh *ssh, int level)
565 if (ssh->state->compression_out_started == 1)
566 deflateEnd(&ssh->state->compression_out_stream);
567 switch (deflateInit(&ssh->state->compression_out_stream, level)) {
569 ssh->state->compression_out_started = 1;
580 start_compression_in(struct ssh *ssh)
582 if (ssh->state->compression_in_started == 1)
583 inflateEnd(&ssh->state->compression_in_stream);
584 switch (inflateInit(&ssh->state->compression_in_stream)) {
586 ssh->state->compression_in_started = 1;
597 ssh_packet_start_compression(struct ssh *ssh, int level)
601 if (ssh->state->packet_compression && !compat20)
603 ssh->state->packet_compression = 1;
604 if ((r = ssh_packet_init_compression(ssh)) != 0 ||
605 ssh)) != 0 ||
606 (r = start_compression_out(ssh, level)) != 0)
613 compress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
618 if (ssh->state->compression_out_started != 1)
626 if ((ssh->state->compression_out_stream.next_in =
629 ssh->state->compression_out_stream.avail_in = sshbuf_len(in);
634 ssh->state->compression_out_stream.next_out = buf;
635 ssh->state->compression_out_stream.avail_out = sizeof(buf);
638 status = deflate(&ssh->state->compression_out_stream,
646 ssh->state->compression_out_stream.avail_out)) != 0)
651 ssh->state->compression_out_failures++;
654 } while (ssh->state->compression_out_stream.avail_out == 0);
659 uncompress_buffer(struct ssh *ssh, struct sshbuf *in, struct sshbuf *out)
664 if (ssh->state->compression_in_started != 1)
667 if ((ssh->state->compression_in_stream.next_in =
670 ssh->state->compression_in_stream.avail_in = sshbuf_len(in);
674 ssh->state->compression_in_stream.next_out = buf;
675 ssh->state->compression_in_stream.avail_out = sizeof(buf);
677 status = inflate(&ssh->state->compression_in_stream,
682 ssh->state->compression_in_stream.avail_out)) != 0)
698 ssh->state->compression_in_failures++;
707 ssh_packet_get_compress_state(struct sshbuf *m, struct ssh *ssh)
709 struct session_state *state = ssh->state;
735 ssh_packet_set_compress_state(struct ssh *ssh, struct sshbuf *m)
737 struct session_state *state = ssh->state;
773 ssh_packet_set_compress_hooks(struct ssh *ssh, void *ctx,
777 ssh->state->compression_out_stream.zalloc = (alloc_func)allocfunc;
778 ssh->state->compression_out_stream.zfree = (free_func)freefunc;
779 ssh->state->compression_out_stream.opaque = ctx;
780 ssh->state->compression_in_stream.zalloc = (alloc_func)allocfunc;
781 ssh->state->compression_in_stream.zfree = (free_func)freefunc;
782 ssh->state->compression_in_stream.opaque = ctx;
792 ssh_packet_set_encryption_key(struct ssh *ssh, const u_char *key, u_int keylen, int number)
795 struct session_state *state = ssh->state;
828 ssh_packet_send1(struct ssh *ssh)
830 struct session_state *state = ssh->state;
848 if ((r = compress_buffer(ssh, state->outgoing_packet,
916 ssh_set_newkeys(struct ssh *ssh, int mode)
918 struct session_state *state = ssh->state;
960 if ((state->newkeys[mode] = ssh->kex->newkeys[mode]) == NULL)
962 ssh->kex->newkeys[mode] = NULL;
987 if ((r = ssh_packet_init_compression(ssh)) < 0)
990 if ((r = start_compression_out(ssh, 6)) != 0)
993 if ((r = start_compression_in(ssh)) != 0)
1018 ssh_packet_enable_delayed_compress(struct ssh *ssh)
1020 struct session_state *state = ssh->state;
1035 if ((r = ssh_packet_init_compression(ssh)) != 0)
1038 if ((r = start_compression_out(ssh, 6)) != 0)
1041 if ((r = start_compression_in(ssh)) != 0)
1054 ssh_packet_send2_wrapped(struct ssh *ssh)
1056 struct session_state *state = ssh->state;
1090 if ((r = compress_buffer(ssh, state->outgoing_packet,
1184 if (!(ssh->compat & SSH_BUG_NOREKEY))
1191 r = ssh_set_newkeys(ssh, MODE_OUT);
1193 r = ssh_packet_enable_delayed_compress(ssh);
1201 ssh_packet_send2(struct ssh *ssh)
1203 struct session_state *state = ssh->state;
1234 if ((r = ssh_packet_send2_wrapped(ssh)) != 0)
1248 if ((r = ssh_packet_send2_wrapped(ssh)) != 0)
1262 ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1264 struct session_state *state = ssh->state;
1281 if ((r = ssh_packet_write_wait(ssh)) != 0)
1287 r = ssh_packet_read_poll_seqnr(ssh, typep, seqnr_p);
1295 if ((r = sshpkt_get_end(ssh)) != 0)
1346 if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0)
1354 ssh_packet_read(struct ssh *ssh)
1359 if ((r = ssh_packet_read_seqnr(ssh, &type, NULL)) != 0)
1370 ssh_packet_read_expect(struct ssh *ssh, u_int expected_type)
1375 if ((r = ssh_packet_read_seqnr(ssh, &type, NULL)) != 0)
1378 if ((r = sshpkt_disconnect(ssh,
1397 ssh_packet_read_poll1(struct ssh *ssh, u_char *typep)
1399 struct session_state *state = ssh->state;
1415 if ((r = sshpkt_disconnect(ssh, "Bad packet length %u",
1433 * Cryptographic attack detector for ssh
1455 if ((r = sshpkt_disconnect(ssh, "%s", emsg)) != 0 ||
1456 (r = ssh_packet_write_wait(ssh)) != 0)
1490 if ((r = sshpkt_disconnect(ssh, "invalid packet length")) != 0 ||
1491 (r = ssh_packet_write_wait(ssh)) != 0)
1500 if ((r = sshpkt_disconnect(ssh, "connection corrupted")) != 0 ||
1501 (r = ssh_packet_write_wait(ssh)) != 0)
1510 if ((r = uncompress_buffer(ssh, state->incoming_packet,
1524 if ((r = sshpkt_disconnect(ssh, "invalid packet type")) != 0 ||
1525 (r = ssh_packet_write_wait(ssh)) != 0)
1535 ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1537 struct session_state *state = ssh->state;
1574 if ((r = sshpkt_disconnect(ssh, "Packet corrupt")) != 0)
1603 return ssh_packet_start_discard(ssh, enc, mac,
1626 return ssh_packet_start_discard(ssh, enc, mac,
1674 return ssh_packet_start_discard(ssh, enc, mac,
1687 if (!(ssh->compat & SSH_BUG_NOREKEY))
1696 if ((r = sshpkt_disconnect(ssh,
1698 (r = ssh_packet_write_wait(ssh)) != 0)
1712 if ((r = uncompress_buffer(ssh, state->incoming_packet,
1729 if ((r = sshpkt_disconnect(ssh,
1731 (r = ssh_packet_write_wait(ssh)) != 0)
1736 r = ssh_set_newkeys(ssh, MODE_IN);
1738 r = ssh_packet_enable_delayed_compress(ssh);
1752 ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1754 struct session_state *state = ssh->state;
1762 r = ssh_packet_read_poll2(ssh, typep, seqnr_p);
1774 if ((r = sshpkt_get_u8(ssh, NULL)) != 0 ||
1775 (r = sshpkt_get_string(ssh, &msg, NULL)) != 0 ||
1776 (r = sshpkt_get_string(ssh, NULL, NULL)) != 0) {
1785 if ((r = sshpkt_get_u32(ssh, &reason)) != 0 ||
1786 (r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1789 do_log2(ssh->state->server_side &&
1793 ssh_remote_ipaddr(ssh), reason, msg);
1797 if ((r = sshpkt_get_u32(ssh, &seqnr)) != 0)
1806 r = ssh_packet_read_poll1(ssh, typep);
1813 if ((r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1819 if ((r = sshpkt_get_string(ssh, &msg, NULL)) != 0)
1822 ssh_remote_ipaddr(ssh), msg);
1839 ssh_packet_process_incoming(struct ssh *ssh, const char *buf, u_int len)
1841 struct session_state *state = ssh->state;
1847 if ((r = ssh_packet_stop_discard(ssh)) != 0)
1853 if ((r = sshbuf_put(ssh->state->input, buf, len)) != 0)
1860 ssh_packet_remaining(struct ssh *ssh)
1862 return sshbuf_len(ssh->state->incoming_packet);
1874 ssh_packet_send_debug(struct ssh *ssh, const char *fmt,...)
1880 if (compat20 && (ssh->compat & SSH_BUG_DEBUG))
1888 if ((r = sshpkt_start(ssh, SSH2_MSG_DEBUG)) != 0 ||
1889 (r = sshpkt_put_u8(ssh, 0)) != 0 || /* always display */
1890 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
1891 (r = sshpkt_put_cstring(ssh, "")) != 0 ||
1892 (r = sshpkt_send(ssh)) != 0)
1895 if ((r = sshpkt_start(ssh, SSH_MSG_DEBUG)) != 0 ||
1896 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
1897 (r = sshpkt_send(ssh)) != 0)
1900 if ((r = ssh_packet_write_wait(ssh)) != 0)
1908 sshpkt_fatal(struct ssh *ssh, const char *tag, int r)
1912 logit("Connection closed by %.200s", ssh_remote_ipaddr(ssh));
1916 "waiting to write", ssh_remote_ipaddr(ssh));
1921 ssh_remote_ipaddr(ssh), ssh_err(r));
1932 ssh_packet_disconnect(struct ssh *ssh, const char *fmt,...)
1958 if ((r = sshpkt_disconnect(ssh, "%s", buf)) != 0)
1959 sshpkt_fatal(ssh, __func__, r);
1961 if ((r = ssh_packet_write_wait(ssh)) != 0)
1962 sshpkt_fatal(ssh, __func__, r);
1965 ssh_packet_close(ssh);
1974 ssh_packet_write_poll(struct ssh *ssh)
1976 struct session_state *state = ssh->state;
2003 ssh_packet_write_wait(struct ssh *ssh)
2008 struct session_state *state = ssh->state;
2014 ssh_packet_write_poll(ssh);
2015 while (ssh_packet_have_data_to_write(ssh)) {
2047 if ((r = ssh_packet_write_poll(ssh)) != 0) {
2059 ssh_packet_have_data_to_write(struct ssh *ssh)
2061 return sshbuf_len(ssh->state->output) != 0;
2067 ssh_packet_not_very_much_data_to_write(struct ssh *ssh)
2069 if (ssh->state->interactive_mode)
2070 return sshbuf_len(ssh->state->output) < 16384;
2072 return sshbuf_len(ssh->state->output) < 128 * 1024;
2076 ssh_packet_set_tos(struct ssh *ssh, int tos)
2079 if (!ssh_packet_connection_is_on_socket(ssh))
2081 switch (ssh_packet_connection_af(ssh)) {
2085 if (setsockopt(ssh->state->connection_in,
2094 if (setsockopt(ssh->state->connection_in,
2107 ssh_packet_set_interactive(struct ssh *ssh, int interactive, int qos_interactive, int qos_bulk)
2109 struct session_state *state = ssh->state;
2119 if (!ssh_packet_connection_is_on_socket(ssh))
2122 ssh_packet_set_tos(ssh, interactive ? qos_interactive :
2129 ssh_packet_is_interactive(struct ssh *ssh)
2131 return ssh->state->interactive_mode;
2135 ssh_packet_set_maxsize(struct ssh *ssh, u_int s)
2137 struct session_state *state = ssh->state;
2155 ssh_packet_inc_alive_timeouts(struct ssh *ssh)
2157 return ++ssh->state->keep_alive_timeouts;
2161 ssh_packet_set_alive_timeouts(struct ssh *ssh, int ka)
2163 ssh->state->keep_alive_timeouts = ka;
2167 ssh_packet_get_maxsize(struct ssh *ssh)
2169 return ssh->state->max_packet_size;
2184 ssh_packet_send_ignore(struct ssh *ssh, int nbytes)
2189 if ((r = sshpkt_start(ssh, compat20 ?
2191 (r = sshpkt_put_u32(ssh, nbytes)) != 0)
2196 if ((r = sshpkt_put_u8(ssh, (u_char)rnd & 0xff)) != 0)
2204 ssh_packet_need_rekeying(struct ssh *ssh)
2206 struct session_state *state = ssh->state;
2208 if (ssh->compat & SSH_BUG_NOREKEY)
2222 ssh_packet_set_rekey_limits(struct ssh *ssh, u_int32_t bytes, time_t seconds)
2226 ssh->state->rekey_limit = bytes;
2227 ssh->state->rekey_interval = seconds;
2231 ssh_packet_get_rekey_timeout(struct ssh *ssh)
2235 seconds = ssh->state->rekey_time + ssh->state->rekey_interval -
2241 ssh_packet_set_server(struct ssh *ssh)
2243 ssh->state->server_side = 1;
2247 ssh_packet_set_authenticated(struct ssh *ssh)
2249 ssh->state->after_authentication = 1;
2253 ssh_packet_get_input(struct ssh *ssh)
2255 return (void *)ssh->state->input;
2259 ssh_packet_get_output(struct ssh *ssh)
2261 return (void *)ssh->state->output;
2270 ssh_packet_backup_state(struct ssh *ssh,
2271 struct ssh *backup_state)
2273 struct ssh *tmp;
2275 close(ssh->state->connection_in);
2276 ssh->state->connection_in = -1;
2277 close(ssh->state->connection_out);
2278 ssh->state->connection_out = -1;
2283 backup_state = ssh;
2284 ssh = tmp;
2292 ssh_packet_restore_state(struct ssh *ssh,
2293 struct ssh *backup_state)
2295 struct ssh *tmp;
2300 backup_state = ssh;
2301 ssh = tmp;
2302 ssh->state->connection_in = backup_state->state->connection_in;
2304 ssh->state->connection_out = backup_state->state->connection_out;
2308 if ((r = sshbuf_putb(ssh->state->input,
2318 ssh_packet_set_postauth(struct ssh *ssh)
2325 ssh->state->after_authentication = 1;
2326 ssh->state->rekeying = 0;
2328 if (ssh->state->newkeys[mode] == NULL)
2330 comp = &ssh->state->newkeys[mode]->comp;
2332 (r = ssh_packet_init_compression(ssh)) != 0)
2362 newkeys_to_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2372 if ((newkey = ssh->state->newkeys[mode]) == NULL)
2377 cc = (mode == MODE_OUT) ? &ssh->state->send_context :
2378 &ssh->state->receive_context;
2410 ssh_packet_get_state(struct ssh *ssh, struct sshbuf *m)
2412 struct session_state *state = ssh->state;
2432 if ((r = kex_to_blob(m, ssh->kex)) != 0 ||
2433 (r = newkeys_to_blob(m, ssh, MODE_OUT)) != 0 ||
2434 (r = newkeys_to_blob(m, ssh, MODE_IN)) != 0 ||
2461 if ((r = ssh_packet_get_compress_state(m, ssh)) != 0 ||
2476 newkeys_from_blob(struct sshbuf *m, struct ssh *ssh, int mode)
2535 ssh->kex->newkeys[mode] = newkey;
2594 ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)
2596 struct session_state *state = ssh->state;
2612 ssh_packet_set_encryption_key(ssh, ssh1key, ssh1keylen,
2621 if ((r = kex_from_blob(m, &ssh->kex)) != 0 ||
2622 (r = newkeys_from_blob(m, ssh, MODE_OUT)) != 0 ||
2623 (r = newkeys_from_blob(m, ssh, MODE_IN)) != 0 ||
2641 if ((r = ssh_set_newkeys(ssh, MODE_IN)) != 0 ||
2642 (r = ssh_set_newkeys(ssh, MODE_OUT)) != 0)
2654 if ((r = ssh_packet_set_compress_state(ssh, m)) != 0 ||
2655 (r = ssh_packet_set_postauth(ssh)) != 0)
2683 sshpkt_put(struct ssh *ssh, const void *v, size_t len)
2685 return sshbuf_put(ssh->state->outgoing_packet, v, len);
2689 sshpkt_putb(struct ssh *ssh, const struct sshbuf *b)
2691 return sshbuf_putb(ssh->state->outgoing_packet, b);
2695 sshpkt_put_u8(struct ssh *ssh, u_char val)
2697 return sshbuf_put_u8(ssh->state->outgoing_packet, val);
2701 sshpkt_put_u32(struct ssh *ssh, u_int32_t val)
2703 return sshbuf_put_u32(ssh->state->outgoing_packet, val);
2707 sshpkt_put_u64(struct ssh *ssh, u_int64_t val)
2709 return sshbuf_put_u64(ssh->state->outgoing_packet, val);
2713 sshpkt_put_string(struct ssh *ssh, const void *v, size_t len)
2715 return sshbuf_put_string(ssh->state->outgoing_packet, v, len);
2719 sshpkt_put_cstring(struct ssh *ssh, const void *v)
2721 return sshbuf_put_cstring(ssh->state->outgoing_packet, v);
2725 sshpkt_put_stringb(struct ssh *ssh, const struct sshbuf *v)
2727 return sshbuf_put_stringb(ssh->state->outgoing_packet, v);
2732 sshpkt_put_ec(struct ssh *ssh, const EC_POINT *v, const EC_GROUP *g)
2734 return sshbuf_put_ec(ssh->state->outgoing_packet, v, g);
2740 sshpkt_put_bignum1(struct ssh *ssh, const BIGNUM *v)
2742 return sshbuf_put_bignum1(ssh->state->outgoing_packet, v);
2748 sshpkt_put_bignum2(struct ssh *ssh, const BIGNUM *v)
2750 return sshbuf_put_bignum2(ssh->state->outgoing_packet, v);
2757 sshpkt_get(struct ssh *ssh, void *valp, size_t len)
2759 return sshbuf_get(ssh->state->incoming_packet, valp, len);
2763 sshpkt_get_u8(struct ssh *ssh, u_char *valp)
2765 return sshbuf_get_u8(ssh->state->incoming_packet, valp);
2769 sshpkt_get_u32(struct ssh *ssh, u_int32_t *valp)
2771 return sshbuf_get_u32(ssh->state->incoming_packet, valp);
2775 sshpkt_get_u64(struct ssh *ssh, u_int64_t *valp)
2777 return sshbuf_get_u64(ssh->state->incoming_packet, valp);
2781 sshpkt_get_string(struct ssh *ssh, u_char **valp, size_t *lenp)
2783 return sshbuf_get_string(ssh->state->incoming_packet, valp, lenp);
2787 sshpkt_get_string_direct(struct ssh *ssh, const u_char **valp, size_t *lenp)
2789 return sshbuf_get_string_direct(ssh->state->incoming_packet, valp, lenp);
2793 sshpkt_get_cstring(struct ssh *ssh, char **valp, size_t *lenp)
2795 return sshbuf_get_cstring(ssh->state->incoming_packet, valp, lenp);
2800 sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g)
2802 return sshbuf_get_ec(ssh->state->incoming_packet, v, g);
2808 sshpkt_get_bignum1(struct ssh *ssh, BIGNUM *v)
2810 return sshbuf_get_bignum1(ssh->state->incoming_packet, v);
2816 sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v)
2818 return sshbuf_get_bignum2(ssh->state->incoming_packet, v);
2823 sshpkt_get_end(struct ssh *ssh)
2825 if (sshbuf_len(ssh->state->incoming_packet) > 0)
2831 sshpkt_ptr(struct ssh *ssh, size_t *lenp)
2834 *lenp = sshbuf_len(ssh->state->incoming_packet);
2835 return sshbuf_ptr(ssh->state->incoming_packet);
2841 sshpkt_start(struct ssh *ssh, u_char type)
2850 sshbuf_reset(ssh->state->outgoing_packet);
2851 return sshbuf_put(ssh->state->outgoing_packet, buf, len);
2857 sshpkt_send(struct ssh *ssh)
2860 return ssh_packet_send2(ssh);
2862 return ssh_packet_send1(ssh);
2866 sshpkt_disconnect(struct ssh *ssh, const char *fmt,...)
2877 if ((r = sshpkt_start(ssh, SSH2_MSG_DISCONNECT)) != 0 ||
2878 (r = sshpkt_put_u32(ssh, SSH2_DISCONNECT_PROTOCOL_ERROR)) != 0 ||
2879 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
2880 (r = sshpkt_put_cstring(ssh, "")) != 0 ||
2881 (r = sshpkt_send(ssh)) != 0)
2884 if ((r = sshpkt_start(ssh, SSH_MSG_DISCONNECT)) != 0 ||
2885 (r = sshpkt_put_cstring(ssh, buf)) != 0 ||
2886 (r = sshpkt_send(ssh)) != 0)
2894 sshpkt_add_padding(struct ssh *ssh, u_char pad)
2896 ssh->state->extra_pad = pad;