#ifndef WH_CONFIG_H_fbb63f3f_ #define WH_CONFIG_H_fbb63f3f_ /* This file is in the public domain. */ #include #include #include "algs.h" #include "keyutils.h" #include "verbose.h" /* Values for "opmode" */ typedef enum { OPMODE_CLIENT = 1, OPMODE_KEYGEN, OPMODE_AGENT, OPMODE_SERVER, OPMODE_SETPASS, OPMODE_SETCOMM, OPMODE_ADD, OPMODE_LIST, OPMODE_DELETE, OPMODE_DELETE_ALL, OPMODE_IMPORT, OPMODE_EXPORT, OPMODE_FPRINT, OPMODE_SHAREKILL, OPMODE_SHARESTOP, OPMODE_SHAREDROP, OPMODE_SHARESTAT, OPMODE_INTAGENT, OPMODE_AGENTDRAIN, OPMODE_KH, OPMODE_CONFIGTEST } OPMODE; /* Values for "kh-op" */ typedef enum { KH_OP_UNSET = 1, KH_OP_IMPORT, KH_OP_EXPORT, KH_OP_CLEAR, KH_OP_DELETE, KH_OP_PORTS, KH_OP_FIND, KH_OP_HOSTS, KH_OP_FP } KH_OP; /* Joint values for "no-hk-action", "bad-hk-action", and onhk actions */ typedef enum { HKACT_PROMPT = 1, HKACT_YES, HKACT_NO, HKACT_SAVE, HKACT_REPLACE, HKACT_REPLALL, HKACT_ADD } HKACT; /* Values for "host-type" */ typedef enum { HT_NONE = 1, /* not (yet) specified */ HT_ARGV, /* taken from argv[0] */ HT_BARE, /* unmarked, as in "ssh HOST cmd arg..." */ HT_FLAG /* flagged with explicit -host */ } HOSTTYPE; /* Values for "await-banner" */ typedef enum { AWAIT_NONE = 1, /* don't wait */ AWAIT_KEX, /* don't start kex */ } AWAITKIND; typedef struct tcpfwd TCPFWD; typedef struct tcpfwdarr TCPFWDARR; typedef struct fwdwhat FWDWHAT; struct fwdwhat { const char *str; unsigned int bit; } ; struct tcpfwd { int flags; #define FF_DIR 0x00000003 #define FF_DIR_LTOR 0x00000001 #define FF_DIR_RTOL 0x00000002 #define FF_MUST 0x00000004 char *listenhost; unsigned int listenport; char *connhost; unsigned int connport; char *text; } ; extern unsigned int fwd; extern unsigned int fwdonce; #define FWD_AGENT 0x00000001 #define FWD_X 0x00000002 #define FWD_ALL 0x00000003 extern const FWDWHAT fwdwhats[]; extern char **ports; extern int nports; extern ALGLIST algs_kex; extern ALGLIST algs_hk; extern ALGLIST algs_enc_c2s; extern ALGLIST algs_enc_s2c; extern ALGLIST algs_mac_c2s; extern ALGLIST algs_mac_s2c; extern ALGLIST algs_comp_c2s; extern ALGLIST algs_comp_s2c; extern ALGLIST algs_ua; extern char **authkeys; extern int nauthkeys; extern char **argsbegin; extern int argscount; extern TCPFWD **tcpfwds; extern int ntcpfwds; extern char *cmdline_txt; extern void handleargs(int, char **); extern const char *get_sshdir(const char *, ...) __attribute__((__format__(__printf__,1,2))); #define SSHDIR_NULL (&sshdir_null) extern const char sshdir_null; extern void parse_fwd(const char *, int, TCPFWD *, void (*)(const char *, ...)); extern int algset(ALGLIST *, const char *, int, FILE *); extern int env_map(int (*)(const char *, const char *, int)); extern void config_init(void); extern void config_set_str(const char *, const char *); extern void config_set_int(const char *, int); extern void config_set_bool(const char *, int); extern int config_set_key_s(const char *, const char *); extern void config_set_key_v(const char *, int); extern void config_set_addr(const char *, const void *); extern void config_def_str(const char *, const char *); extern void config_def_int(const char *, int); extern void config_def_bool(const char *, int); extern void config_def_key_s(const char *, const char *); extern void config_def_key_v(const char *, int); extern void config_set_str_blk(const char *, const void *, int); extern int config_needs(const char *); extern int config_isset(const char *); extern const char *config_str(const char *); extern int config_int(const char *); extern int config_bool(const char *); extern int config_key(const char *); extern void config_sa_ip_port(const void *, const char *, const char *); extern void config_unset(const char *); extern void load_config(const char *, FILE *(*)(void)); extern void config_nofwd(void); /* config_onhk returns 1 for YES, 0 for NO, -1 for not listed. */ extern int config_onhk(HKALG *, const void *, int, KFP); extern void config_file_tester(void); extern void config_debug_dump(FILE *); #endif