diff options
author | Gilles Chehade <gilles@cvs.openbsd.org> | 2010-04-21 19:45:08 +0000 |
---|---|---|
committer | Gilles Chehade <gilles@cvs.openbsd.org> | 2010-04-21 19:45:08 +0000 |
commit | fd61b69b0ae66552b57201d46c1bfaa0d75cb766 (patch) | |
tree | 86117cad78ae933b6c0e524383fdf03203a38cef /usr.sbin/smtpd | |
parent | 732cfb4dd932c051af555740a5cc5412588e1d67 (diff) |
introduce enum map_kind, the map_parsers array and map_parser_lookup()
which will be used to perform stronger checks on map values. they are
unused yet ...
Diffstat (limited to 'usr.sbin/smtpd')
-rw-r--r-- | usr.sbin/smtpd/map.c | 26 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtpd.h | 8 |
2 files changed, 32 insertions, 2 deletions
diff --git a/usr.sbin/smtpd/map.c b/usr.sbin/smtpd/map.c index 4e8a5737cff..3b159c77ca4 100644 --- a/usr.sbin/smtpd/map.c +++ b/usr.sbin/smtpd/map.c @@ -1,4 +1,4 @@ -/* $OpenBSD: map.c,v 1.10 2010/04/21 19:37:32 gilles Exp $ */ +/* $OpenBSD: map.c,v 1.11 2010/04/21 19:45:07 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org> @@ -35,6 +35,7 @@ #include "smtpd.h" struct map_backend *map_backend_lookup(enum map_src); +struct map_parser *map_parser_lookup(enum map_kind); /* db(3) backend */ void *map_db_open(char *); @@ -62,6 +63,15 @@ struct map_backend { map_stdio_open, map_stdio_close, map_stdio_get, map_stdio_put }, }; +struct map_parser { + enum map_kind kind; + void *(*extract)(char *, size_t len); +} map_parsers[] = { + { K_NONE, NULL }, + { K_ALIASES, NULL }, + { K_CREDENTIALS, NULL } +}; + struct map * map_findbyname(struct smtpd *env, const char *name) { @@ -127,6 +137,20 @@ map_backend_lookup(enum map_src source) return &map_backends[i]; } +struct map_parser * +map_parser_lookup(enum map_kind kind) +{ + u_int8_t i; + + for (i = 0; i < nitems(map_parsers); ++i) + if (map_parsers[i].kind == kind) + break; + + if (i == nitems(map_parsers)) + fatalx("invalid map kind"); + + return &map_parsers[i]; +} /* db(3) backend */ void * diff --git a/usr.sbin/smtpd/smtpd.h b/usr.sbin/smtpd/smtpd.h index bdbf1d52bf9..eb4aed746fb 100644 --- a/usr.sbin/smtpd/smtpd.h +++ b/usr.sbin/smtpd/smtpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: smtpd.h,v 1.175 2010/04/21 18:54:43 jacekm Exp $ */ +/* $OpenBSD: smtpd.h,v 1.176 2010/04/21 19:45:07 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org> @@ -249,6 +249,12 @@ enum map_src { S_EXT }; +enum map_kind { + K_NONE, + K_ALIASES, + K_CREDENTIALS +}; + enum mapel_type { ME_STRING, ME_NET, |