svn commit: samba r12228 - in branches/SAMBA_4_0/source/nbt_server/wins: .

metze at samba.org metze at samba.org
Wed Dec 14 08:38:26 GMT 2005


Author: metze
Date: 2005-12-14 08:38:25 +0000 (Wed, 14 Dec 2005)
New Revision: 12228

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

Log:
fix the expire time for RELEASED records

metze
Modified:
   branches/SAMBA_4_0/source/nbt_server/wins/winsdb.h
   branches/SAMBA_4_0/source/nbt_server/wins/winsserver.c


Changeset:
Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsdb.h
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/wins/winsdb.h	2005-12-14 07:22:25 UTC (rev 12227)
+++ branches/SAMBA_4_0/source/nbt_server/wins/winsdb.h	2005-12-14 08:38:25 UTC (rev 12228)
@@ -54,6 +54,19 @@
 	/* wins server database handle */
 	struct ldb_context *wins_db;
 
-	uint32_t min_ttl;
-	uint32_t max_ttl;
+	/* some configuration */
+	struct {
+		/* 
+		 * the interval (in secs) till an active record will be marked as RELEASED
+		 */
+		uint32_t min_renew_interval;
+		uint32_t max_renew_interval;
+
+		/* 
+		 * the interval (in secs) a record remains in RELEASED state,
+		 * before it will be marked as TOMBSTONE
+		 * (also known as extinction interval)
+		 */
+		uint32_t tombstone_interval;
+	} config;
 };

Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsserver.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/wins/winsserver.c	2005-12-14 07:22:25 UTC (rev 12227)
+++ branches/SAMBA_4_0/source/nbt_server/wins/winsserver.c	2005-12-14 08:38:25 UTC (rev 12228)
@@ -4,7 +4,8 @@
    core wins server handling
 
    Copyright (C) Andrew Tridgell	2005
-   
+   Copyright (C) Stefan Metzmacher	2005
+      
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
@@ -31,8 +32,8 @@
 */
 uint32_t wins_server_ttl(struct wins_server *winssrv, uint32_t ttl)
 {
-	ttl = MIN(ttl, winssrv->max_ttl);
-	ttl = MAX(ttl, winssrv->min_ttl);
+	ttl = MIN(ttl, winssrv->config.max_renew_interval);
+	ttl = MAX(ttl, winssrv->config.min_renew_interval);
 	return ttl;
 }
 
@@ -419,6 +420,10 @@
 		break;
 	}
 
+	if (rec->state == WREPL_STATE_RELEASED) {
+		rec->expire_time = winssrv->config.tombstone_interval;
+	}
+
 	ret = winsdb_modify(winssrv->wins_db, rec, modify_flags);
 	if (ret != NBT_RCODE_OK) {
 		DEBUG(1,("WINS: FAILED: released name %s at %s: error:%u\n",
@@ -468,6 +473,8 @@
 */
 NTSTATUS nbtd_winsserver_init(struct nbtd_server *nbtsrv)
 {
+	uint32_t tombstone_interval;
+
 	if (!lp_wins_support()) {
 		nbtsrv->winssrv = NULL;
 		return NT_STATUS_OK;
@@ -476,8 +483,10 @@
 	nbtsrv->winssrv = talloc_zero(nbtsrv, struct wins_server);
 	NT_STATUS_HAVE_NO_MEMORY(nbtsrv->winssrv);
 
-	nbtsrv->winssrv->max_ttl     = lp_max_wins_ttl();
-	nbtsrv->winssrv->min_ttl     = lp_min_wins_ttl();
+	nbtsrv->winssrv->config.max_renew_interval = lp_max_wins_ttl();
+	nbtsrv->winssrv->config.min_renew_interval = lp_min_wins_ttl();
+	tombstone_interval = lp_parm_int(-1,"wreplsrv","tombstone_interval", 6*24*60*60);
+	nbtsrv->winssrv->config.tombstone_interval = tombstone_interval;
 
 	nbtsrv->winssrv->wins_db     = winsdb_connect(nbtsrv->winssrv);
 	if (!nbtsrv->winssrv->wins_db) {



More information about the samba-cvs mailing list