#ifndef	_TELNET_H
#define	_TELNET_H

#ifndef _SESSION_H
#include "session.h"
#endif

#define	LINESIZE	256	/* Length of local editing buffer */

/* Telnet command characters */
#define	IAC		255	/* Interpret as command */
#define	WILL		251
#define	WONT		252
#define	DO		253
#define	DONT		254
#define CLEARSCREEN     247
#define CLEARSPLIT      249
#define COMPRESSED      248
#define	SB		250
#define	SE		240

#define TN_LINEMODE 34

#define	TS_IS		0
#define	TS_SEND		1

/* Telnet options */
#define	TN_TRANSMIT_BINARY	0
#define	TN_ECHO			1
#define	TN_SUPPRESS_GA		3
#define	TN_STATUS		5
#define	TN_TIMING_MARK		6
#define	NOPTIONS		6

/* Telnet protocol control block */
struct telnet {
	char local[NOPTIONS];	/* Local option settings */
	char remote[NOPTIONS];	/* Remote option settings */
	struct session *session;	/* Pointer to session structure */
	char eolmode;		/* Control translation of enter key */
};
#define	NULLTN	(struct telnet *)0

extern int Refuse_echo;
extern int Tn_cr_mode;

/* In telnet.c: */
int tel_connect __ARGS((struct session *sp,char *fsocket,int len));
void tel_output __ARGS((int unused,void *p1,void *p2));
void tnrecv __ARGS((struct telnet *tn));
void doopt __ARGS((struct telnet *tn,int opt));
void dontopt __ARGS((struct telnet *tn,int opt));
void willopt __ARGS((struct telnet *tn,int opt));
void wontopt __ARGS((struct telnet *tn,int opt));
void answer __ARGS((struct telnet *tn,int r1,int r2));

/* In ttylink.c: */
void ttylhandle __ARGS((int s,void *unused,void *p));

#endif	/* _TELNET_H */

