summaryrefslogtreecommitdiff
path: root/source4/nbt_server/wins/winsdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/nbt_server/wins/winsdb.c')
-rw-r--r--source4/nbt_server/wins/winsdb.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/source4/nbt_server/wins/winsdb.c b/source4/nbt_server/wins/winsdb.c
index 49ffb13797..50baa50898 100644
--- a/source4/nbt_server/wins/winsdb.c
+++ b/source4/nbt_server/wins/winsdb.c
@@ -44,10 +44,8 @@ static uint64_t winsdb_allocate_version(struct wins_server *winssrv)
dn = ldb_dn_explode(tmp_ctx, "CN=VERSION");
if (!dn) goto failed;
- ret |= ldb_msg_add_string(msg, "objectClass", "winsEntry");
- ret |= ldb_msg_add_fmt(msg, "minVersion", "%llu", winssrv->min_version);
- ret |= ldb_msg_add_fmt(msg, "maxVersion", "%llu", winssrv->max_version);
- if (ret != 0) goto failed;
+ dn = ldb_dn_explode(tmp_ctx, "CN=VERSION");
+ if (!dn) goto failed;
if (ret == 1) {
maxVersion = ldb_msg_find_uint64(res[0], "maxVersion", 0);
@@ -71,6 +69,9 @@ static uint64_t winsdb_allocate_version(struct wins_server *winssrv)
talloc_free(tmp_ctx);
return maxVersion;
+ talloc_free(tmp_ctx);
+ return maxVersion;
+
failed:
talloc_free(tmp_ctx);
return 0;
@@ -742,16 +743,19 @@ struct ldb_message *winsdb_message(struct ldb_context *ldb,
msg->dn = winsdb_dn(msg, rec->name);
if (msg->dn == NULL) goto failed;
- ret |= ldb_msg_add_fmt(msg, "objectClass", "wins");
- ret |= ldb_msg_add_fmt(msg, "active", "%u", rec->state);
- ret |= ldb_msg_add_fmt(msg, "nbFlags", "0x%04x", rec->nb_flags);
- ret |= ldb_msg_add_string(msg, "registeredBy", rec->registered_by);
- ret |= ldb_msg_add_string(msg, "expires",
+ ret |= ldb_msg_add_fmt(msg, "objectClass", "winsRecord");
+ ret |= ldb_msg_add_fmt(msg, "recordType", "%u", rec->type);
+ ret |= ldb_msg_add_fmt(msg, "recordState", "%u", rec->state);
+ ret |= ldb_msg_add_fmt(msg, "nodeType", "%u", rec->node);
+ ret |= ldb_msg_add_fmt(msg, "isStatic", "%u", rec->is_static);
+ ret |= ldb_msg_add_string(msg, "expireTime",
ldb_timestring(msg, rec->expire_time));
- ret |= ldb_msg_add_fmt(msg, "version", "%llu", rec->version);
+ ret |= ldb_msg_add_fmt(msg, "versionID", "%llu", rec->version);
+ ret |= ldb_msg_add_string(msg, "winsOwner", rec->wins_owner);
for (i=0;rec->addresses[i];i++) {
- ret |= ldb_msg_add_string(msg, "address", rec->addresses[i]);
+ ret |= ldb_msg_add_winsdb_addr(msg, "address", rec->addresses[i]);
}
+ ret |= ldb_msg_add_string(msg, "registeredBy", rec->registered_by);
if (ret != 0) goto failed;
return msg;
@@ -771,12 +775,12 @@ uint8_t winsdb_add(struct wins_server *winssrv, struct winsdb_record *rec)
int trans = -1;
int ret = 0;
-
trans = ldb_transaction_start(ldb);
if (trans != LDB_SUCCESS) goto failed;
rec->version = winsdb_allocate_version(winssrv);
if (rec->version == 0) goto failed;
+ rec->wins_owner = WINSDB_OWNER_LOCAL;
msg = winsdb_message(winssrv->wins_db, rec, tmp_ctx);
if (msg == NULL) goto failed;
@@ -849,9 +853,6 @@ uint8_t winsdb_delete(struct wins_server *winssrv, struct winsdb_record *rec)
int trans;
int ret;
- if(!winsdb_remove_version(winssrv, rec->version))
- goto failed;
-
dn = winsdb_dn(tmp_ctx, rec->name);
if (dn == NULL) goto failed;