diff options
Diffstat (limited to 'hostfile.h')
-rw-r--r-- | hostfile.h | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/hostfile.h b/hostfile.h index d90973f42..24c3813aa 100644 --- a/hostfile.h +++ b/hostfile.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: hostfile.h,v 1.21 2015/01/15 09:40:00 djm Exp $ */ | 1 | /* $OpenBSD: hostfile.h,v 1.22 2015/01/18 21:40:24 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -52,4 +52,45 @@ int add_host_to_hostfile(const char *, const char *, | |||
52 | 52 | ||
53 | char *host_hash(const char *, const char *, u_int); | 53 | char *host_hash(const char *, const char *, u_int); |
54 | 54 | ||
55 | /* | ||
56 | * Iterate through a hostkeys file, optionally parsing keys and matching | ||
57 | * hostnames. Allows access to the raw keyfile lines to allow | ||
58 | * streaming edits to the file to take place. | ||
59 | */ | ||
60 | #define HKF_WANT_MATCH_HOST (1) /* return only matching hosts */ | ||
61 | #define HKF_WANT_PARSE_KEY (1<<1) /* need key parsed */ | ||
62 | |||
63 | #define HKF_STATUS_OK 1 /* Line parsed, didn't match host */ | ||
64 | #define HKF_STATUS_INVALID 2 /* line had parse error */ | ||
65 | #define HKF_STATUS_COMMENT 3 /* valid line contained no key */ | ||
66 | #define HKF_STATUS_HOST_MATCHED 4 /* hostname matched */ | ||
67 | |||
68 | /* | ||
69 | * The callback function receives this as an argument for each matching | ||
70 | * hostkey line. The callback may "steal" the 'key' field by setting it to NULL. | ||
71 | * If a parse error occurred, then "hosts" and subsequent options may be NULL. | ||
72 | */ | ||
73 | struct hostkey_foreach_line { | ||
74 | const char *path; /* Path of file */ | ||
75 | u_long linenum; /* Line number */ | ||
76 | int status; /* One of HKF_STATUS_* */ | ||
77 | char *line; /* Entire key line; mutable by callback */ | ||
78 | int marker; /* CA/revocation markers; indicated by MRK_* value */ | ||
79 | const char *hosts; /* Raw hosts text, may be hashed or list multiple */ | ||
80 | int was_hashed; /* Non-zero if hostname was hashed */ | ||
81 | const char *rawkey; /* Text of key and any comment following it */ | ||
82 | struct sshkey *key; /* Key, if parsed ok and HKF_WANT_MATCH_HOST set */ | ||
83 | const char *comment; /* Any comment following the key */ | ||
84 | }; | ||
85 | |||
86 | /* | ||
87 | * Callback fires for each line (or matching line if a HKF_WANT_* option | ||
88 | * is set). The foreach loop will terminate if the callback returns a non- | ||
89 | * zero exit status. | ||
90 | */ | ||
91 | typedef int hostkeys_foreach_fn(struct hostkey_foreach_line *l, void *ctx); | ||
92 | |||
93 | int hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx, | ||
94 | const char *host, u_int options); | ||
95 | |||
55 | #endif | 96 | #endif |