svn commit: samba r10313 - in branches/tmp/samba4-winsrepl/source/nbt_server/wins: .

metze at samba.org metze at samba.org
Mon Sep 19 10:19:28 GMT 2005


Author: metze
Date: 2005-09-19 10:19:27 +0000 (Mon, 19 Sep 2005)
New Revision: 10313

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10313

Log:
add wrapper functions for the "address" attribute in the winsdb,
the goal is to store the expiry time and the wins owner per address,
which is needed for wins replication

metze
Modified:
   branches/tmp/samba4-winsrepl/source/nbt_server/wins/winsdb.c


Changeset:
Modified: branches/tmp/samba4-winsrepl/source/nbt_server/wins/winsdb.c
===================================================================
--- branches/tmp/samba4-winsrepl/source/nbt_server/wins/winsdb.c	2005-09-19 09:57:39 UTC (rev 10312)
+++ branches/tmp/samba4-winsrepl/source/nbt_server/wins/winsdb.c	2005-09-19 10:19:27 UTC (rev 10313)
@@ -96,6 +96,24 @@
 	return dn;
 }
 
+static const char *winsdb_addr_decode(TALLOC_CTX *mem_ctx, struct ldb_val *val)
+{
+	const char *addr;
+	addr = talloc_steal(mem_ctx, val->data);
+	return addr;
+}
+
+static int ldb_msg_add_winsdb_addr(struct ldb_context *ldb, struct ldb_message *msg, 
+				   const char *attr_name, const char *addr)
+{
+	struct ldb_val val;
+
+	val.data = discard_const_p(uint8_t, addr);
+	val.length = strlen(addr);
+
+	return ldb_msg_add_value(ldb, msg, attr_name, &val);
+}
+
 /*
   load a WINS entry from the database
 */
@@ -136,7 +154,8 @@
 	if (rec->addresses == NULL) goto failed;
 
 	for (i=0;i<el->num_values;i++) {
-		rec->addresses[i] = talloc_steal(rec->addresses, el->values[i].data);
+		rec->addresses[i] = winsdb_addr_decode(rec->addresses, &el->values[i]);
+		if (rec->addresses[i] == NULL) goto failed;
 	}
 	rec->addresses[i] = NULL;
 
@@ -179,7 +198,7 @@
 				  ldap_timestring(msg, rec->expire_time));
 	ret |= ldb_msg_add_fmt(ldb, msg, "version", "%llu", rec->version);
 	for (i=0;rec->addresses[i];i++) {
-		ret |= ldb_msg_add_string(ldb, msg, "address", rec->addresses[i]);
+		ret |= ldb_msg_add_winsdb_addr(ldb, msg, "address", rec->addresses[i]);
 	}
 	if (ret != 0) goto failed;
 	return msg;



More information about the samba-cvs mailing list