Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ssh.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2825 by yutakakn, Sun Jun 26 14:26:24 2005 UTC revision 2826 by yutakakn, Sat Jul 2 07:56:13 2005 UTC
# Line 98  static void start_ssh_heartbeat_thread(P Line 98  static void start_ssh_heartbeat_thread(P
98  /* default window/packet sizes for tcp/x11-fwd-channel */  /* default window/packet sizes for tcp/x11-fwd-channel */
99  #define CHAN_SES_PACKET_DEFAULT (32*1024)  #define CHAN_SES_PACKET_DEFAULT (32*1024)
100  #define CHAN_SES_WINDOW_DEFAULT (2*CHAN_SES_PACKET_DEFAULT) // READAMOUNT @ pkt.cと同期を取ること  #define CHAN_SES_WINDOW_DEFAULT (2*CHAN_SES_PACKET_DEFAULT) // READAMOUNT @ pkt.cと同期を取ること
101    #define CHAN_TCP_PACKET_DEFAULT (32*1024)
102    #define CHAN_TCP_WINDOW_DEFAULT (4*CHAN_TCP_PACKET_DEFAULT)
103    #define CHAN_X11_PACKET_DEFAULT (16*1024)
104    #define CHAN_X11_WINDOW_DEFAULT (4*CHAN_X11_PACKET_DEFAULT)
105    
106  // channel data structure  // channel data structure
107  #define CHANNEL_MAX 100  #define CHANNEL_MAX 100
# Line 153  static Channel_t *ssh2_channel_new(unsig Line 157  static Channel_t *ssh2_channel_new(unsig
157          c->remote_window = 0;          c->remote_window = 0;
158          c->remote_maxpacket = 0;          c->remote_maxpacket = 0;
159          c->type = type;          c->type = type;
160          c->local_num = local_num;          c->local_num = local_num;  // alloc_channel()の返値を保存しておく
161    
162          return (c);          return (c);
163  }  }
# Line 1428  static BOOL handle_channel_open(PTInstVa Line 1432  static BOOL handle_channel_open(PTInstVa
1432                          FWD_open(pvar, get_payload_uint32(pvar, 0),                          FWD_open(pvar, get_payload_uint32(pvar, 0),
1433                                           pvar->ssh_state.payload + 8, local_port,                                           pvar->ssh_state.payload + 8, local_port,
1434                                           pvar->ssh_state.payload + 16 + host_len,                                           pvar->ssh_state.payload + 16 + host_len,
1435                                           originator_len);                                           originator_len,
1436                                             NULL);
1437                  }                  }
1438          } else {          } else {
1439                  if (grab_payload(pvar, 8)                  if (grab_payload(pvar, 8)
# Line 1439  static BOOL handle_channel_open(PTInstVa Line 1444  static BOOL handle_channel_open(PTInstVa
1444    
1445                          pvar->ssh_state.payload[8 + host_len] = 0;                          pvar->ssh_state.payload[8 + host_len] = 0;
1446                          FWD_open(pvar, get_payload_uint32(pvar, 0),                          FWD_open(pvar, get_payload_uint32(pvar, 0),
1447                                           pvar->ssh_state.payload + 8, local_port, NULL, 0);                                           pvar->ssh_state.payload + 8, local_port, NULL, 0,
1448                                             NULL);
1449                  }                  }
1450          }          }
1451    
# Line 2612  void SSH_confirm_channel_open(PTInstVar Line 2618  void SSH_confirm_channel_open(PTInstVar
2618                  finish_send_packet(pvar);                  finish_send_packet(pvar);
2619    
2620          } else {          } else {
2621                    buffer_t *msg;
2622                    unsigned char *outmsg;
2623                    int len;
2624                    Channel_t *c;
2625    
2626                    // port-forwarding(remote to local)のローカル接続への成功をサーバへ返す。(2005.7.2 yutaka)
2627                    c = ssh2_local_channel_lookup(local_channel_num);
2628                    if (c == NULL) {
2629                            // It is sure to be successful as long as it's not a program bug either.
2630                            return;
2631                    }
2632    
2633                    msg = buffer_init();
2634                    if (msg == NULL) {
2635                            // TODO: error check
2636                            return;
2637                    }
2638                    buffer_put_int(msg, c->remote_id);  
2639                    buffer_put_int(msg, c->self_id);  
2640                    buffer_put_int(msg, c->local_window);  
2641                    buffer_put_int(msg, c->local_maxpacket);  
2642    
2643                    len = buffer_len(msg);
2644                    outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, len);
2645                    memcpy(outmsg, buffer_ptr(msg), len);
2646                    finish_send_packet(pvar);
2647                    buffer_free(msg);
2648    
2649          }          }
2650  }  }
# Line 2802  void SSH_open_channel(PTInstVar pvar, ui Line 2835  void SSH_open_channel(PTInstVar pvar, ui
2835                                  return;                                  return;
2836                          }                          }
2837    
2838                          c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_PORTFWD, local_channel_num);                          c = ssh2_channel_new(CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, TYPE_PORTFWD, local_channel_num);
2839    
2840                          msg = buffer_init();                          msg = buffer_init();
2841                          if (msg == NULL) {                          if (msg == NULL) {
# Line 5765  static BOOL handle_SSH2_channel_eof(PTIn Line 5798  static BOOL handle_SSH2_channel_eof(PTIn
5798          return TRUE;          return TRUE;
5799  }  }
5800    
   
