diff options
Diffstat (limited to 'match.c')
-rw-r--r-- | match.c | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -35,7 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | 36 | ||
37 | #include "includes.h" | 37 | #include "includes.h" |
38 | RCSID("$OpenBSD: match.c,v 1.12 2001/03/10 17:51:04 markus Exp $"); | 38 | RCSID("$OpenBSD: match.c,v 1.13 2001/06/24 05:25:10 markus Exp $"); |
39 | 39 | ||
40 | #include "match.h" | 40 | #include "match.h" |
41 | #include "xmalloc.h" | 41 | #include "xmalloc.h" |
@@ -162,7 +162,32 @@ match_hostname(const char *host, const char *pattern, u_int len) | |||
162 | return got_positive; | 162 | return got_positive; |
163 | } | 163 | } |
164 | 164 | ||
165 | /* | ||
166 | * returns 0 if we get a negative match for the hostname or the ip | ||
167 | * or if we get no match at all. returns 1 otherwise. | ||
168 | */ | ||
169 | int | ||
170 | match_host_and_ip(const char *host, const char *ipaddr, | ||
171 | const char *patterns) | ||
172 | { | ||
173 | int mhost, mip; | ||
174 | |||
175 | /* negative ipaddr match */ | ||
176 | if ((mip = match_hostname(ipaddr, patterns, strlen(patterns))) == -1) | ||
177 | return 0; | ||
178 | /* negative hostname match */ | ||
179 | if ((mhost = match_hostname(host, patterns, strlen(patterns))) == -1) | ||
180 | return 0; | ||
181 | /* no match at all */ | ||
182 | if (mhost == 0 && mip == 0) | ||
183 | return 0; | ||
184 | return 1; | ||
185 | } | ||
165 | 186 | ||
187 | /* | ||
188 | * Returns first item from client-list that is also supported by server-list, | ||
189 | * caller must xfree() returned string. | ||
190 | */ | ||
166 | #define MAX_PROP 20 | 191 | #define MAX_PROP 20 |
167 | #define SEP "," | 192 | #define SEP "," |
168 | char * | 193 | char * |