summaryrefslogtreecommitdiff
path: root/usr.sbin/smtpd
diff options
context:
space:
mode:
authorGilles Chehade <gilles@cvs.openbsd.org>2010-04-21 19:45:08 +0000
committerGilles Chehade <gilles@cvs.openbsd.org>2010-04-21 19:45:08 +0000
commitfd61b69b0ae66552b57201d46c1bfaa0d75cb766 (patch)
tree86117cad78ae933b6c0e524383fdf03203a38cef /usr.sbin/smtpd
parent732cfb4dd932c051af555740a5cc5412588e1d67 (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.c26
-rw-r--r--usr.sbin/smtpd/smtpd.h8
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,