5801  static BOOL handle_SSH2_channel_open(PTInstVar pvar)  static BOOL handle_SSH2_channel_open(PTInstVar pvar)
5802  {        {      
5803          int len;          int len;
# Line 5776  static BOOL handle_SSH2_channel_open(PTI Line 5808  static BOOL handle_SSH2_channel_open(PTI
5808          int remote_id;          int remote_id;
5809          int remote_window;          int remote_window;
5810          int remote_maxpacket;          int remote_maxpacket;
5811            int chan_num = -1;
5812    
5813          // 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード          // 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード
5814          data = pvar->ssh_state.payload;          data = pvar->ssh_state.payload;
# Line 5807  static BOOL handle_SSH2_channel_open(PTI Line 5840  static BOOL handle_SSH2_channel_open(PTI
5840                  data += 4;                  data += 4;
5841    
5842                  // searching request entry by listen_port & create_local_channel                  // searching request entry by listen_port & create_local_channel
5843                  FWD_open(pvar, remote_id, listen_addr, listen_port, orig_addr, orig_port);                  FWD_open(pvar, remote_id, listen_addr, listen_port, orig_addr, orig_port,
5844                            &chan_num);
5845    
5846                  free(listen_addr);                  free(listen_addr);
5847                  free(orig_addr);                  free(orig_addr);
5848    
5849                    // channelをアロケートし、必要な情報(remote window size)をここで取っておく。
5850                    c = ssh2_channel_new(CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, TYPE_PORTFWD, chan_num);
5851                    c->remote_id = remote_id;
5852                    c->remote_window = remote_window;
5853                    c->remote_maxpacket = remote_maxpacket;
5854    
5855          } else if (strcmp(ctype, "x11") == 0) { // port-forwarding(X11)          } else if (strcmp(ctype, "x11") == 0) { // port-forwarding(X11)
5856    
5857          } else {          } else {
# Line 6021  static BOOL handle_SSH2_window_adjust(PT Line 6061  static BOOL handle_SSH2_window_adjust(PT
6061    
6062  /*  /*
6063   * $Log: not supported by cvs2svn $   * $Log: not supported by cvs2svn $
6064     * Revision 1.29  2005/06/26 14:26:24  yutakakn
6065     * update: SSH2 port-forwarding (remote to local)
6066     *
6067   * Revision 1.28  2005/06/21 13:28:26  yutakakn   * Revision 1.28  2005/06/21 13:28:26  yutakakn
6068   * SSH2鍵交換中の(鍵交換以外の)SSH2メッセージ送信を破棄するようにした。   * SSH2鍵交換中の(鍵交換以外の)SSH2メッセージ送信を破棄するようにした。
6069   *   *

Legend:
Removed from v.2825  
changed lines
  Added in v.2826

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26