int listen_tcpfwd(struct TCPListener* tcpinfo) { char portstring[NI_MAXSERV]; int socks[DROPBEAR_MAX_SOCKS]; struct Listener *listener = NULL; int nsocks; char* errstring = NULL; TRACE(("enter listen_tcpfwd")) /* first we try to bind, so don't need to do so much cleanup on failure */ snprintf(portstring, sizeof(portstring), "%u", tcpinfo->listenport); nsocks = dropbear_listen(AF_UNSPEC, tcpinfo->listenaddr, portstring, socks, DROPBEAR_MAX_SOCKS, &errstring, &ses.maxfd); if (nsocks < 0) { dropbear_log(LOG_INFO, "TCP forward failed: %s", errstring); m_free(errstring); TRACE(("leave listen_tcpfwd: dropbear_listen failed")) return DROPBEAR_FAILURE; }
int listen_tcpfwd(struct TCPListener* tcpinfo) { char portstring[NI_MAXSERV]; int socks[DROPBEAR_MAX_SOCKS]; struct Listener *listener = NULL; int nsocks; char* errstring = NULL; TRACE(("enter listen_tcpfwd")) /* first we try to bind, so don't need to do so much cleanup on failure */ snprintf(portstring, sizeof(portstring), "%d", tcpinfo->listenport); /* XXX Note: we're just listening on localhost, no matter what they tell * us. If someone wants to make it listen otherways, then change * the "" argument. but that requires UI changes too */ nsocks = dropbear_listen("", portstring, socks, DROPBEAR_MAX_SOCKS, &errstring, &ses.maxfd); if (nsocks < 0) { dropbear_log(LOG_INFO, "TCP forward failed: %s", errstring); m_free(errstring); TRACE(("leave listen_tcpfwd: dropbear_listen failed")) return DROPBEAR_FAILURE; }