|
Lines 40-45
Link Here
|
| 40 |
#include "kex.h" |
40 |
#include "kex.h" |
| 41 |
#include "mac.h" |
41 |
#include "mac.h" |
| 42 |
|
42 |
|
|
|
43 |
#include <netinet/in_systm.h> |
| 44 |
#include <netinet/ip.h> |
| 45 |
#ifndef IPTOS_CLASS_CS0 |
| 46 |
#include "ipclass.h" |
| 47 |
#endif |
| 48 |
|
| 43 |
/* Format of the configuration file: |
49 |
/* Format of the configuration file: |
| 44 |
|
50 |
|
| 45 |
# Configuration data is parsed as follows: |
51 |
# Configuration data is parsed as follows: |
|
Lines 128-133
typedef enum {
Link Here
|
| 128 |
oSendEnv, oControlPath, oControlMaster, oHashKnownHosts, |
134 |
oSendEnv, oControlPath, oControlMaster, oHashKnownHosts, |
| 129 |
oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand, |
135 |
oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand, |
| 130 |
oVisualHostKey, oUseRoaming, oZeroKnowledgePasswordAuthentication, |
136 |
oVisualHostKey, oUseRoaming, oZeroKnowledgePasswordAuthentication, |
|
|
137 |
oUseQoS, |
| 131 |
oDeprecated, oUnsupported |
138 |
oDeprecated, oUnsupported |
| 132 |
} OpCodes; |
139 |
} OpCodes; |
| 133 |
|
140 |
|
|
Lines 135-241
typedef enum {
Link Here
|
| 135 |
|
142 |
|
| 136 |
static struct { |
143 |
static struct { |
| 137 |
const char *name; |
144 |
const char *name; |
|
|
145 |
int restricted; |
| 138 |
OpCodes opcode; |
146 |
OpCodes opcode; |
| 139 |
} keywords[] = { |
147 |
} keywords[] = { |
| 140 |
{ "forwardagent", oForwardAgent }, |
148 |
{ "forwardagent", 0, oForwardAgent }, |
| 141 |
{ "forwardx11", oForwardX11 }, |
149 |
{ "forwardx11", 0, oForwardX11 }, |
| 142 |
{ "forwardx11trusted", oForwardX11Trusted }, |
150 |
{ "forwardx11trusted", 0, oForwardX11Trusted }, |
| 143 |
{ "exitonforwardfailure", oExitOnForwardFailure }, |
151 |
{ "exitonforwardfailure", 0, oExitOnForwardFailure }, |
| 144 |
{ "xauthlocation", oXAuthLocation }, |
152 |
{ "xauthlocation", 0, oXAuthLocation }, |
| 145 |
{ "gatewayports", oGatewayPorts }, |
153 |
{ "gatewayports", 0, oGatewayPorts }, |
| 146 |
{ "useprivilegedport", oUsePrivilegedPort }, |
154 |
{ "useprivilegedport", 0, oUsePrivilegedPort }, |
| 147 |
{ "rhostsauthentication", oDeprecated }, |
155 |
{ "rhostsauthentication", 0, oDeprecated }, |
| 148 |
{ "passwordauthentication", oPasswordAuthentication }, |
156 |
{ "passwordauthentication", 0, oPasswordAuthentication }, |
| 149 |
{ "kbdinteractiveauthentication", oKbdInteractiveAuthentication }, |
157 |
{ "kbdinteractiveauthentication", 0, oKbdInteractiveAuthentication }, |
| 150 |
{ "kbdinteractivedevices", oKbdInteractiveDevices }, |
158 |
{ "kbdinteractivedevices", 0, oKbdInteractiveDevices }, |
| 151 |
{ "rsaauthentication", oRSAAuthentication }, |
159 |
{ "rsaauthentication", 0, oRSAAuthentication }, |
| 152 |
{ "pubkeyauthentication", oPubkeyAuthentication }, |
160 |
{ "pubkeyauthentication", 0, oPubkeyAuthentication }, |
| 153 |
{ "dsaauthentication", oPubkeyAuthentication }, /* alias */ |
161 |
{ "dsaauthentication", 0, oPubkeyAuthentication }, /* alias */ |
| 154 |
{ "rhostsrsaauthentication", oRhostsRSAAuthentication }, |
162 |
{ "rhostsrsaauthentication", 0, oRhostsRSAAuthentication }, |
| 155 |
{ "hostbasedauthentication", oHostbasedAuthentication }, |
163 |
{ "hostbasedauthentication", 0, oHostbasedAuthentication }, |
| 156 |
{ "challengeresponseauthentication", oChallengeResponseAuthentication }, |
164 |
{ "challengeresponseauthentication", 0, oChallengeResponseAuthentication }, |
| 157 |
{ "skeyauthentication", oChallengeResponseAuthentication }, /* alias */ |
165 |
{ "skeyauthentication", 0, oChallengeResponseAuthentication }, /* alias */ |
| 158 |
{ "tisauthentication", oChallengeResponseAuthentication }, /* alias */ |
166 |
{ "tisauthentication", 0, oChallengeResponseAuthentication }, /* alias */ |
| 159 |
{ "kerberosauthentication", oUnsupported }, |
167 |
{ "kerberosauthentication", 0, oUnsupported }, |
| 160 |
{ "kerberostgtpassing", oUnsupported }, |
168 |
{ "kerberostgtpassing", 0, oUnsupported }, |
| 161 |
{ "afstokenpassing", oUnsupported }, |
169 |
{ "afstokenpassing", 0, oUnsupported }, |
| 162 |
#if defined(GSSAPI) |
170 |
#if defined(GSSAPI) |
| 163 |
{ "gssapiauthentication", oGssAuthentication }, |
171 |
{ "gssapiauthentication", 0, oGssAuthentication }, |
| 164 |
{ "gssapidelegatecredentials", oGssDelegateCreds }, |
172 |
{ "gssapidelegatecredentials", 0, oGssDelegateCreds }, |
| 165 |
#else |
173 |
#else |
| 166 |
{ "gssapiauthentication", oUnsupported }, |
174 |
{ "gssapiauthentication", 0, oUnsupported }, |
| 167 |
{ "gssapidelegatecredentials", oUnsupported }, |
175 |
{ "gssapidelegatecredentials", 0, oUnsupported }, |
| 168 |
#endif |
176 |
#endif |
| 169 |
{ "fallbacktorsh", oDeprecated }, |
177 |
{ "fallbacktorsh", 0, oDeprecated }, |
| 170 |
{ "usersh", oDeprecated }, |
178 |
{ "usersh", 0, oDeprecated }, |
| 171 |
{ "identityfile", oIdentityFile }, |
179 |
{ "identityfile", 0, oIdentityFile }, |
| 172 |
{ "identityfile2", oIdentityFile }, /* obsolete */ |
180 |
{ "identityfile2", 0, oIdentityFile }, /* obsolete */ |
| 173 |
{ "identitiesonly", oIdentitiesOnly }, |
181 |
{ "identitiesonly", 0, oIdentitiesOnly }, |
| 174 |
{ "hostname", oHostName }, |
182 |
{ "hostname", 0, oHostName }, |
| 175 |
{ "hostkeyalias", oHostKeyAlias }, |
183 |
{ "hostkeyalias", 0, oHostKeyAlias }, |
| 176 |
{ "proxycommand", oProxyCommand }, |
184 |
{ "proxycommand", 0, oProxyCommand }, |
| 177 |
{ "port", oPort }, |
185 |
{ "port", 0, oPort }, |
| 178 |
{ "cipher", oCipher }, |
186 |
{ "cipher", 0, oCipher }, |
| 179 |
{ "ciphers", oCiphers }, |
187 |
{ "ciphers", 0, oCiphers }, |
| 180 |
{ "macs", oMacs }, |
188 |
{ "macs", 0, oMacs }, |
| 181 |
{ "protocol", oProtocol }, |
189 |
{ "protocol", 0, oProtocol }, |
| 182 |
{ "remoteforward", oRemoteForward }, |
190 |
{ "remoteforward", 0, oRemoteForward }, |
| 183 |
{ "localforward", oLocalForward }, |
191 |
{ "localforward", 0, oLocalForward }, |
| 184 |
{ "user", oUser }, |
192 |
{ "user", 0, oUser }, |
| 185 |
{ "host", oHost }, |
193 |
{ "host", 0, oHost }, |
| 186 |
{ "escapechar", oEscapeChar }, |
194 |
{ "escapechar", 0, oEscapeChar }, |
| 187 |
{ "globalknownhostsfile", oGlobalKnownHostsFile }, |
195 |
{ "globalknownhostsfile", 0, oGlobalKnownHostsFile }, |
| 188 |
{ "globalknownhostsfile2", oGlobalKnownHostsFile2 }, /* obsolete */ |
196 |
{ "globalknownhostsfile2", 0, oGlobalKnownHostsFile2 }, /* obsolete */ |
| 189 |
{ "userknownhostsfile", oUserKnownHostsFile }, |
197 |
{ "userknownhostsfile", 0, oUserKnownHostsFile }, |
| 190 |
{ "userknownhostsfile2", oUserKnownHostsFile2 }, /* obsolete */ |
198 |
{ "userknownhostsfile2", 0, oUserKnownHostsFile2 }, /* obsolete */ |
| 191 |
{ "connectionattempts", oConnectionAttempts }, |
199 |
{ "connectionattempts", 0, oConnectionAttempts }, |
| 192 |
{ "batchmode", oBatchMode }, |
200 |
{ "batchmode", 0, oBatchMode }, |
| 193 |
{ "checkhostip", oCheckHostIP }, |
201 |
{ "checkhostip", 0, oCheckHostIP }, |
| 194 |
{ "stricthostkeychecking", oStrictHostKeyChecking }, |
202 |
{ "stricthostkeychecking", 0, oStrictHostKeyChecking }, |
| 195 |
{ "compression", oCompression }, |
203 |
{ "compression", 0, oCompression }, |
| 196 |
{ "compressionlevel", oCompressionLevel }, |
204 |
{ "compressionlevel", 0, oCompressionLevel }, |
| 197 |
{ "tcpkeepalive", oTCPKeepAlive }, |
205 |
{ "tcpkeepalive", 0, oTCPKeepAlive }, |
| 198 |
{ "keepalive", oTCPKeepAlive }, /* obsolete */ |
206 |
{ "keepalive", 0, oTCPKeepAlive }, /* obsolete */ |
| 199 |
{ "numberofpasswordprompts", oNumberOfPasswordPrompts }, |
207 |
{ "numberofpasswordprompts", 0, oNumberOfPasswordPrompts }, |
| 200 |
{ "loglevel", oLogLevel }, |
208 |
{ "loglevel", 0, oLogLevel }, |
| 201 |
{ "dynamicforward", oDynamicForward }, |
209 |
{ "dynamicforward", 0, oDynamicForward }, |
| 202 |
{ "preferredauthentications", oPreferredAuthentications }, |
210 |
{ "preferredauthentications", 0, oPreferredAuthentications }, |
| 203 |
{ "hostkeyalgorithms", oHostKeyAlgorithms }, |
211 |
{ "hostkeyalgorithms", 0, oHostKeyAlgorithms }, |
| 204 |
{ "bindaddress", oBindAddress }, |
212 |
{ "bindaddress", 0, oBindAddress }, |
| 205 |
#ifdef ENABLE_PKCS11 |
213 |
#ifdef ENABLE_PKCS11 |
| 206 |
{ "smartcarddevice", oPKCS11Provider }, |
214 |
{ "smartcarddevice", 0, oPKCS11Provider }, |
| 207 |
{ "pkcs11provider", oPKCS11Provider }, |
215 |
{ "pkcs11provider", 0, oPKCS11Provider }, |
| 208 |
#else |
216 |
#else |
| 209 |
{ "smartcarddevice", oUnsupported }, |
217 |
{ "smartcarddevice", 0, oUnsupported }, |
| 210 |
{ "pkcs11provider", oUnsupported }, |
218 |
{ "pkcs11provider", 0, oUnsupported }, |
| 211 |
#endif |
219 |
#endif |
| 212 |
{ "clearallforwardings", oClearAllForwardings }, |
220 |
{ "clearallforwardings", 0, oClearAllForwardings }, |
| 213 |
{ "enablesshkeysign", oEnableSSHKeysign }, |
221 |
{ "enablesshkeysign", 0, oEnableSSHKeysign }, |
| 214 |
{ "verifyhostkeydns", oVerifyHostKeyDNS }, |
222 |
{ "verifyhostkeydns", 0, oVerifyHostKeyDNS }, |
| 215 |
{ "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost }, |
223 |
{ "nohostauthenticationforlocalhost", 0, oNoHostAuthenticationForLocalhost }, |
| 216 |
{ "rekeylimit", oRekeyLimit }, |
224 |
{ "rekeylimit", 0, oRekeyLimit }, |
| 217 |
{ "connecttimeout", oConnectTimeout }, |
225 |
{ "connecttimeout", 0, oConnectTimeout }, |
| 218 |
{ "addressfamily", oAddressFamily }, |
226 |
{ "addressfamily", 0, oAddressFamily }, |
| 219 |
{ "serveraliveinterval", oServerAliveInterval }, |
227 |
{ "serveraliveinterval", 0, oServerAliveInterval }, |
| 220 |
{ "serveralivecountmax", oServerAliveCountMax }, |
228 |
{ "serveralivecountmax", 0, oServerAliveCountMax }, |
| 221 |
{ "sendenv", oSendEnv }, |
229 |
{ "sendenv", 0, oSendEnv }, |
| 222 |
{ "controlpath", oControlPath }, |
230 |
{ "controlpath", 0, oControlPath }, |
| 223 |
{ "controlmaster", oControlMaster }, |
231 |
{ "controlmaster", 0, oControlMaster }, |
| 224 |
{ "hashknownhosts", oHashKnownHosts }, |
232 |
{ "hashknownhosts", 0, oHashKnownHosts }, |
| 225 |
{ "tunnel", oTunnel }, |
233 |
{ "tunnel", 0, oTunnel }, |
| 226 |
{ "tunneldevice", oTunnelDevice }, |
234 |
{ "tunneldevice", 0, oTunnelDevice }, |
| 227 |
{ "localcommand", oLocalCommand }, |
235 |
{ "localcommand", 0, oLocalCommand }, |
| 228 |
{ "permitlocalcommand", oPermitLocalCommand }, |
236 |
{ "permitlocalcommand", 0, oPermitLocalCommand }, |
| 229 |
{ "visualhostkey", oVisualHostKey }, |
237 |
{ "visualhostkey", 0, oVisualHostKey }, |
| 230 |
{ "useroaming", oUseRoaming }, |
238 |
{ "useroaming", 0, oUseRoaming }, |
|
|
239 |
{ "useqos", 1, oUseQoS}, |
| 231 |
#ifdef JPAKE |
240 |
#ifdef JPAKE |
| 232 |
{ "zeroknowledgepasswordauthentication", |
241 |
{ "zeroknowledgepasswordauthentication", 0, |
| 233 |
oZeroKnowledgePasswordAuthentication }, |
242 |
oZeroKnowledgePasswordAuthentication }, |
| 234 |
#else |
243 |
#else |
| 235 |
{ "zeroknowledgepasswordauthentication", oUnsupported }, |
244 |
{ "zeroknowledgepasswordauthentication", 0, oUnsupported }, |
| 236 |
#endif |
245 |
#endif |
| 237 |
|
246 |
|
| 238 |
{ NULL, oBadOption } |
247 |
{ NULL, 0, oBadOption } |
| 239 |
}; |
248 |
}; |
| 240 |
|
249 |
|
| 241 |
/* |
250 |
/* |
|
Lines 306-324
clear_forwardings(Options *options)
Link Here
|
| 306 |
*/ |
315 |
*/ |
| 307 |
|
316 |
|
| 308 |
static OpCodes |
317 |
static OpCodes |
| 309 |
parse_token(const char *cp, const char *filename, int linenum) |
318 |
parse_token(const char *cp, const char *filename, int linenum, int *restricted) |
| 310 |
{ |
319 |
{ |
| 311 |
u_int i; |
320 |
u_int i; |
| 312 |
|
321 |
|
| 313 |
for (i = 0; keywords[i].name; i++) |
322 |
for (i = 0; keywords[i].name; i++) |
| 314 |
if (strcasecmp(cp, keywords[i].name) == 0) |
323 |
if (strcasecmp(cp, keywords[i].name) == 0) { |
|
|
324 |
*restricted= keywords[i].restricted; |
| 315 |
return keywords[i].opcode; |
325 |
return keywords[i].opcode; |
|
|
326 |
} |
| 316 |
|
327 |
|
| 317 |
error("%s: line %d: Bad configuration option: %s", |
328 |
error("%s: line %d: Bad configuration option: %s", |
| 318 |
filename, linenum, cp); |
329 |
filename, linenum, cp); |
| 319 |
return oBadOption; |
330 |
return oBadOption; |
| 320 |
} |
331 |
} |
| 321 |
|
332 |
|
|
|
333 |
struct { |
| 334 |
const char *name; |
| 335 |
int value; |
| 336 |
} qos[] = { |
| 337 |
{ "cs0", IPTOS_CLASS_CS0 }, |
| 338 |
{ "cs1", IPTOS_CLASS_CS1 }, |
| 339 |
{ "cs2", IPTOS_CLASS_CS2 }, |
| 340 |
{ "cs3", IPTOS_CLASS_CS3 }, |
| 341 |
{ "cs4", IPTOS_CLASS_CS4 }, |
| 342 |
{ "cs5", IPTOS_CLASS_CS5 }, |
| 343 |
{ "cs6", IPTOS_CLASS_CS6 }, |
| 344 |
{ "cs7", IPTOS_CLASS_CS7 }, |
| 345 |
{ "af11", IPTOS_DSCP_AF11 }, |
| 346 |
{ "af12", IPTOS_DSCP_AF12 }, |
| 347 |
{ "af13", IPTOS_DSCP_AF13 }, |
| 348 |
{ "af21", IPTOS_DSCP_AF21 }, |
| 349 |
{ "af22", IPTOS_DSCP_AF22 }, |
| 350 |
{ "af23", IPTOS_DSCP_AF23 }, |
| 351 |
{ "af31", IPTOS_DSCP_AF31 }, |
| 352 |
{ "af32", IPTOS_DSCP_AF32 }, |
| 353 |
{ "af33", IPTOS_DSCP_AF33 }, |
| 354 |
{ "af41", IPTOS_DSCP_AF41 }, |
| 355 |
{ "af42", IPTOS_DSCP_AF42 }, |
| 356 |
{ "af43", IPTOS_DSCP_AF43 }, |
| 357 |
{ "ef", IPTOS_DSCP_EF }, |
| 358 |
{ "lowdelay", IPTOS_LOWDELAY }, |
| 359 |
{ "throughput", IPTOS_THROUGHPUT }, |
| 360 |
{ "reliability", IPTOS_RELIABILITY }, |
| 361 |
#ifdef IPTOS_LOWCOST |
| 362 |
{ "lowcost", IPTOS_LOWCOST }, |
| 363 |
#endif |
| 364 |
#ifdef IPTOS_MINCOST |
| 365 |
{ "mincost", IPTOS_MINCOST }, |
| 366 |
#endif |
| 367 |
{ "none", IPTOS_CLASS_CS0 }, |
| 368 |
{ NULL, -1 }, |
| 369 |
}; |
| 370 |
|
| 371 |
static int parse_qos(const char *cp) |
| 372 |
{ |
| 373 |
u_int i; |
| 374 |
|
| 375 |
for (i = 0; qos[i].name; i++) |
| 376 |
if (strcasecmp(cp, qos[i].name) == 0) |
| 377 |
return qos[i].value; |
| 378 |
return -1; |
| 379 |
} |
| 380 |
|
| 322 |
/* |
381 |
/* |
| 323 |
* Processes a single option line as used in the configuration files. This |
382 |
* Processes a single option line as used in the configuration files. This |
| 324 |
* only sets those values that have not already been set. |
383 |
* only sets those values that have not already been set. |
|
Lines 328-337
parse_token(const char *cp, const char *filename, int
Link Here
|
| 328 |
int |
387 |
int |
| 329 |
process_config_line(Options *options, const char *host, |
388 |
process_config_line(Options *options, const char *host, |
| 330 |
char *line, const char *filename, int linenum, |
389 |
char *line, const char *filename, int linenum, |
| 331 |
int *activep) |
390 |
int *activep, int systemwide) |
| 332 |
{ |
391 |
{ |
| 333 |
char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256]; |
392 |
char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256]; |
| 334 |
int opcode, *intptr, value, value2, scale; |
393 |
int opcode, *intptr, value, value2, scale, restricted; |
| 335 |
LogLevel *log_level_ptr; |
394 |
LogLevel *log_level_ptr; |
| 336 |
long long orig, val64; |
395 |
long long orig, val64; |
| 337 |
size_t len; |
396 |
size_t len; |
|
Lines 354-361
process_config_line(Options *options, const char *host
Link Here
|
| 354 |
if (keyword == NULL || !*keyword || *keyword == '\n' || *keyword == '#') |
413 |
if (keyword == NULL || !*keyword || *keyword == '\n' || *keyword == '#') |
| 355 |
return 0; |
414 |
return 0; |
| 356 |
|
415 |
|
| 357 |
opcode = parse_token(keyword, filename, linenum); |
416 |
opcode = parse_token(keyword, filename, linenum, &restricted); |
| 358 |
|
417 |
|
|
|
418 |
if (restricted && !systemwide) { |
| 419 |
fatal("%s line %d: not permitted in user profile.", filename, linenum); |
| 420 |
} |
| 421 |
|
| 359 |
switch (opcode) { |
422 |
switch (opcode) { |
| 360 |
case oBadOption: |
423 |
case oBadOption: |
| 361 |
/* don't panic, but count bad options */ |
424 |
/* don't panic, but count bad options */ |
|
Lines 917-922
parse_int:
Link Here
|
| 917 |
intptr = &options->use_roaming; |
980 |
intptr = &options->use_roaming; |
| 918 |
goto parse_flag; |
981 |
goto parse_flag; |
| 919 |
|
982 |
|
|
|
983 |
case oUseQoS: |
| 984 |
arg = strdelim(&s); |
| 985 |
if (arg == NULL || *arg == '\0') |
| 986 |
fatal("%.200s line %d: Missing non-interactive QoS argument.", |
| 987 |
filename, linenum); |
| 988 |
|
| 989 |
arg2 = strdelim(&s); |
| 990 |
if (arg2 == NULL || *arg2 == '\0') |
| 991 |
fatal("%.200s line %d: Missing interactive QoS argument.", |
| 992 |
filename, linenum); |
| 993 |
|
| 994 |
value = parse_qos(arg); |
| 995 |
value2 = parse_qos(arg2); |
| 996 |
if (value == -1 || value2 == -1) |
| 997 |
fatal("%.200s line %d: Bad QoS argument.", |
| 998 |
filename, linenum); |
| 999 |
|
| 1000 |
options->use_qos[0] = value; |
| 1001 |
options->use_qos[1] = value2; |
| 1002 |
break; |
| 1003 |
|
| 920 |
case oDeprecated: |
1004 |
case oDeprecated: |
| 921 |
debug("%s line %d: Deprecated option \"%s\"", |
1005 |
debug("%s line %d: Deprecated option \"%s\"", |
| 922 |
filename, linenum, keyword); |
1006 |
filename, linenum, keyword); |
|
Lines 948-954
parse_int:
Link Here
|
| 948 |
|
1032 |
|
| 949 |
int |
1033 |
int |
| 950 |
read_config_file(const char *filename, const char *host, Options *options, |
1034 |
read_config_file(const char *filename, const char *host, Options *options, |
| 951 |
int checkperm) |
1035 |
int checkperm, int systemwide) |
| 952 |
{ |
1036 |
{ |
| 953 |
FILE *f; |
1037 |
FILE *f; |
| 954 |
char line[1024]; |
1038 |
char line[1024]; |
|
Lines 979-985
read_config_file(const char *filename, const char *hos
Link Here
|
| 979 |
while (fgets(line, sizeof(line), f)) { |
1063 |
while (fgets(line, sizeof(line), f)) { |
| 980 |
/* Update line number counter. */ |
1064 |
/* Update line number counter. */ |
| 981 |
linenum++; |
1065 |
linenum++; |
| 982 |
if (process_config_line(options, host, line, filename, linenum, &active) != 0) |
1066 |
if (process_config_line(options, host, line, filename, linenum, &active, systemwide) != 0) |
| 983 |
bad_options++; |
1067 |
bad_options++; |
| 984 |
} |
1068 |
} |
| 985 |
fclose(f); |
1069 |
fclose(f); |
|
Lines 1067-1072
initialize_options(Options * options)
Link Here
|
| 1067 |
options->local_command = NULL; |
1151 |
options->local_command = NULL; |
| 1068 |
options->permit_local_command = -1; |
1152 |
options->permit_local_command = -1; |
| 1069 |
options->use_roaming = -1; |
1153 |
options->use_roaming = -1; |
|
|
1154 |
options->use_qos[0] = -1; |
| 1155 |
options->use_qos[1] = -1; |
| 1070 |
options->visual_host_key = -1; |
1156 |
options->visual_host_key = -1; |
| 1071 |
options->zero_knowledge_password_authentication = -1; |
1157 |
options->zero_knowledge_password_authentication = -1; |
| 1072 |
} |
1158 |
} |
|
Lines 1215-1220
fill_default_options(Options * options)
Link Here
|
| 1215 |
/* options->hostname will be set in the main program if appropriate */ |
1301 |
/* options->hostname will be set in the main program if appropriate */ |
| 1216 |
/* options->host_key_alias should not be set by default */ |
1302 |
/* options->host_key_alias should not be set by default */ |
| 1217 |
/* options->preferred_authentications will be set in ssh */ |
1303 |
/* options->preferred_authentications will be set in ssh */ |
|
|
1304 |
if (options->use_qos[0] == -1) |
| 1305 |
options->use_qos[0] = IPTOS_THROUGHPUT; |
| 1306 |
if (options->use_qos[1] == -1) |
| 1307 |
options->use_qos[1] = IPTOS_LOWDELAY; |
| 1218 |
} |
1308 |
} |
| 1219 |
|
1309 |
|
| 1220 |
/* |
1310 |
/* |