/
telnet_neg
71 lines (54 loc) · 2.78 KB
/
telnet_neg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
SYNOPSIS
#include <sys/driver_hooks.h>
set_driver_hook(H_TELNET_NEG, value)
<value> being:
void|mixed <name>(int action, int option [, int * opts ] )
void|mixed <closure>(int action, int option [, int * opts ] )
DESCRIPTION
Optional hook to specifiy how to perform a single telnet
negotiation. Hook setting may be any closure or a string. If
not set, most telnet options are rejected (read: only a very
minimal negotiation takes place).
The hook is called whenever the driver receives a demand for
option negotiation for any option the driver does not handle itself.
By default, the driver deals with the following options:
TELOPT_ECHO: Echo option
TELOPT_SGA: Suppress Go Ahead (nearly always on)
TELOPT_COMPRESS: Mud client compression protocol (obsolete)
TELOPT_COMPRESS2: Mud client compression protocol V2
For all other telnet options negotiations, this hook is called.
The hook has then to perform the negotiation using the efun
binary_message().
Alternatively, if H_NOECHO is set, this hook is called for
_all_ telnet data received.
If the setting is a string, it used as the name of an lfun to
call in this_player(). Closures are just called, with unbound
lambda-closures being bound to this_player() prior to execution.
The hook is called for a 'DO/DONT/WILL/WONT <opt>' with the action
(DO/DONT/...) as the first, and <opt> as the second argument.
For example:, if the driver receives the sequence
IAC SB <opt> <opts>...
followed by IAC SB/SE, the hook is called with 'SB' as first
argument, <opt> as second, and <opts> as an array of integers as
third argument.
REMARKS
An incomplete list of telnet negotiations this hook is called
for includes the following:
SB: Suboption negotiation
TELOPT_LINEMODE: linemode
TELOPT_NAWS: window size
TELOPT_TTYPE: terminal type
TELOPT_TM: timing mark
TELOPT_NEWENV: remote environment variables
TELOPT_ENVIRON: remote environment variables
TELOPT_XDISPLOC: remote X display address
TELOPT_TSPEED: terminal speed
TELOPT_BINARY: binary data, needed for non-ASCII charsets
TELOPT_EOR: TinyFugue prompt marker (together with EOR)
TELOPT_MSP: Mud Sound Protocol
TELOPT_MXP: Mud Extension Protocol
TELOPT_MSSP: Mud Server Status Protocol
TELOPT_GMCP: Generic Mud Communication Protocol
HISTORY
SEE ALSO
hooks(C), telnet(C), no_echo(H)