blob: aeec53a7568808e117930a1649df555a9417f054 [file] [log] [blame]
Damien Millerd4a8b7e1999-10-27 13:42:43 +10001/*
Damien Miller95def091999-11-25 00:26:21 +11002 *
3 * readconf.h
4 *
5 * Author: Tatu Ylonen <ylo@cs.hut.fi>
6 *
7 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
8 * All rights reserved
9 *
10 * Created: Sat Apr 22 00:25:29 1995 ylo
11 *
12 * Functions for reading the configuration file.
13 *
14 */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100015
Damien Miller95def091999-11-25 00:26:21 +110016/* RCSID("$Id: readconf.h,v 1.4 1999/11/24 13:26:22 damien Exp $"); */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100017
18#ifndef READCONF_H
19#define READCONF_H
20
21/* Data structure for representing a forwarding request. */
22
Damien Miller95def091999-11-25 00:26:21 +110023typedef struct {
24 int port; /* Port to forward. */
25 char *host; /* Host to connect. */
26 int host_port; /* Port to connect on host. */
27} Forward;
Damien Millerd4a8b7e1999-10-27 13:42:43 +100028/* Data structure for representing option data. */
29
Damien Miller95def091999-11-25 00:26:21 +110030typedef struct {
31 int forward_agent; /* Forward authentication agent. */
32 int forward_x11; /* Forward X11 display. */
33 int gateway_ports; /* Allow remote connects to forwarded ports. */
34 int use_privileged_port; /* Don't use privileged port if false. */
35 int rhosts_authentication; /* Try rhosts authentication. */
36 int rhosts_rsa_authentication; /* Try rhosts with RSA
37 * authentication. */
38 int rsa_authentication; /* Try RSA authentication. */
39 int skey_authentication; /* Try S/Key or TIS authentication. */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100040#ifdef KRB4
Damien Miller95def091999-11-25 00:26:21 +110041 int kerberos_authentication; /* Try Kerberos
42 * authentication. */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100043#endif
44#ifdef AFS
Damien Miller95def091999-11-25 00:26:21 +110045 int kerberos_tgt_passing; /* Try Kerberos tgt passing. */
46 int afs_token_passing; /* Try AFS token passing. */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100047#endif
Damien Miller95def091999-11-25 00:26:21 +110048 int password_authentication; /* Try password
49 * authentication. */
50 int fallback_to_rsh;/* Use rsh if cannot connect with ssh. */
51 int use_rsh; /* Always use rsh (don\'t try ssh). */
52 int batch_mode; /* Batch mode: do not ask for passwords. */
53 int check_host_ip; /* Also keep track of keys for IP address */
54 int strict_host_key_checking; /* Strict host key checking. */
55 int compression; /* Compress packets in both directions. */
56 int compression_level; /* Compression level 1 (fast) to 9
57 * (best). */
58 int keepalives; /* Set SO_KEEPALIVE. */
59 LogLevel log_level; /* Level for logging. */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100060
Damien Miller95def091999-11-25 00:26:21 +110061 int port; /* Port to connect. */
62 int connection_attempts; /* Max attempts (seconds) before
63 * giving up */
64 int number_of_password_prompts; /* Max number of password
65 * prompts. */
66 int cipher; /* Cipher to use. */
67 char *hostname; /* Real host to connect. */
68 char *proxy_command; /* Proxy command for connecting the host. */
69 char *user; /* User to log in as. */
70 int escape_char; /* Escape character; -2 = none */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100071
Damien Miller95def091999-11-25 00:26:21 +110072 char *system_hostfile;/* Path for /etc/ssh_known_hosts. */
73 char *user_hostfile; /* Path for $HOME/.ssh/known_hosts. */
Damien Millerd4a8b7e1999-10-27 13:42:43 +100074
Damien Miller95def091999-11-25 00:26:21 +110075 int num_identity_files; /* Number of files for RSA identities. */
76 char *identity_files[SSH_MAX_IDENTITY_FILES];
Damien Millerd4a8b7e1999-10-27 13:42:43 +100077
Damien Miller95def091999-11-25 00:26:21 +110078 /* Local TCP/IP forward requests. */
79 int num_local_forwards;
80 Forward local_forwards[SSH_MAX_FORWARDS_PER_DIRECTION];
Damien Millerd4a8b7e1999-10-27 13:42:43 +100081
Damien Miller95def091999-11-25 00:26:21 +110082 /* Remote TCP/IP forward requests. */
83 int num_remote_forwards;
84 Forward remote_forwards[SSH_MAX_FORWARDS_PER_DIRECTION];
85} Options;
Damien Millerd4a8b7e1999-10-27 13:42:43 +100086
87
88/* Initializes options to special values that indicate that they have not
89 yet been set. Read_config_file will only set options with this value.
90 Options are processed in the following order: command line, user config
91 file, system config file. Last, fill_default_options is called. */
Damien Miller95def091999-11-25 00:26:21 +110092void initialize_options(Options * options);
Damien Millerd4a8b7e1999-10-27 13:42:43 +100093
94/* Called after processing other sources of option data, this fills those
95 options for which no value has been specified with their default values. */
Damien Miller95def091999-11-25 00:26:21 +110096void fill_default_options(Options * options);
Damien Millerd4a8b7e1999-10-27 13:42:43 +100097
Damien Miller95def091999-11-25 00:26:21 +110098/* Processes a single option line as used in the configuration files.
Damien Miller2ccf6611999-11-15 15:25:10 +110099 This only sets those values that have not already been set.
100 Returns 0 for legal options */
Damien Miller95def091999-11-25 00:26:21 +1100101int
102process_config_line(Options * options, const char *host,
103 char *line, const char *filename, int linenum,
104 int *activep);
Damien Millerd4a8b7e1999-10-27 13:42:43 +1000105
106/* Reads the config file and modifies the options accordingly. Options should
107 already be initialized before this call. This never returns if there
108 is an error. If the file does not exist, this returns immediately. */
Damien Miller95def091999-11-25 00:26:21 +1100109void
110read_config_file(const char *filename, const char *host,
111 Options * options);
Damien Millerd4a8b7e1999-10-27 13:42:43 +1000112
113/* Adds a local TCP/IP port forward to options. Never returns if there
114 is an error. */
Damien Miller95def091999-11-25 00:26:21 +1100115void
116add_local_forward(Options * options, int port, const char *host,
117 int host_port);
Damien Millerd4a8b7e1999-10-27 13:42:43 +1000118
119/* Adds a remote TCP/IP port forward to options. Never returns if there
120 is an error. */
Damien Miller95def091999-11-25 00:26:21 +1100121void
122add_remote_forward(Options * options, int port, const char *host,
123 int host_port);
Damien Millerd4a8b7e1999-10-27 13:42:43 +1000124
125
Damien Miller95def091999-11-25 00:26:21 +1100126#endif /* READCONF_H */