summaryrefslogtreecommitdiffstats
path: root/src/defaults.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-05-16 18:35:28 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-05-16 18:35:28 -0400
commit82ec8e499f87136252e4e9361dcf8ea2c14c6294 (patch)
tree0f7dce5718c15231eedde81cf5c4324018a0c56d /src/defaults.c
parent8ab5f4b2f802331090068ab3fb655238e561a9a8 (diff)
downloadslapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.tar.gz
slapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.tar.xz
slapi-nis-82ec8e499f87136252e4e9361dcf8ea2c14c6294.zip
- add a table of defaults
- add a "match" format function ("regmatch" is still needed)
Diffstat (limited to 'src/defaults.c')
-rw-r--r--src/defaults.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/defaults.c b/src/defaults.c
new file mode 100644
index 0000000..43b229b
--- /dev/null
+++ b/src/defaults.c
@@ -0,0 +1,46 @@
+#include <string.h>
+
+#define DEFAULT_ENTRY_FILTER "(&(nisMapName=%m)(objectClass=nisObject))"
+#define DEFAULT_KEY_FORMAT "%{cn}"
+#define DEFAULT_VALUE_FORMAT "%{nisMapEntry}"
+
+static struct configuration {
+ char *map, *filter, *key_format, *value_format;
+} config[] = {
+ {"passwd.byname",
+ "(objectClass=posixAccount)",
+ "%{uid}",
+ "%{uid}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"},
+ {"passwd.bynumber",
+ "(objectClass=posixAccount)",
+ "%{uidNumber}",
+ "%{uid}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{uidNumber}:%{gidNumber}:%{gecos:-%{cn}}:%{homeDirectory:-/}:%{loginShell:-}"},
+ {"group.byname",
+ "(objectClass=posixGroup)",
+ "%{cn}",
+ "%{cn}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{gidNumber}:%list(\",\",\"memberUid\")"},
+ {"group.bynumber",
+ "(objectClass=posixGroup)",
+ "%{gidNumber}",
+ "%{cn}:%regmatch(\"userPassword\",\"^{CRYPT}.............*\",\"*\"):%{gidNumber}:%list(\",\",\"memberUid\")"},
+};
+
+void
+defaults_get_map_config(const char *mapname,
+ const char **filter,
+ const char **key_format,
+ const char **value_format)
+{
+ unsigned int i;
+ *filter = DEFAULT_ENTRY_FILTER;
+ *key_format = DEFAULT_KEY_FORMAT;
+ *value_format = DEFAULT_VALUE_FORMAT;
+ for (i = 0; i < sizeof(config) / sizeof(config[0]); i++) {
+ if (strcmp(mapname, config[i].map) == 0) {
+ *filter = config[i].filter;
+ *key_format = config[i].key_format;
+ *value_format = config[i].value_format;
+ break;
+ }
+ }
+}