summaryrefslogtreecommitdiff
path: root/source4/lib/samba3
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/samba3')
-rw-r--r--source4/lib/samba3/idmap.c2
-rw-r--r--source4/lib/samba3/samba3.c2
-rw-r--r--source4/lib/samba3/upgrade.c40
3 files changed, 38 insertions, 6 deletions
diff --git a/source4/lib/samba3/idmap.c b/source4/lib/samba3/idmap.c
index ce3d098d3a..ad0ef72ef2 100644
--- a/source4/lib/samba3/idmap.c
+++ b/source4/lib/samba3/idmap.c
@@ -46,7 +46,7 @@ NTSTATUS samba3_read_idmap( const char *fn, TALLOC_CTX *ctx, struct samba3_idmap
/* Open idmap repository */
if (!(tdb = tdb_open(fn, 0, TDB_DEFAULT, O_RDONLY, 0644))) {
- DEBUG(0, ("idmap_init: Unable to open idmap database\n"));
+ DEBUG(0, ("idmap_init: Unable to open idmap database '%s'\n", fn));
return NT_STATUS_UNSUCCESSFUL;
}
diff --git a/source4/lib/samba3/samba3.c b/source4/lib/samba3/samba3.c
index f8ee24ee3b..08debe96b1 100644
--- a/source4/lib/samba3/samba3.c
+++ b/source4/lib/samba3/samba3.c
@@ -107,7 +107,7 @@ NTSTATUS samba3_read(const char *smbconf, const char *libdir, TALLOC_CTX *ctx, s
samba3_read_grouptdb(dbfile, ctx, &ret->group);
SAFE_FREE(dbfile);
- asprintf(&dbfile, "%s/idmap.tdb", libdir);
+ asprintf(&dbfile, "%s/winbindd_idmap.tdb", libdir);
samba3_read_idmap(dbfile, ctx, &ret->idmap);
SAFE_FREE(dbfile);
diff --git a/source4/lib/samba3/upgrade.c b/source4/lib/samba3/upgrade.c
index 941b0fe196..eeb77310ec 100644
--- a/source4/lib/samba3/upgrade.c
+++ b/source4/lib/samba3/upgrade.c
@@ -109,16 +109,48 @@ int samba3_upgrade_registry(struct samba3_regdb *regdb, const char *prefix, stru
return count;
}
-int samba3_upgrade_sam(struct samba3 *samba3, struct ldb_context *ctx, struct ldb_message ***msgs)
+int samba3_upgrade_sam(struct samba3 *samba3, struct ldb_context *ldb, struct ldb_message ***msgs)
{
+ int count = 0;
+ struct ldb_message *msg;
+ struct ldb_dn *domaindn = NULL;
+ *msgs = NULL;
+
+ /* Domain */
+ msg = msg_array_add(ldb, msgs, &count);
+
+ /* FIXME: Guess domain DN by taking ldap bind dn? */
+
/* FIXME */
return -1;
}
-int samba3_upgrade_winbind(struct samba3 *samba3, struct ldb_context *ctx, struct ldb_message ***msgs)
+int samba3_upgrade_winbind(struct samba3 *samba3, struct ldb_context *ldb, struct ldb_message ***msgs)
{
- /* FIXME */
- return -1;
+ int i;
+ int count = 0;
+ struct ldb_message *msg;
+ struct ldb_dn *basedn = NULL;
+ *msgs = NULL;
+
+ msg = msg_array_add(ldb, msgs, &count);
+
+ msg->dn = basedn;
+
+ ldb_msg_add_fmt(ldb, msg, "userHwm", "%d", samba3->idmap.user_hwm);
+ ldb_msg_add_fmt(ldb, msg, "groupHwm", "%d", samba3->idmap.group_hwm);
+
+ for (i = 0; i < samba3->idmap.mapping_count; i++) {
+ char *sid = dom_sid_string(msg, samba3->idmap.mappings[i].sid);
+ msg = msg_array_add(ldb, msgs, &count);
+
+ msg->dn = ldb_dn_build_child(ldb, "SID", sid, basedn);
+ ldb_msg_add_string(ldb, msg, "SID", sid);
+ ldb_msg_add_fmt(ldb, msg, "type", "%d", samba3->idmap.mappings[i].type);
+ ldb_msg_add_fmt(ldb, msg, "unixID", "%u", samba3->idmap.mappings[i].unix_id);
+ }
+
+ return count;
}
int samba3_upgrade_winsdb(struct samba3 *samba3, struct ldb_context *ldb, struct ldb_message ***msgs)