35 Commits

Author SHA1 Message Date
Kim Woelders 9ce6164d20 Bump version to 0.10 2018-09-12 13:13:09 +02:00
Kim Woelders cc95ed0ad2 Trivial cleanups 2018-09-12 12:14:47 +02:00
Kim Woelders 3231247534 Documentation stuff
- README:  Add notes on configure for cross-build
- AUTHORS: Added
- COPYING: Added (GPLv2)
2018-09-12 12:05:48 +02:00
Frank Rolsted Jensen c4c25d7dda version 0.9.005 2018-09-11 10:21:35 +02:00
Frank Rolsted Jensen b2747cf886 typo in README file 2018-09-11 10:17:36 +02:00
Frank Rolsted Jensen c5ca50b654 improved handling of modem/line status 2018-09-06 09:07:35 +02:00
Frank Rolsted Jensen 96329fc290 fix wrong decoding of the IAC escape char 2018-09-06 09:06:02 +02:00
Frank Rolsted Jensen 568f5ca733 version 0.9.004 2018-07-25 09:05:21 +02:00
Frank Rolsted Jensen 6bfdd85cfb fix compiler warnings(errors) 2018-07-25 09:03:42 +02:00
Frank Rolsted Jensen 7f4d2f3a51 support for line disciplines (TTY, PPP)
ttynvt now uses pseudoterminal (pty) to be able to get use of
the tty line disciplines.
Currently only the line discipline: TTY and PPP are supported.
2018-07-24 13:57:05 +02:00
Kim Woelders 3cae838cf0 Use kernel termios struct (?!?) 2018-07-18 11:43:44 +02:00
Kim Woelders 16825bd70e Add some more modem line control ioctl debug 2018-07-17 15:55:27 +02:00
Kim Woelders 5520722723 Add TIOCGETD/TIOCSETD in ioctl name decoder 2018-07-17 15:47:50 +02:00
Kim Woelders a68edc5e57 Add exclusive mode ioctls 2018-07-17 15:42:56 +02:00
Kim Woelders 2c3441dda5 Refactor ioctl input/output buffer size handling 2018-07-17 15:37:11 +02:00
Kim Woelders 45e73de4b9 Debug: Show ioctl names 2018-07-17 14:34:54 +02:00
Kim Woelders 778242986f Debug tweaks
- Add gcc printf format check to _log()
- Show thread ids
- Enable setting debug level
2018-07-17 14:08:01 +02:00
Kim Woelders 137418ad1e When running in daemon mode, delay parent exit until device is created
Doing this is somewhat elaborate because cuse_lowlevel_main() when
daemonizing, the parent (the calling thread) calls _exit(0) instead of
returning.
2018-07-17 13:53:23 +02:00
Kim Woelders 9057376656 Fix -D option, add DBG() for debug 2018-07-05 09:26:19 +02:00
Kim Woelders cbbb0cd225 Tweak options
- Change -s to -S to avoid clash with fuses singlethread option
  (mostly for testing).
- Merge port option with server option (server = host:port)
  (simpler).
2018-07-05 09:26:12 +02:00
Kim Woelders 2fb5ad2599 Drop ttynvt prefix from "local" functions
Only keep it on ones that are direct cuse_lowlevel_ops.

Makes it easier to understand things, IMO.
2018-07-05 08:38:36 +02:00
Kim Woelders 4988368662 Cosmetics of various sorts
Also in srv_connect() (renamed from ttynvt_connect()), close newly
crated socket in a couple of error paths.
2018-07-05 08:38:36 +02:00
Kim Woelders f0697e83f3 v0.9.003 2018-07-02 13:53:52 +02:00
Kim Woelders 0f879c8b61 Fix zero size reads
In certain cases we may get zero size reads (e.g. if the server sends an
rfc2217 notification without any other data).
In this situation we must not propagate the zero size read to user space
as it may be interpreted as end of input.

