📄 ckctel.h
字号:
/* Telnet State structures and definitions */struct _telopt_state { unsigned char def_server_me_mode; /* Default Negotiation Mode */ unsigned char def_server_u_mode; /* Default Negotiation Mode */ unsigned char def_client_me_mode; /* Default Negotiation Mode */ unsigned char def_client_u_mode; /* Default Negotiation Mode */ unsigned char me_mode; /* Telnet Negotiation Mode */ unsigned char u_mode; /* Telnet Negotiation Mode */ unsigned char me; /* Am I ? */ unsigned char u; /* Are you? */ unsigned char unanswered_will; /* Sent Will, Waiting for DO/DONT */ unsigned char unanswered_do; /* Send DO, Waiting for WILL/WONT */ unsigned char unanswered_wont; /* Sent WONT, Waiting for DONT */ unsigned char unanswered_dont; /* Sent DONT, Waiting for WONT */ unsigned char unanswered_sb; /* Sent SB, Waiting for SB (server) */ union {#ifdef IKS_OPTION struct _telopt_kermit { /* Kermit Option States */ unsigned char me_start; /* I have a Server active */ unsigned char me_req_start; /* Sent Req-Start, Waiting for response */ unsigned char me_req_stop; /* Sent Req-Stop, Waiting for response */ unsigned char u_start; /* You have a Server active */ unsigned char sop; /* Have we received the SOP char? */ } kermit;#endif /* IKS_OPTION */#ifdef CK_ENCRYPTION struct _telopt_encrypt { /* Encryption Option States */ unsigned char need_to_send; unsigned char stop; /* Is encryption stopped? */ } encrypt;#endif /* CK_ENCRYPTION */#ifdef CK_NAWS struct _telopt_naws { /* NAWS Option Information */ unsigned char need_to_send; int x; /* Last Width */ int y; /* Last Height */ } naws;#endif /* CK_NAWS */#ifdef CK_SSL struct _telopt_start_tls { /* Start TLS Option */ unsigned char u_follows; /* u ready for TLS negotiation */ unsigned char me_follows; /* me ready for TLS negotiation */ unsigned char auth_request; /* Rcvd WILL AUTH before WONT START_TLS */ } start_tls;#endif /* CK_SSL */ struct _telopt_term { /* Terminal Type */ unsigned char need_to_send; unsigned char type[41]; /* Last terminal type */ } term;#ifdef CK_ENVIRONMENT struct _telopt_new_env { unsigned char need_to_send; unsigned char * str; int len; } env;#ifdef CK_XDISPLOC struct _telopt_xdisp { unsigned char need_to_send; } xdisp;#endif /* CK_XDISPLOC */#endif /* CK_ENVIRONMENT */#ifdef CK_SNDLOC struct _telopt_sndloc { unsigned char need_to_send; } sndloc;#endif /* CK_SNDLOC */#ifdef CK_FORWARD_X struct _telopt_fwd_x { unsigned char need_to_send; int listen_socket; struct _channel { int fd; int id; unsigned char need_to_send_xauth; unsigned char suspend; } channel[MAXFWDX];#ifdef NT int thread_started;#endif /* NT */ } forward_x;#endif /* CK_FORWARD_X */#ifdef TN_COMPORT struct _telopt_comport { unsigned char need_to_send; unsigned char wait_for_sb; unsigned char wait_for_ms; } comport;#endif /* TN_COMPORT */ /* additional options such as New Environment or Send Location */ } sb;};typedef struct _telopt_state telopt_state, *p_telopt_state;/* telopt_states[] is the array of structs which the state of each telnet *//* option is stored. We allocate one more than we need in case we are *//* sent telnet options that we do not recognize. If by some chance the *//* TELOPT_OK() check is skipped, TELOPT_INDEX() will force the option to *//* use the extra cell. */#ifdef TELOPT_STATEStelopt_state telopt_states[NTELOPTS+1];#else /* TELOPT_STATES */extern telopt_state telopt_states[];#endif /* TELOPT_STATES */#define TELOPT_ME(x) (telopt_states[TELOPT_INDEX(x)].me)#define TELOPT_U(x) (telopt_states[TELOPT_INDEX(x)].u)#define TELOPT_ME_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].me_mode)#define TELOPT_U_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].u_mode)#define TELOPT_UNANSWERED_WILL(x) \ (telopt_states[TELOPT_INDEX(x)].unanswered_will)#define TELOPT_UNANSWERED_DO(x) \ (telopt_states[TELOPT_INDEX(x)].unanswered_do)#define TELOPT_UNANSWERED_WONT(x) \ (telopt_states[TELOPT_INDEX(x)].unanswered_wont)#define TELOPT_UNANSWERED_DONT(x) \ (telopt_states[TELOPT_INDEX(x)].unanswered_dont)#define TELOPT_UNANSWERED_SB(x) \ (telopt_states[TELOPT_INDEX(x)].unanswered_sb)#define TELOPT_SB(x) \ (telopt_states[TELOPT_INDEX(x)].sb)#define TELOPT_DEF_S_ME_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].def_server_me_mode)#define TELOPT_DEF_S_U_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].def_server_u_mode)#define TELOPT_DEF_C_ME_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].def_client_me_mode)#define TELOPT_DEF_C_U_MODE(x) \ (telopt_states[TELOPT_INDEX(x)].def_client_u_mode)#ifdef TELOPT_MODESchar * telopt_modes[4] = { "REFUSED", "ACCEPTED", "REQUESTED", "REQUIRED"};#else /* TELOPT_MODES */extern char * telopt_modes[];#endif /* TELOPT_MODES */#ifdef TELOPT_MACRO#define TELOPT_MODE_OK(x) ((unsigned int)(x) <= TN_NG_MU)#define TELOPT_MODE(x) (TELOPT_MODE_OK(x)?telopt_modes[(x)-TN_NG_RF]:"UNKNOWN")#else /* TELOPT_MACRO */_PROTOTYP(int telopt_mode_ok,(int));_PROTOTYP(CHAR * telopt_mode,(int));#define TELOPT_MODE_OK(x) telopt_mode_ok(x)#define TELOPT_MODE(x) telopt_mode(x)#endif /* TELOPT_MACRO *//* Sub-option qualifiers */#define TELQUAL_IS 0 /* option is... */#define TELQUAL_SEND 1 /* send option */#define TELQUAL_INFO 2 /* ENVIRON: informational version of IS */#define TELQUAL_REPLY 2 /* AUTHENTICATION: client version of IS */#define TELQUAL_NAME 3 /* AUTHENTICATION: client version of IS */#define TEL_ENV_VAR 0#define TEL_ENV_VALUE 1#define TEL_ENV_ESC 2#define TEL_ENV_USERVAR 3#define LFLOW_OFF 0 /* Disable remote flow control */#define LFLOW_ON 1 /* Enable remote flow control */#define LFLOW_RESTART_ANY 2 /* Restart output on any char */#define LFLOW_RESTART_XON 3 /* Restart output only on XON *//* * LINEMODE suboptions */#define LM_MODE 1#define LM_FORWARDMASK 2#define LM_SLC 3#define MODE_EDIT 0x01#define MODE_TRAPSIG 0x02#define MODE_ACK 0x04#define MODE_SOFT_TAB 0x08#define MODE_LIT_ECHO 0x10#define MODE_MASK 0x1f/* Not part of protocol, but needed to simplify things... */#define MODE_FLOW 0x0100#define MODE_ECHO 0x0200#define MODE_INBIN 0x0400#define MODE_OUTBIN 0x0800#define MODE_FORCE 0x1000#define SLC_SYNCH 1#define SLC_BRK 2#define SLC_IP 3#define SLC_AO 4#define SLC_AYT 5#define SLC_EOR 6#define SLC_ABORT 7#define SLC_EOF 8#define SLC_SUSP 9#define SLC_EC 10#define SLC_EL 11#define SLC_EW 12#define SLC_RP 13#define SLC_LNEXT 14#define SLC_XON 15#define SLC_XOFF 16#define SLC_FORW1 17#define SLC_FORW2 18#define SLC_MCL 19#define SLC_MCR 20#define SLC_MCWL 21#define SLC_MCWR 22#define SLC_MCBOL 23#define SLC_MCEOL 24#define SLC_INSRT 25#define SLC_OVER 26#define SLC_ECR 27#define SLC_EWR 28#define SLC_EBOL 29#define SLC_EEOL 30#define NSLC 30/* * For backwards compatability, we define SLC_NAMES to be the * list of names if SLC_NAMES is not defined. */#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ "LNEXT", "XON", "XOFF", "FORW1", "FORW2", \ "MCL", "MCR", "MCWL", "MCWR", "MCBOL", "MCEOL", \ "INSRT", "OVER", "ECR", "EWR", "EBOL", "EEOL", 0#ifdef SLC_NAMESchar *slc_names[] = { SLC_NAMELIST};#elseextern char *slc_names[];#define SLC_NAMES SLC_NAMELIST#endif#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC)#define SLC_NAME(x) (SLC_NAME_OK(x)?slc_names[x]:"UNKNOWN")#define SLC_NOSUPPORT 0#define SLC_CANTCHANGE 1#define SLC_VARIABLE 2#define SLC_DEFAULT 3#define SLC_LEVELBITS 0x03#define SLC_FUNC 0#define SLC_FLAGS 1#define SLC_VALUE 2#define SLC_ACK 0x80#define SLC_FLUSHIN 0x40#define SLC_FLUSHOUT 0x20#define OLD_ENV_VAR 1#define OLD_ENV_VALUE 0#define NEW_ENV_VAR 0#define NEW_ENV_VALUE 1#define ENV_ESC 2#define ENV_USERVAR 3#define FWDX_SCREEN 0#define FWDX_OPEN 1#define FWDX_CLOSE 2#define FWDX_DATA 3#define FWDX_OPTIONS 4#define FWDX_OPT_DATA 5#define FWDX_XOFF 6#define FWDX_XON 7#define FWDX_OPT_NONE 0#define FWDX_OPT_XAUTH 1/* * AUTHENTICATION suboptions *//* * Who is authenticating who ... */#define AUTH_CLIENT_TO_SERVER 0 /* Client authenticating server */#define AUTH_SERVER_TO_CLIENT 1 /* Server authenticating client */#define AUTH_WHO_MASK 1/* * amount of authentication done */#define AUTH_HOW_ONE_WAY 0#define AUTH_HOW_MUTUAL 2#define AUTH_HOW_MASK 2/* * should we be encrypting? */#define AUTH_ENCRYPT_OFF 0#define AUTH_ENCRYPT_USING_TELOPT 4#define AUTH_ENCRYPT_AFTER_EXCHANGE 16#define AUTH_ENCRYPT_START_TLS 20#define AUTH_ENCRYPT_MASK 20/* * will we be forwarding? * if we want to activate the use of this flag then * #define USE_INI_CRED_FWD */#define INI_CRED_FWD_OFF 0#define INI_CRED_FWD_ON 8#define INI_CRED_FWD_MASK 8#define USE_INI_CRED_FWD#define AUTHTYPE_NULL 0#define AUTHTYPE_KERBEROS_V4 1#define AUTHTYPE_KERBEROS_V5 2#define AUTHTYPE_SPX 3#define AUTHTYPE_MINK 4#define AUTHTYPE_SRP 5#define AUTHTYPE_RSA 6#define AUTHTYPE_SSL 7#define AUTHTYPE_LOKI 10#define AUTHTYPE_SSA 11#define AUTHTYPE_KEA_SJ 12#define AUTHTYPE_KEA_INTEG 13#define AUTHTYPE_DSS 14#define AUTHTYPE_NTLM 15#define AUTHTYPE_GSSAPI_KRB5 16 /* Not allocated by IANA */#ifdef AUTHTYPE_CNT#undef AUTHTYPE_CNT#endif /* AUTHTYPE_CNT */#define AUTHTYPE_CNT 17/* * AUTHTYPEs Last updated 21 March 1999 * from http://www.isi.edu/in-notes/iana/assignments/telnet-options */#define AUTHTYPE_AUTO 99#ifdef AUTH_NAMESchar *authtype_names[] = { "NULL", /* RFC 2941 */ "KERBEROS_V4", /* RFC 2941 / 1411 */ "KERBEROS_V5", /* RFC 2941 */ "SPX", /* RFC 2941 (not Internet Standard) */ "MINK", /* RFC 2941 (not Internet Standard) */ "SRP", /* RFC 2944 */ "RSA", /* RFC 2941 (not Internet Standard) */ "SSL", /* RFC 2941 (not Internet Standard) */ "IANA_8", /* not assigned by IANA */ "IANA_9", /* not assigned by IANA */ "LOKI", /* RFC 2941 (not Internet Standard) */ "SSA", /* Schoch */ "KEA_SJ", /* RFC 2951 */ "KEA_SJ_INTEG", /* RFC 2951 */ "DSS", /* RFC 2943 */ "NTLM", /* Kahn <louisk@microsoft.com> */ "GSSAPI-KRB5", /* experimental - altman */ 0};char * authmode_names[] = { "CLIENT_TO_SERVER|ONE_WAY", "SERVER_TO_CLIENT|ONE_WAY", "CLIENT_TO_SERVER|MUTUAL", "SERVER_TO_CLIENT|MUTUAL", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_USING_TELOPT", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_USING_TELOPT", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_USING_TELOPT", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_USING_TELOPT", "CLIENT_TO_SERVER|ONE_WAY|CRED_FWD", "SERVER_TO_CLIENT|ONE_WAY|CRED_FWD", "CLIENT_TO_SERVER|MUTUAL|CRED_FWD", "SERVER_TO_CLIENT|MUTUAL|CRED_FWD", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_USING_TELOPT|CRED_FWD", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_USING_TELOPT|CRED_FWD", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_USING_TELOPT|CRED_FWD", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_USING_TELOPT|CRED_FWD", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_AFTER_EXCHANGE", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_AFTER_EXCHANGE", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_AFTER_EXCHANGE", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_AFTER_EXCHANGE", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_START_TLS", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_START_TLS", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_START_TLS", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_START_TLS", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_AFTER_EXCHANGE|CRED_FWD", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_AFTER_EXCHANGE|CRED_FWD", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_AFTER_EXCHANGE|CRED_FWD", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_AFTER_EXCHANGE|CRED_FWD", "CLIENT_TO_SERVER|ONE_WAY|ENCRYPT_START_TLS|CRED_FWD", "SERVER_TO_CLIENT|ONE_WAY|ENCRYPT_START_TLS|CRED_FWD", "CLIENT_TO_SERVER|MUTUAL|ENCRYPT_START_TLS|CRED_FWD", "SERVER_TO_CLIENT|MUTUAL|ENCRYPT_START_TLS|CRED_FWD", 0};#elseextern char *authtype_names[];extern char *authmode_names[];#endif#define AUTHMODE_CNT 32#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT)#define AUTHTYPE_NAME(x) (AUTHTYPE_NAME_OK(x)?authtype_names[x]:"UNKNOWN")#define AUTHMODE_NAME_OK(x) ((unsigned int)(x) < AUTHMODE_CNT)#define AUTHMODE_NAME(x) (AUTHMODE_NAME_OK(x)?authmode_names[x]:"UNKNOWN")/* Kerberos Authentication Message Identifiers */#define KRB_AUTH 0 /* Authentication data follows */#define KRB_REJECT 1 /* Rejected (reason might follow) */#define KRB_ACCEPT 2 /* Accepted */#define KRB4_CHALLENGE 3#define KRB4_RESPONSE 4#define KRB5_RESPONSE 3 /* Response for mutual auth. */#define KRB5_FORWARD 4 /* Forwarded credentials follow */#define KRB5_FORWARD_ACCEPT 5 /* Forwarded credentials accepted */#define KRB5_FORWARD_REJECT 6 /* Forwarded credentials rejected */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -