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 *ctx, struct ldb_message ***msgs)
+int samba3_upgrade_winsdb(struct samba3 *samba3, struct ldb_context *ldb, struct ldb_message ***msgs)
{
- /* FIXME */
- return -1;
+ int i;
+ int count = 0;
+
+ for (i = 0; i < samba3->winsdb_count; i++) {
+ struct samba3_winsdb_entry *e = &samba3->winsdb_entries[i];
+ int j;
+ struct ldb_message *msg = msg_array_add(ldb, msgs, &count);
+
+ msg->dn = ldb_dn_string_compose(ldb, NULL, "type=%d,name=%s", e->type, e->name);
+
+ ldb_msg_add_string(ldb, msg, "name", e->name);
+ ldb_msg_add_fmt(ldb, msg, "type", "%d", e->type);
+ ldb_msg_add_string(ldb, msg, "objectClass", "wins");
+ ldb_msg_add_fmt(ldb, msg, "nbFlags", "%x", e->nb_flags);
+ ldb_msg_add_string(ldb, msg, "expires",
+ ldap_timestring(msg, e->ttl));
+
+ for (j = 0; j < e->ip_count; j++) {
+ ldb_msg_add_string(ldb, msg, "address", sys_inet_ntoa(e->ips[j]));
+ }
+ }
+
+ return count;
}