📄 ckccfg.txt
字号:
-DNODIAL removes automatic modem dialing completely, including the entire [91]ckudia.c module, plus all commands that refer to dialing in the various ckuus*.c modules. -DMINIDIAL leaves the DIAL and related commands (SET/SHOW MODEM, SET/SHOW DIAL) intact, but removes support for all types of modems except CCITT, Hayes, Unknown, User-defined, Generic-high-speed, and None (= Direct). The MINIDIAL option cuts the size of the dial module approximately in half. Use this option if you have only Hayes or CCITT modems and don't want to carry the baggage for the other types. A compromise between full dialer support and MINIDIAL is obtained by removing support for "old" modems -- all the strange non-Hayes compatible 1200 and 2400 bps modems that C-Kermit has been carrying around since 1985 or so. To remove support for these modems, add -DNOOLDMODEMS to CFLAGS at compilation time. Finally, if you keep support for old modems, you will notice that their names appear on the "set modem ?" menu. That's because their names are, by default, "visible". But the list is confusing to the younger generation, who have only heard of modems from the V.32bis-and-later era. If you want to be able to use old modems, but don't want their names cluttering up menus, add this to CFLAGS: -DM_OLD=1 [ [92]C-Kermit Home ] [ [93]Kermit Home ] ________________________________________________________________________ 8. NETWORK SUPPORT [ [94]Top ] [ [95]Contents ] [ [96]Next ] [ [97]Previous ] SECTION CONTENTS 8.1. [98]TCP/IP 8.2. [99]X.25 8.3. [100]Other Networks C-Kermit supports not only serial-port and modem connections, but also TCP/IP and X.25 network connections. Some versions support other network types too like DECnet, LAT, NETBIOS, etc. If you define the following symbol: NONET then all network support is compiled away. 8.1. TCP/IP SUBSECTION CONTENTS 8.1.1. [101]Firewalls 8.1.2. [102]Compilation and Linking Problems 8.1.3. [103]Enabling Host Address Lists 8.1.4. [104]Enabling Telnet NAWS 8.1.5. [105]Enabling Incoming TCP/IP Connections 8.1.6. [106]Disabling SET TCP Options C-Kermit's TCP/IP features require the Berkeley sockets library or equivalent, generally available on any Unix system, as well as in Windows 9x/NT, OS/2, VMS, AOS/VS, VOS, etc. The TCP/IP support includes built-in TELNET, FTP, and HTTP protocol. To select TCP/IP support, include -DTCPSOCKET in your makefile target's CFLAGS, or (in VMS) the appropriate variant (e.g. -DWOLLONGONG, -DMULTINET, -DEXCELAN, -DWINTCP, etc). The VMS and/or early Unix third-party TCP/IP products are often incompatible with each other, and sometimes with different versions of themselves. For example, Wollongong reportedly put header files in different directories for different UNIX versions: * in.h can be in either /usr/include/sys or /user/include/netinet. * telnet.h can be in either /usr/include/arpa or /user/include/netinet. * inet.h can be in either /usr/include/arpa or /user/include/sys. In cases like this, use the -I cc command-line option when possible; otherwise it's better to make links in the file system than it is to hack up the C-Kermit source code. Suppose, for example, Kermit is looking for telnet.h in /usr/include/arpa, but on your computer it is in /usr/include/netinet. Do this (as root, or get the system administrator to do it): cd /usr/include/arpa ln /usr/include/netinet/telnet.h telnet.h ("man ln" for details about links.) The network support for TCP/IP and X.25 is in the source files [107]ckcnet.h, [108]ckctel.c, [109]ckctel.c, [110]ckctel.h, [111]ckcftp.c, with miscellaneous SHOW commands, etc, in the various ckuus*.c modules, plus code in the ck*con.c or ckucns.c (CONNECT command) and several other modules to detect TELNET negotiations, etc. Within the TCPSOCKET code, some socket-level controls are included if TCPSOCKET is defined in the C-Kermit CFLAGS and SOL_SOCKET is defined in in the system's TCP-related header files, such as <sys/socket.h>. These are: SET TCP KEEPALIVE SET TCP LINGER SET TCP RECVBUF SET TCP SENDBUF In addition, if TCP_NODELAY is defined, the following command is also enabled: SET TCP NODELAY (Nagle algorithm) See the [112]C-Kermit user documentation for descriptions of these commands. 8.1.1. Firewalls There exist various types of firewalls, set up to separate users of an internal TCP/IP network ("Intranet") from the great wide Internet, but then to let selected users or services get through after all. One firewall method is called SOCKS, in which a proxy server allows users inside a firewall to access the outside world, based on a permission list generally stored in a file. SOCKS is enabled in one of two ways. First, the standard sockets library is modified to handle the firewall, and then all the client applications are relinked (if necessary, i.e. if the libraries are not dynamically loaded) with the modified sockets library. The APIs are all the same, so the applications do not need to be recoded or recompiled. In the other method, the applications must be modified to call replacement routines, such as Raccept() instead of accept(), Rbind() instead of bind(), etc, and then linked with a separate SOCKS library. This second method is accomplished (for SOCKS4) in C-Kermit by including -DCK_SOCKS in your CFLAGS, and also adding: -lsocks to LIBS, or replacing -lsockets with -lsocks (depending on whether the socks library also includes all the sockets entry points). For SOCKS5, use -DCK_SOCKS5. Explicit firewall support can, in general, not be a standard feature or a feature that is selected at runtime, because the SOCKS library tends to be different at each site -- local modifications abound. The ideal situation occurs when firewalls are supported by the first method, using dynamically linked sockets-replacement libraries; in this case, all your TCP/IP client applications negotiate the firewall transparently. 8.1.2. Compilation and Linking Problems If you get a compilation error in [113]ckcnet.c, with a complaint like "incompatible types in assignment", it probably has something to do with the data type your system uses for the inet_addr() function, which is declared (usually) in <arpa/inet.h>. Kermit uses "unsigned long" unless the symbol INADDRX is defined, in which case "struct inaddr" is used instead. Try adding -DINADDRX to CFLAGS in your make entry, and if that fixes the problem, please send a report to kermit@columbia.edu. Compilation errors might also have to do with the data type used for getsockopt() and setsockopt() option-length field. This is normally an int, but sometimes it's a short, a long, or an unsigned any of those, or a size_t. To fix the compilation problem, add -DSOCKOPT_T=xxx to the CFLAGS in your makefile target, where xxx is the appropriate type (use "man getsockopt" or grep through your system/network header files to find the needed type). 8.1.3. Enabling Host Address Lists When you give Kermit an IP host name, it calls the socket routine gethostbyname() to resolve it. gethostbyname() returns a hostent struct, which might or might not not include a list of addresses; if it does, then if the first one fails, Kermit can try the second one, and so on. However, this will only work if the symbol "h_addr" is a macro defined as "h_addr_list[0]", usually in netdb.h. If it is, then you can activate this feature by defining the following symbol in CFLAGS: HADDRLIST 8.1.4. Enabling Telnet NAWS The Telnet Negotiation About Window Size (NAWS) option requires the ability to find out the terminal screen's dimensions. E.g. in Unix, we need something like ioctl(0, TIOCGWINSZ, ...). If your version of Kermit was built with NAWS capability, SHOW VERSIONS includes CK_NAWS among the compiler options. If it doesn't, you can add it by defining CK_NAWS at compile time. Then, if the compiler or linker complain about undefined or missing symbols, or there is no complaint but SHOW TERMINAL fails to show reasonable "Rows =, Columns =" values, then take a look at (or write) the appropriate ttgwsiz() routine. On the other hand, if CK_NAWS is defined by default for your system (in [114]ckcnet.h), but causes trouble, you can override this definition by including the -DNONAWS switch on your CC command line, thus disabling the NAWS feature. This appears to be needed at least on the AT&T 3B2, where in [115]ckutio.c, the routine ttgwsiz() finds that the TIOCGWINSZ symbol is defined but lacks definitions for the corresponding winsize struct and its members ws_col and ws_row. The UNIX version of C-Kermit also traps SIGWINCH, so it can send a NAWS to the Telnet server any time the local console terminal window size changes, e.g. when you stretch it with a mouse. The SIGWINCH-trapping code is enabled if SIGWINCH is defined (i.e. in signal.h). If this code should cause problems, you can disable it without disabling the NAWS feature altogether, by defining NOSIGWINCH at compile time. 8.1.5. Enabling Incoming TCP/IP Connections This feature lets you "set host * port" and wait for an incoming connection on the given port. This feature is enabled automatically at compile if TCPSOCKET is defined and SELECT is also defined. But watch out, simply defining SELECT on the cc command line does not guarantee successful compilation or linking (see [116]Section 11). If you want to disable incoming TCP/IP connections, then build C-Kermit with: -DNOLISTEN 8.1.6. Disabling SET TCP Options The main reason for this is because of header file / prototype conflicts at compile time regardting get- / setsockopt(). If you can't fix them (without breaking other builds), add the following in CFLAGS: -DNOTCPOPTS 8.2. X.25 X.25 support requires (a) a Sun, (b) the SunLink product (libraries and header files), and (c) an X.25 connection into your Sun. Similarly (in C-Kermit 7.0 or later) Stratus VOS and IBM AIX. In UNIX, special makefile targets sunos4x25 and sunos41x25 (for SUNOS 4.0 and 4.1, respectively), or aix41x25, are provided to build in this feature, but they only work if conditions (a)-(c) are met. To request this feature, include -DSUNX25 (or -DIBMX25) in CFLAGS. SUNX25 (or -DIBMX25) and TCPSOCKET can be freely mixed and matched, and selected by the user at runtime with the SET NETWORK TYPE command or SET HOST switches. 8.3. Other Networks Support for other networking methods -- NETBIOS, LAT, Named Pipes, etc -- is included in ck*net.h and ck*net.c for implementations (such as Windows or OS/2) where these methods are supported. Provision is made in the organization of the modules, header files, commands, etc, for addition of new network types such as DECnet, X.25 for other systems (HP-UX, VMS, etc), and so on. Send email to [117]kermit@columbia.edu if you are willing and able to work on such a project. [ [118]C-Kermit Home ] [ [119]Kermit Home ] ________________________________________________________________________ 9. EXCEPTION HANDLING [ [120]Top ] [ [121]Contents ] [ [122]Next ] [ [123]Previous ] The C language setjmp/longjmp mechanism is used for handling exceptions. The jump buffer is of type jmp_buf, which almost everywhere is typedef'd as an array, in which case you should have no trouble compiling the exception-handling code. However, if you are building C-Kermit in/for an environment where jmp_buf is something other than an array (e.g. a struct), then you'll have to define the following symbol: JBNOTARRAY [ [124]C-Kermit Home ] [ [125]Kermit Home ] ________________________________________________________________________ 10. SECURITY FEATURES [ [126]Top ] [ [127]Contents ] [ [128]Next ] [ [129]Previous ] Security, in the sense of secure authentication and strong encryption, can be built into versionf of C-Kermit for which the appropriate libraries and header files are available (Kerberos IV, Kerberos V, OpenSSL, SRP), as explained in great detail in the Kermit Security Reference . The following symbols govern C-Kermit's security features at build time: NO_AUTHENTICATION Means do not configure any TELNET AUTHENTICATION support. It implies NO_ENCRYPTION and undefines any of the auth and encrypt types. It does not undefine CK_SSL even though builds with CK_SSL cannot succeed without CK_AUTHENTICATION. (This will be
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -