| 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) |