s = sk_new(addr, port, 0, 1, nodelay, &fn_table_ptr);
s = new_connection(addr, *realhost, port, 0, 1, nodelay, &fn_table_ptr);
static char *telnet_init(char *host, int port, char **realhost, int nodelay){    static struct plug_function_table fn_table = {	telnet_closing,	telnet_receive,	telnet_sent    }, *fn_table_ptr = &fn_table;    SockAddr addr;    char *err;    /*     * Try to find host.     */    {	char buf[200];	sprintf(buf, "Looking up host \"%.170s\"", host);	logevent(buf);    }    addr = sk_namelookup(host, realhost);    if ((err = sk_addr_error(addr)))	return err;    if (port < 0)	port = 23;		       /* default telnet port */    /*     * Open socket.     */    {	char buf[200], addrbuf[100];	sk_getaddr(addr, addrbuf, 100);	sprintf(buf, "Connecting to %.100s port %d", addrbuf, port);	logevent(buf);    }    s = sk_new(addr, port, 0, 1, nodelay, &fn_table_ptr);    if ((err = sk_socket_error(s)))	return err;    sk_addr_free(addr);    /*     * Initialise option states.     */    if (cfg.passive_telnet) {	struct Opt **o;	for (o = opts; *o; o++)	    if ((*o)->state == REQUESTED)		(*o)->state = INACTIVE;    } else {	struct Opt **o;	for (o = opts; *o; o++)	    if ((*o)->state == REQUESTED)		send_opt((*o)->send, (*o)->option);	activated = TRUE;    }    /*     * Set up SYNCH state.     */    in_synch = FALSE;    return NULL;}