I haven't found a way to tell fuse that it should just ignore this read
but passing EINTR seems to work.
2018-07-02 12:40:27 +02:00
Kim Woelders 5ca23ce107 Correct write size
ttynvt_write() must on succesful writes return the number of bytes
written.

telnet_tx() always returns 0 (implicitly assuming srv_write() always
succeeds).
2018-07-02 12:39:56 +02:00
Kim Woelders b3f6d61edf Use syslog instead of logfile 2018-06-28 13:41:57 +02:00
Kim Woelders 7a424bc10d Make ttynvt_param global struct and avoid secondary variables 2018-06-28 13:38:27 +02:00
Kim Woelders 8956f3f851 Cleanups
- Consequently use "unsigned int", not "unsigned"
- Indent
- Sort headers
2018-06-28 13:37:25 +02:00
Kim Woelders ac76071e0e Autotoolify 2018-06-28 11:58:03 +02:00
Frank Rolsted Jensen 6337ac09eb support for blocking devices.
- and better handling of broken network connections.
2018-06-21 16:20:28 +02:00
Frank Rolsted Jensen fd4313745f logging connection error messages 2018-06-20 10:10:42 +02:00
Frank Rolsted Jensen a7d760d719 compiler warnings/errors fixed 2018-06-20 08:49:16 +02:00
Frank Rolsted Jensen 9ca94921c8 Description changed (minor) 2018-06-19 16:11:28 +02:00
Frank Rolsted Jensen cf678db1fd version information added to log file 2018-06-19 16:05:45 +02:00
Frank Rolsted Jensen 6556a2ec50 initial 2018-06-19 15:38:46 +02:00
13 changed files with 345 additions and 689 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ Makefile
# build # build
*.o *.o
/src/ttynvt /ttynvt
/ttynvt-*.tar.gz /ttynvt-*.tar.gz
/ttynvt-*.tar.xz /ttynvt-*.tar.xz
Vendored
-6
View File
@@ -1,6 +0,0 @@
-kr -i4 --no-tabs --line-length79 -di16
--braces-after-if-line --brace-indent0 --dont-cuddle-else --cuddle-do-while
--blank-lines-after-declarations --blank-lines-after-procedures
--break-after-boolean-operator
--no-space-after-casts
--else-endif-column0
+15 -2
View File
@@ -1,7 +1,20 @@
# Build ttynvt
#
MAINTAINERCLEANFILES = \ MAINTAINERCLEANFILES = \
aclocal.m4 autom4te.cache compile config.h.in config.h.in~ configure \ aclocal.m4 autom4te.cache compile config.h.in config.h.in~ configure \
depcomp install-sh missing \ depcomp install-sh missing \
Makefile.in */Makefile.in Makefile.in
SUBDIRS = src CFLAGS_OPT = -O3
CFLAGS_WARN = -Wall -Wextra -Werror -Wno-unused-parameter
bin_PROGRAMS = ttynvt
ttynvt_SOURCES = \
ttynvt.c \
telnet_basic.c telnet_rfc2217.c telnet.h telnet_param.h
ttynvt_CPPFLAGS = -I$(top_builddir) $(FUSE_CFLAGS) $(CFLAGS_OPT) $(CFLAGS_WARN)
ttynvt_LDADD = $(FUSE_LIBS)
+1 -2
View File
@@ -1,4 +1,4 @@
m4_define([pkg_version], [0.15]) m4_define([pkg_version], [0.10])
#m4_define([pkg_revision], [005]) #m4_define([pkg_revision], [005])
m4_define([pkg_version], m4_ifdef([pkg_revision], [pkg_version.pkg_revision], [pkg_version])) m4_define([pkg_version], m4_ifdef([pkg_revision], [pkg_version.pkg_revision], [pkg_version]))
@@ -32,7 +32,6 @@ PKG_CHECK_MODULES(FUSE, fuse)
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
src/Makefile
]) ])
AC_OUTPUT AC_OUTPUT
-12
View File
@@ -1,12 +0,0 @@
CFLAGS_WARN = -Wall -Wextra -Werror -Wno-unused-parameter
bin_PROGRAMS = ttynvt
ttynvt_SOURCES = \
ttynvt.c nvt_log.c nvt_log.h \
telnet_basic.c telnet_rfc2217.c telnet.h telnet_param.h
ttynvt_CPPFLAGS = -I$(top_builddir) $(FUSE_CFLAGS) $(CFLAGS_WARN)
ttynvt_LDADD = $(FUSE_LIBS)
-84
View File
@@ -1,84 +0,0 @@
/*
* Logging functions
*/
#include <stdarg.h>
#include <stdio.h>
#include <syslog.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include "nvt_log.h"
#include <sys/syscall.h>
#define gettid() (pid_t)syscall(__NR_gettid)
char log_level = 0;
char log_stdout = 0;
static const char *_hms_txt(char *buf, unsigned int len)
{
struct timeval tv;
unsigned int sod, hh, mm, ss;
gettimeofday(&tv, NULL);
sod = tv.tv_sec % (24 * 3600);
hh = sod / 3600;
mm = (sod - hh * 3600) / 60;
ss = sod - hh * 3600 - mm * 60;
snprintf(buf, len, "%02d:%02d:%02d.%06d",
hh, mm, ss, (unsigned int)tv.tv_usec);
return buf;
}
void nvt_log(int prio, const char *fmt, ...)
{
va_list arg;
char buf[256], buft[64];
const char *eol;
int len;
va_start(arg, fmt);
len = vsnprintf(buf, sizeof(buf), fmt, arg);
if (log_stdout)
{
eol = (len > 0 && buf[len - 1] != '\n') ? "\n" : "";
printf("%s: [%d] %d: %s%s",
_hms_txt(buft, sizeof(buft)), gettid(), prio, buf, eol);
}
else
{
syslog(prio, "[%d] %s", gettid(), buf);
}
va_end(arg);
}
#define BPL 16 /* Bytes per line */
void nvt_log_buf(int prio, const char *txt, const void *ptr_, unsigned int len)
{
unsigned int ix, i, imax;
int l, n;
char buf[128];
const unsigned char *ptr = ptr_;
for (ix = 0; ix < len || (len == 0 && ix == 0); ix += BPL)
{
n = snprintf(buf, sizeof(buf), "%s: %04x:", txt, ix);
if (n <= 0)
return; /* Just playing it safe */
imax = (len - ix < BPL) ? len - ix : BPL;
for (i = 0; i < imax; i++)
{
l = snprintf(buf + n, sizeof(buf) - n, " %02x", *ptr++);
if (l <= 0)
return; /* Just playing it safe */
n += l;
}
nvt_log(prio, "%s\n", buf);
}
}
-26
View File
@@ -1,26 +0,0 @@
/*
* Logging functions
*/
#ifndef NVT_LOG_H
#define NVT_LOG_H
#include <syslog.h>
#define _PRF_N_(no) __attribute__((__format__(__printf__, (no), (no) + 1)))
#define _PRF2_ _PRF_N_(2)
_PRF2_ void nvt_log(int prio, const char *fmt, ...);
void nvt_log_buf(int prio, const char *txt,
const void *ptr, unsigned int len);
extern char log_level;
extern char log_stdout;
#define DBG(...) \
if (log_level > 0) nvt_log(LOG_DEBUG, __VA_ARGS__)
#define DBG2(...) \
if (log_level > 1) nvt_log(LOG_DEBUG, __VA_ARGS__)
#define DBG2_BUF(txt, ptr, len) \
if (log_level > 1) nvt_log_buf(LOG_DEBUG, txt, ptr, len)
#endif /* NVT_LOG_H */
-123
View File
@@ -1,123 +0,0 @@
/*
* Copyright (c) 2018 Lars Thrane A/S
* SPDX-License-Identifier: GPL-2.0
*
* Telnet parameters
*/
#ifndef TELNET_PARAM_H
#define TELNET_PARAM_H
/*
* Telnet commands
*/
#define TNC_F0_SE (0xf0) /* End of subnegotiation parameters */
#define TNC_F1_NOP (0xf1) /* No operation */
#define TNC_F2_MARK (0xf2) /* The data stream portion of a Synch.
This should always be accompanied
by a TCP Urgent notification. */
#define TNC_F3_BRK (0xf3) /* NVT character BRK. */
#define TNC_F4_IP (0xf4) /* The function IP (interrupt process) */
#define TNC_F5_AO (0xf5) /* The function AO (abort output) */
#define TNC_F6_AYT (0xf6) /* The function AYT (are you there) */
#define TNC_F7_EC (0xf7) /* The function EC (erase charceter) */
#define TNC_F8_EL (0xf8) /* The function EL (erase line) */
#define TNC_F9_GA (0xf9) /* The GA signal (go ahead) */
#define TNC_FA_SB (0xfa) /* Subnegotiation begin */
#define TNC_FB_WILL (0xfb) /* Indicates the desire to begin
performing, or confirmation that
you are now performing, the
indicated option. */
#define TNC_FC_WONT (0xfc) /* Indicates the refusal to perform,
or continue performing, the
indicated option. */
#define TNC_FD_DO (0xfd) /* Indicates the request that the
other party perform, or
confirmation that you are expecting
the other party to perform, the
indicated option. */
#define TNC_FE_DONT (0xfe) /* Indicates the demand that the
other party stop performing,
or confirmation that you are no
longer expecting the other party
to perform, the indicated option. */
#define TNC_FF_IAC (0xff) /* Interpret as Command / data byte */
/*
* Telnet options
*/
/*
* https://www.iana.org/assignments/telnet-options/telnet-options.xhtml
*
* 0 00 Binary Transmission [RFC856]
* 1 01 Echo [RFC857]
* 2 02 Reconnection [DDN Protocol Handbook, ... ]
* 3 03 Suppress Go Ahead [RFC858]
* 4 04 Approx Message Size Negotiation ["The Ethernet, ..." ]
* 5 05 Status [RFC859]
* 6 06 Timing Mark [RFC860]
* 7 07 Remote Controlled Trans and Echo [RFC726]
* 8 08 Output Line Width [DDN Protocol Handbook, ... ]
* 9 09 Output Page Size [DDN Protocol Handbook, ... ]
* 10 0a Output Carriage-Return Disposition [RFC652]
* 11 0b Output Horizontal Tab Stops [RFC653]
* 12 0c Output Horizontal Tab Disposition [RFC654]
* 13 0d Output Formfeed Disposition [RFC655]
* 14 0e Output Vertical Tabstops [RFC656]
* 15 0f Output Vertical Tab Disposition [RFC657]
* 16 10 Output Linefeed Disposition [RFC658]
* 17 11 Extended ASCII [RFC698]
* 18 12 Logout [RFC727]
* 19 13 Byte Macro [RFC735]
* 20 14 Data Entry Terminal [RFC1043][RFC732]
* 21 15 SUPDUP [RFC736][RFC734]
* 22 16 SUPDUP Output [RFC749]
* 23 17 Send Location [RFC779]
* 24 18 Terminal Type [RFC1091]
* 25 19 End of Record [RFC885]
* 26 1a TACACS User Identification [RFC927]
* 27 1b Output Marking [RFC933]
* 28 1c Terminal Location Number [RFC946]
* 29 1d Telnet 3270 Regime [RFC1041]
* 30 1e X.3 PAD [RFC1053]
* 31 1f Negotiate About Window Size [RFC1073]
* 32 20 Terminal Speed [RFC1079]
* 33 21 Remote Flow Control [RFC1372]
* 34 22 Linemode [RFC1184]
* 35 23 X Display Location [RFC1096]
* 36 24 Environment Option [RFC1408]
* 37 25 Authentication Option [RFC2941]
* 38 26 Encryption Option [RFC2946]
* 39 27 New Environment Option [RFC1572]
* 40 28 TN3270E [RFC2355]
* 41 29 XAUTH [Rob_Earhart]
* 42 2a CHARSET [RFC2066]
* 43 2b Telnet Remote Serial Port (RSP) [Robert_Barnes]
* 44 2c Com Port Control Option [RFC2217]
* 45 2d Telnet Suppress Local Echo [Wirt_Atmar]
* 46 2e Telnet Start TLS [Michael_Boe]
* 47 2f KERMIT [RFC2840]
* 48 30 SEND-URL [David_Croft]
* 49 31 FORWARD_X [Jeffrey_Altman]
* 50-137 32-89 Unassigned [IANA]
* 138 8a TELOPT PRAGMA LOGON [Steve_McGregory]
* 139 8b TELOPT SSPI LOGON [Steve_McGregory]
* 140 8c TELOPT PRAGMA HEARTBEAT [Steve_McGregory]
* 141-254 8d-fe Unassigned
* 255 ff Extended-Options-List [RFC861]
*/
#define TNO_BINARY 0 /* 00 Binary Transmission */
#define TNO_ECHO 1 /* 01 Echo */
#define TNO_SUPP_GA 3 /* 03 Suppress Go Ahead */
#define TNO_LOGOUT 18 /* 12 Logout */
#define TNO_TTYP 24 /* 18 Terminal Type */
#define TNO_NAWS 31 /* 1f Negotiate About Window Size */
#define TNO_NEO 39 /* 27 New Environment Option */
#define TNO_CPCO 44 /* 2c RFC 2217 */
#define TNO_KERMIT 47 /* 2f Kermit */
#endif /* TELNET_PARAM_H */
+4 -5
View File
@@ -31,7 +31,7 @@ extern tn_ctx_t *telnet_ctx_init(void *cctx, srv_tx_f * ftx, srv_rx_f * frx,
extern int telnet_open(tn_ctx_t * tcc); extern int telnet_open(tn_ctx_t * tcc);
extern int telnet_rx(tn_ctx_t * tcc, char *buf, int *plen); extern int telnet_rx(tn_ctx_t * tcc, char *buf, size_t * plen);
extern int telnet_tx(tn_ctx_t * tcc, const char *buf, int len); extern int telnet_tx(tn_ctx_t * tcc, const char *buf, int len);
extern void telnet_set_opt(tn_ctx_t * tcc, int opt, int prm, extern void telnet_set_opt(tn_ctx_t * tcc, int opt, int prm,
@@ -42,10 +42,10 @@ extern void telnet_rfc2217_handle_opt(tn_ctx_t * tcc, int opt,
extern void telnet_rfc2217_cfg(tn_ctx_t * tcc, int cmd, extern void telnet_rfc2217_cfg(tn_ctx_t * tcc, int cmd,
const void *val, int nd); const void *val, int nd);
extern void telnet_rfc2217_ctl(tn_ctx_t * tcc, unsigned int val); extern void telnet_rfc2217_ctl(tn_ctx_t * tcc, int cmd);
/*RFC2217 modem state*/ /*RFC2217 modem state*/
#define TNS_STATE_DCD 0x80 #define TNS_STATE_CD 0x80
#define TNS_STATE_RI 0x40 #define TNS_STATE_RI 0x40
#define TNS_STATE_DSR 0x20 #define TNS_STATE_DSR 0x20
#define TNS_STATE_CTS 0x10 #define TNS_STATE_CTS 0x10
@@ -60,12 +60,11 @@ extern void telnet_rfc2217_ctl(tn_ctx_t * tcc, unsigned int val);
/*RFC2217 control commands*/ /*RFC2217 control commands*/
#define TNS_CTL_NOFLOW 1 #define TNS_CTL_NOFLOW 1
#define TNS_CTL_XONOFF_OUT 2 #define TNS_CTL_XONOFF 2
#define TNS_CTL_CTSRTS 3 #define TNS_CTL_CTSRTS 3
#define TNS_CTL_DTR_ON 8 #define TNS_CTL_DTR_ON 8
#define TNS_CTL_DTR_OFF 9 #define TNS_CTL_DTR_OFF 9
#define TNS_CTL_RTS_ON 11 #define TNS_CTL_RTS_ON 11
#define TNS_CTL_RTS_OFF 12 #define TNS_CTL_RTS_OFF 12
#define TNS_CTL_XONOFF_IN 15
#endif /*TELNET_H */ #endif /*TELNET_H */
+3 -3
View File
@@ -121,18 +121,18 @@ static void _telnet_handle_opt(tn_ctx_t * tcc, int opt,
} }
} }
int telnet_rx(tn_ctx_t * tcc, char *buf, int *plen) int telnet_rx(tn_ctx_t * tcc, char *buf, size_t * plen)
{ {
char *s, *p; char *s, *p;
unsigned char *pu; unsigned char *pu;
int len, rem; size_t len, rem;
int np, nd; int np, nd;
int b1, b2; int b1, b2;
len = *plen; len = *plen;
tcc->bytes_rx += len; tcc->bytes_rx += len;
if (len < (int)tcc->off_rx) if (len < (size_t) tcc->off_rx)
tcc->off_rx = 0; tcc->off_rx = 0;
for (s = buf + tcc->off_rx, rem = len - tcc->off_rx; rem > 0; s = p) for (s = buf + tcc->off_rx, rem = len - tcc->off_rx; rem > 0; s = p)
+123
View File
@@ -0,0 +1,123 @@
/*
* Copyright (c) 2018 Lars Thrane A/S
* SPDX-License-Identifier: GPL-2.0
*
* Telnet parameters
*/
#ifndef TELNET_PARAM_H
#define TELNET_PARAM_H
/*
* Telnet commands
*/
#define TNC_F0_SE (0xf0) /* End of subnegotiation parameters */
#define TNC_F1_NOP (0xf1) /* No operation */
#define TNC_F2_MARK (0xf2) /* The data stream portion of a Synch.
This should always be accompanied
by a TCP Urgent notification. */
#define TNC_F3_BRK (0xf3) /* NVT character BRK. */
#define TNC_F4_IP (0xf4) /* The function IP (interrupt process) */
#define TNC_F5_AO (0xf5) /* The function AO (abort output) */
#define TNC_F6_AYT (0xf6) /* The function AYT (are you there) */
#define TNC_F7_EC (0xf7) /* The function EC (erase charceter) */
#define TNC_F8_EL (0xf8) /* The function EL (erase line) */
#define TNC_F9_GA (0xf9) /* The GA signal (go ahead) */
#define TNC_FA_SB (0xfa) /* Subnegotiation begin */
#define TNC_FB_WILL (0xfb) /* Indicates the desire to begin
performing, or confirmation that
you are now performing, the
indicated option. */
#define TNC_FC_WONT (0xfc) /* Indicates the refusal to perform,
or continue performing, the
indicated option. */
#define TNC_FD_DO (0xfd) /* Indicates the request that the
other party perform, or
confirmation that you are expecting
the other party to perform, the
indicated option. */
#define TNC_FE_DONT (0xfe) /* Indicates the demand that the
other party stop performing,
or confirmation that you are no
longer expecting the other party
to perform, the indicated option. */
#define TNC_FF_IAC (0xff) /* Interpret as Command / data byte */
/*
* Telnet options
*/
/*
* https://www.iana.org/assignments/telnet-options/telnet-options.xhtml
*
* 0 Binary Transmission [RFC856]
* 1 Echo [RFC857]
* 2 Reconnection [DDN Protocol Handbook, ... ]
* 3 Suppress Go Ahead [RFC858]
* 4 Approx Message Size Negotiation ["The Ethernet, ... ]
* 5 Status [RFC859]
* 6 Timing Mark [RFC860]
* 7 Remote Controlled Trans and Echo [RFC726]
* 8 Output Line Width [DDN Protocol Handbook, ... ]
* 9 Output Page Size [DDN Protocol Handbook, ... ]
* 10 Output Carriage-Return Disposition [RFC652]
* 11 Output Horizontal Tab Stops [RFC653]
* 12 Output Horizontal Tab Disposition [RFC654]
* 13 Output Formfeed Disposition [RFC655]
* 14 Output Vertical Tabstops [RFC656]
* 15 Output Vertical Tab Disposition [RFC657]
* 16 Output Linefeed Disposition [RFC658]
* 17 Extended ASCII [RFC698]
* 18 Logout [RFC727]
* 19 Byte Macro [RFC735]
* 20 Data Entry Terminal [RFC1043][RFC732]
* 21 SUPDUP [RFC736][RFC734]
* 22 SUPDUP Output [RFC749]
* 23 Send Location [RFC779]
* 24 Terminal Type [RFC1091]
* 25 End of Record [RFC885]
* 26 TACACS User Identification [RFC927]
* 27 Output Marking [RFC933]
* 28 Terminal Location Number [RFC946]
* 29 Telnet 3270 Regime [RFC1041]
* 30 X.3 PAD [RFC1053]
* 31 Negotiate About Window Size [RFC1073]
* 32 Terminal Speed [RFC1079]
* 33 Remote Flow Control [RFC1372]
* 34 Linemode [RFC1184]
* 35 X Display Location [RFC1096]
* 36 Environment Option [RFC1408]
* 37 Authentication Option [RFC2941]
* 38 Encryption Option [RFC2946]
* 39 New Environment Option [RFC1572]
* 40 TN3270E [RFC2355]
* 41 XAUTH [Rob_Earhart]
* 42 CHARSET [RFC2066]
* 43 Telnet Remote Serial Port (RSP) [Robert_Barnes]
* 44 Com Port Control Option [RFC2217]
* 45 Telnet Suppress Local Echo [Wirt_Atmar]
* 46 Telnet Start TLS [Michael_Boe]
* 47 KERMIT [RFC2840]
* 48 SEND-URL [David_Croft]
* 49 FORWARD_X [Jeffrey_Altman]
* 50-137 Unassigned [IANA]
* 138 TELOPT PRAGMA LOGON [Steve_McGregory]
* 139 TELOPT SSPI LOGON [Steve_McGregory]
* 140 TELOPT PRAGMA HEARTBEAT [Steve_McGregory]
* 141-254 Unassigned
* 255 Extended-Options-List [RFC861]
*/
#define TNO_BINARY 0 /* Binary Transmission */
#define TNO_ECHO 1 /* Echo */
#define TNO_SUPP_GA 3 /* Suppress Go Ahead */
#define TNO_LOGOUT 18 /* Logout */
#define TNO_TTYP 24 /* Terminal Type */
#define TNO_NAWS 31 /* Negotiate About Window Size */
#define TNO_NEO 39 /* New Environment Option */
#define TNO_CPCO 44 /* RFC 2217 */
#define TNO_KERMIT 47 /* Kermit */
#endif /* TELNET_PARAM_H */
+2 -4
View File
@@ -43,12 +43,10 @@ void telnet_rfc2217_cfg(tn_ctx_t * tcc, int cmd, const void *val, int nd)
telnet_set_opt(tcc, TNO_CPCO, cmd, val, nd); telnet_set_opt(tcc, TNO_CPCO, cmd, val, nd);
} }
void telnet_rfc2217_ctl(tn_ctx_t * tcc, unsigned int val) void telnet_rfc2217_ctl(tn_ctx_t * tcc, int cmd)
{ {
unsigned char byte = val;
if (!tcc->mode_rfc2217) if (!tcc->mode_rfc2217)
return; return;
telnet_set_opt(tcc, TNO_CPCO, TNS_SET_CONTROL, &byte, 1); telnet_set_opt(tcc, TNO_CPCO, TNS_SET_CONTROL, &cmd, 1);
} }
+182 -407
View File
File diff suppressed because it is too large Load Diff