2 * Dropbear - a SSH2 server
4 * Copyright (c) 2002,2003 Matt Johnston
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25 #ifndef DROPBEAR_RUNOPTS_H_
26 #define DROPBEAR_RUNOPTS_H_
34 typedef struct runopts
{
36 #if defined(ENABLE_SVR_REMOTETCPFWD) || defined(ENABLE_CLI_LOCALTCPFWD) \
37 || defined(ENABLE_CLI_REMOTETCPFWD)
40 unsigned int recv_window
;
41 time_t keepalive_secs
; /* Time between sending keepalives. 0 is off */
42 time_t idle_timeout_secs
; /* Exit if no traffic is sent/received in this time */
46 /* TODO: add a commandline flag. Currently this is on by default if compression
47 * is compiled in, but disabled for a client's non-final multihop stages. (The
48 * intermediate stages are compressed streams, so are uncompressible. */
50 DROPBEAR_COMPRESS_DELAYED
, /* Server only */
52 DROPBEAR_COMPRESS_OFF
,
56 #ifdef ENABLE_USER_ALGO_LIST
65 int readhostkey(const char * filename
, sign_key
* hostkey
,
66 enum signkey_type
*type
);
67 void load_all_hostkeys(void);
69 typedef struct svr_runopts
{
75 /* ports and addresses are arrays of the portcount
76 listening ports. strings are malloced. */
77 char *ports
[DROPBEAR_MAX_PORTS
];
78 unsigned int portcount
;
79 char *addresses
[DROPBEAR_MAX_PORTS
];
83 /* Flags indicating whether to use ipv4 and ipv6 */
90 /* whether to print the MOTD */
100 #ifdef ENABLE_SVR_REMOTETCPFWD
103 #ifdef ENABLE_SVR_LOCALTCPFWD
111 char *hostkey_files
[MAX_HOSTKEYS
];
112 int num_hostkey_files
;
119 extern svr_runopts svr_opts
;
121 void svr_getopts(int argc
, char ** argv
);
122 void loadhostkeys(void);
124 typedef struct cli_runopts
{
135 int always_accept_key
;
136 int no_hostkey_check
;
140 #ifdef ENABLE_CLI_PUBKEY_AUTH
141 m_list
*privkeys
; /* Keys to use for public-key auth */
143 #ifdef ENABLE_CLI_ANYTCPFWD
144 int exit_on_fwd_failure
;
146 #ifdef ENABLE_CLI_REMOTETCPFWD
149 #ifdef ENABLE_CLI_LOCALTCPFWD
152 #ifdef ENABLE_CLI_AGENTFWD
154 int agent_keys_loaded
; /* whether pubkeys has been populated with a
155 list of keys held by the agent */
156 int agent_fd
; /* The agent fd is only set during authentication. Forwarded
157 agent sessions have their own file descriptors */
160 #ifdef ENABLE_CLI_NETCAT
162 unsigned int netcat_port
;
164 #ifdef ENABLE_CLI_PROXYCMD
169 extern cli_runopts cli_opts
;
170 void cli_getopts(int argc
, char ** argv
);
172 #ifdef ENABLE_USER_ALGO_LIST
173 void parse_ciphers_macs(void);
176 void print_version(void);
178 #endif /* DROPBEAR_RUNOPTS_H_ */