* fix -L forwarding on the client, broke last rev

--HG--
extra : convert_revision : 826db75f8001f7da7b0b8c91dcf66a44bf107b49
This commit is contained in:
Matt Johnston 2005-12-06 16:51:55 +00:00
parent a673d60963
commit 6c56271e8c
4 changed files with 23 additions and 8 deletions

View File

@ -107,6 +107,7 @@ static int cli_localtcp(unsigned int listenport, const char* remoteaddr,
tcpinfo->listenport = listenport;
tcpinfo->chantype = &cli_chan_tcplocal;
tcpinfo->tcp_type = direct;
ret = listen_tcpfwd(tcpinfo);

View File

@ -208,6 +208,7 @@ static int svr_remotetcpreq() {
tcpinfo->listenaddr = bindaddr;
tcpinfo->listenport = port;
tcpinfo->chantype = &svr_chan_tcpremote;
tcpinfo->tcp_type = forwarded;
ret = listen_tcpfwd(tcpinfo);

View File

@ -65,15 +65,28 @@ static void tcp_acceptor(struct Listener *listener, int sock) {
}
if (send_msg_channel_open_init(fd, tcpinfo->chantype) == DROPBEAR_SUCCESS) {
unsigned char* addr = NULL;
unsigned int port = 0;
// address that was connected
buf_putstring(ses.writepayload, tcpinfo->listenaddr,
strlen(tcpinfo->listenaddr));
// port that was connected
buf_putint(ses.writepayload, tcpinfo->listenport);
// originator ip
if (tcpinfo->tcp_type == direct) {
/* "direct-tcpip" */
/* host to connect, port to connect */
addr = tcpinfo->sendaddr;
port = tcpinfo->sendport;
} else {
dropbear_assert(tcpinfo->tcp_type == forwarded);
/* "forwarded-tcpip" */
/* address that was connected, port that was connected */
addr = tcpinfo->listenaddr;
port = tcpinfo->listenport;
}
buf_putstring(ses.writepayload, addr, strlen(addr));
buf_putint(ses.writepayload, port);
/* originator ip */
buf_putstring(ses.writepayload, ipstring, strlen(ipstring));
// originator port
/* originator port */
buf_putint(ses.writepayload, atol(portstring));
encrypt_packet();

View File

@ -40,7 +40,7 @@ struct TCPListener {
unsigned int listenport;
const struct ChanType *chantype;
enum {direct, forwarded} tcp_type;
};
/* A link in a list of forwards */