The Samba-Bugzilla – Attachment 19181 Details for
Bug 16223
DNS scavenging happens even if fAging is FALSE
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patches for v4-25-test
bfixes-tmp425.txt (text/plain), 24.86 KB, created by
Stefan Metzmacher
on 2026-08-25 12:34:51 UTC
(
hide
)
Description:
Patches for v4-25-test
Filename:
MIME Type:
Creator:
Stefan Metzmacher
Created:
2026-08-25 12:34:51 UTC
Size:
24.86 KB
patch
obsolete
>From 7f30ad05024525ec22036ac53c50df10eda08b1d Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 22:31:24 +0200 >Subject: [PATCH 01/10] s4:rpc_server/common: turn lpcfg_dcerpc_server_info() > into an inline function > >This makes it easier to use without linking problems. > >While there fix talloc problems. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 8f17d9a89e22d074e6894cc1530ea626d60a080f) >--- > lib/param/param.h | 1 - > source4/rpc_server/common/common.h | 26 ++++++++++++++++ > source4/rpc_server/common/loadparm.c | 45 ---------------------------- > source4/rpc_server/wscript_build | 1 - > 4 files changed, 26 insertions(+), 47 deletions(-) > delete mode 100644 source4/rpc_server/common/loadparm.c > >diff --git a/lib/param/param.h b/lib/param/param.h >index ed10fa9e90da..6cf27c245971 100644 >--- a/lib/param/param.h >+++ b/lib/param/param.h >@@ -188,7 +188,6 @@ void lpcfg_smbcli_options(struct loadparm_context *lp_ctx, > void lpcfg_smbcli_session_options(struct loadparm_context *lp_ctx, > struct smbcli_session_options *options); > const char *lpcfg_socket_options(struct loadparm_context *); >-struct dcerpc_server_info *lpcfg_dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx); > struct gensec_settings *lpcfg_gensec_settings(TALLOC_CTX *, struct loadparm_context *); > > /* The following definitions come from param/util.c */ >diff --git a/source4/rpc_server/common/common.h b/source4/rpc_server/common/common.h >index b57ddf20db57..a002e5ffea52 100644 >--- a/source4/rpc_server/common/common.h >+++ b/source4/rpc_server/common/common.h >@@ -39,6 +39,32 @@ struct dcerpc_server_info { > uint32_t version_build; > }; > >+#ifdef AD_DC_BUILD_IS_ENABLED > #include "rpc_server/common/proto.h" >+#endif /* AD_DC_BUILD_IS_ENABLED */ >+#include "lib/param/param.h" >+ >+static inline >+struct dcerpc_server_info *lpcfg_dcerpc_server_info(TALLOC_CTX *mem_ctx, >+ struct loadparm_context *lp_ctx) >+{ >+ struct dcerpc_server_info *ret = NULL; >+ >+ ret = talloc_zero(mem_ctx, struct dcerpc_server_info); >+ if (ret == NULL) { >+ return NULL; >+ } >+ >+ ret->domain_name = talloc_strdup(ret, lpcfg_workgroup(lp_ctx)); >+ if (ret->domain_name == NULL) { >+ TALLOC_FREE(ret); >+ return NULL; >+ } >+ ret->version_major = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_major", 5); >+ ret->version_minor = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_minor", 2); >+ ret->version_build = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_build", 3790); >+ >+ return ret; >+} > > #endif /* _DCERPC_SERVER_COMMON_H_ */ >diff --git a/source4/rpc_server/common/loadparm.c b/source4/rpc_server/common/loadparm.c >deleted file mode 100644 >index 174063e48021..000000000000 >--- a/source4/rpc_server/common/loadparm.c >+++ /dev/null >@@ -1,45 +0,0 @@ >-/* >- Unix SMB/CIFS implementation. >- DCERPC server info param function >- Moved into rpc_server/common to break dependencies to rpc_server from param >- Copyright (C) Karl Auer 1993-1998 >- >- Largely re-written by Andrew Tridgell, September 1994 >- >- Copyright (C) Simo Sorce 2001 >- Copyright (C) Alexander Bokovoy 2002 >- Copyright (C) Stefan (metze) Metzmacher 2002 >- Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2003. >- Copyright (C) James Myers 2003 <myersjj@samba.org> >- Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007 >- >- 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 3 of the License, or >- (at your option) any later version. >- >- This program is distributed in the hope that it will be useful, >- but WITHOUT ANY WARRANTY; without even the implied warranty of >- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >- GNU General Public License for more details. >- >- You should have received a copy of the GNU General Public License >- along with this program. If not, see <http://www.gnu.org/licenses/>. >-*/ >- >-#include "includes.h" >-#include "lib/param/param.h" >-#include "rpc_server/common/common.h" >- >-_PUBLIC_ struct dcerpc_server_info *lpcfg_dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) >-{ >- struct dcerpc_server_info *ret = talloc_zero(mem_ctx, struct dcerpc_server_info); >- >- ret->domain_name = talloc_reference(mem_ctx, lpcfg_workgroup(lp_ctx)); >- ret->version_major = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_major", 5); >- ret->version_minor = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_minor", 2); >- ret->version_build = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_build", 3790); >- >- return ret; >-} >- >diff --git a/source4/rpc_server/wscript_build b/source4/rpc_server/wscript_build >index a3cc44a3e87d..54a10f2ba003 100644 >--- a/source4/rpc_server/wscript_build >+++ b/source4/rpc_server/wscript_build >@@ -11,7 +11,6 @@ bld.SAMBA_SUBSYSTEM('DCERPC_COMMON', > source=''' > common/server_info.c > common/forward.c >- common/loadparm.c > ''', > autoproto='common/proto.h', > deps='ldb DCERPC_SHARE', >-- >2.43.0 > > >From e4b6868ae62204eb8d6075684a65337507ee4497 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 20:04:35 +0200 >Subject: [PATCH 02/10] s4:dns_server: add dns_server_scavenging_interval() > >We currently have two options used in different locations: > >dnsserver:scavenging_interval => >the value is in seconds and is used in kccsrv_dns_zone_scavenging() > >dnsserver:ScavengingInterval => >the value is in hours and is used in dnsserver_init_serverinfo() > >In order to have this just once with a consistent default, >we have dns_server_scavenging_interval() now. > >The value of dnsserver:ScavengingInterval was only >ever used to fill the response of 'samba-tool dns serverinfo', >so we prefer dnsserver:scavenging_interval is set. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit c239af3b4d55705b96cf371cc1c34910249b2379) >--- > source4/dns_server/dnsserver_common.c | 38 +++++++++++++++++++++++++++ > source4/dns_server/dnsserver_common.h | 5 ++++ > 2 files changed, 43 insertions(+) > >diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c >index 88aed2eba8d5..52475204877d 100644 >--- a/source4/dns_server/dnsserver_common.c >+++ b/source4/dns_server/dnsserver_common.c >@@ -75,6 +75,44 @@ uint8_t werr_to_dns_err(WERROR werr) > return DNS_RCODE_SERVFAIL; > } > >+void dns_server_scavenging_interval(struct loadparm_context *lp_ctx, >+ uint32_t *_si_hours, >+ time_t *_si_secs) >+{ >+ uint32_t si_hours = 0; >+ time_t si_secs = 0; >+ >+ if (lpcfg_dns_zone_scavenging(lp_ctx)) { >+ int i_hours; >+ >+ i_hours = lpcfg_parm_int(lp_ctx, >+ NULL, >+ "dnsserver", >+ "ScavengingInterval", >+ 2); >+ i_hours = MAX(i_hours, 0); >+ i_hours = MIN(i_hours, (365*24)); >+ >+ si_secs = i_hours * (60 * 60); >+ si_secs = lpcfg_parm_int(lp_ctx, >+ NULL, >+ "dnsserver", >+ "scavenging_interval", >+ si_secs); >+ if (si_secs > 0) { >+ si_hours = si_secs / (60 * 60); >+ si_hours = MAX(si_hours, 1); >+ } >+ } >+ >+ if (_si_hours != NULL) { >+ *_si_hours = si_hours; >+ } >+ if (_si_secs != NULL) { >+ *_si_secs = si_secs; >+ } >+} >+ > WERROR dns_common_extract(struct ldb_context *samdb, > const struct ldb_message_element *el, > TALLOC_CTX *mem_ctx, >diff --git a/source4/dns_server/dnsserver_common.h b/source4/dns_server/dnsserver_common.h >index a0c1065ae581..6c30bef57fc1 100644 >--- a/source4/dns_server/dnsserver_common.h >+++ b/source4/dns_server/dnsserver_common.h >@@ -27,6 +27,7 @@ > uint8_t werr_to_dns_err(WERROR werr); > #define DNS_ERR(err_str) WERR_DNS_ERROR_RCODE_##err_str > >+struct loadparm_context; > struct ldb_message_element; > struct ldb_context; > struct dnsp_DnssrvRpcRecord; >@@ -37,6 +38,10 @@ struct dns_server_zone { > struct ldb_dn *dn; > }; > >+void dns_server_scavenging_interval(struct loadparm_context *lp_ctx, >+ uint32_t *_si_hours, >+ time_t *_si_secs); >+ > WERROR dns_common_extract(struct ldb_context *samdb, > const struct ldb_message_element *el, > TALLOC_CTX *mem_ctx, >-- >2.43.0 > > >From 6747bd5dab9aa129aa119d44db835718bef4fc0a Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 20:23:43 +0200 >Subject: [PATCH 03/10] s4:kcc: let kccsrv_dns_zone_scavenging() use > dns_server_scavenging_interval() > >It means we have the parameter logic just once >and a value of 0 means scavenging is disabled. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 03caa23a6d98fb7c252590de9ffc909407b8bdc8) >--- > source4/dsdb/kcc/kcc_periodic.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > >diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c >index df38f00e7763..42056d5bd2ab 100644 >--- a/source4/dsdb/kcc/kcc_periodic.c >+++ b/source4/dsdb/kcc/kcc_periodic.c >@@ -606,7 +606,7 @@ static NTSTATUS kccsrv_dns_zone_scavenging( > { > > time_t current_time = time(NULL); >- time_t dns_scavenge_interval; >+ time_t dns_scavenge_interval = 0; > NTSTATUS status; > char *error_string = NULL; > >@@ -614,16 +614,14 @@ static NTSTATUS kccsrv_dns_zone_scavenging( > * Only perform zone scavenging if it's been enabled. > * (it still might be disabled on all zones). > */ >- if (!lpcfg_dns_zone_scavenging(s->task->lp_ctx)) { >+ dns_server_scavenging_interval(s->task->lp_ctx, >+ NULL, /* _si_hours */ >+ &dns_scavenge_interval); >+ if (dns_scavenge_interval == 0) { > DBG_INFO("DNS scavenging not enabled\n"); > return NT_STATUS_OK; > } > >- dns_scavenge_interval = lpcfg_parm_int(s->task->lp_ctx, >- NULL, >- "dnsserver", >- "scavenging_interval", >- 2 * 60 * 60); > if ((current_time - s->last_dns_scavenge) > dns_scavenge_interval) { > s->last_dns_scavenge = current_time; > status = dns_tombstone_records(mem_ctx, s->samdb, >-- >2.43.0 > > >From 8258e501b14257522c11ee7363e3ab57365ce9c4 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 20:27:04 +0200 >Subject: [PATCH 04/10] s4:rpc_server/dnsserver: let > dnsserver_init_serverinfo() use dns_server_scavenging_interval() > >It means we have the parameter logic just once. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 312da01ed1d9c0d0b30bc4db8262e6d01b307252) >--- > source4/rpc_server/dnsserver/dnsutils.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > >diff --git a/source4/rpc_server/dnsserver/dnsutils.c b/source4/rpc_server/dnsserver/dnsutils.c >index bf3225c3e47b..e7ea282e3eb4 100644 >--- a/source4/rpc_server/dnsserver/dnsutils.c >+++ b/source4/rpc_server/dnsserver/dnsutils.c >@@ -192,8 +192,9 @@ struct dnsserver_serverinfo *dnsserver_init_serverinfo(TALLOC_CTX *mem_ctx, > serverinfo->dwDsPollingInterval = 0xB4; /* 3 minutes (default) */ > serverinfo->dwLocalNetPriorityNetMask = 0x000000FF; > >- serverinfo->dwScavengingInterval = lpcfg_parm_int( >- lp_ctx, NULL, "dnsserver", "ScavengingInterval", 24 * 7); >+ dns_server_scavenging_interval(lp_ctx, >+ &serverinfo->dwScavengingInterval, >+ NULL); /* _si_secs */ > serverinfo->dwDefaultRefreshInterval = lpcfg_parm_int( > lp_ctx, NULL, "dnsserver", "DefaultRefreshInterval", 24 * 3); > serverinfo->dwDefaultNoRefreshInterval = lpcfg_parm_int( >-- >2.43.0 > > >From 1f6774c14530cb4882a0753d2f70ec824a957714 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 21:08:30 +0200 >Subject: [PATCH 05/10] s4:rpc_server/dnsserver: define > DNS_SERVER_DEFAULT_[NO_]REFRESH_INTERVAL as 24 * 7 > >These are the defaults Windows is also using... > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 9919ae52ef611423205a140e32900d84242fc01d) >--- > source4/rpc_server/dnsserver/dnsserver.h | 16 ++++++++++++++++ > source4/rpc_server/dnsserver/dnsutils.c | 6 ++++-- > 2 files changed, 20 insertions(+), 2 deletions(-) > >diff --git a/source4/rpc_server/dnsserver/dnsserver.h b/source4/rpc_server/dnsserver/dnsserver.h >index 2e46e7c66a43..97e952a6aa64 100644 >--- a/source4/rpc_server/dnsserver/dnsserver.h >+++ b/source4/rpc_server/dnsserver/dnsserver.h >@@ -27,6 +27,22 @@ > #include "param/param.h" > #include "ldb.h" > >+/* >+ * See [MS-DNSP] 2.3.2.1.1 Property Id >+ * >+ * DSPROPERTY_ZONE_NOREFRESH_INTERVAL: >+ * The zone no refresh interval. See >+ * dwNoRefreshInterval (section 2.2.5.2.4.1). >+ * Default: 168 hours/7 days. >+ * >+ * DSPROPERTY_ZONE_REFRESH_INTERVAL: >+ * The zone refresh interval. See >+ * dwRefreshInterval (section 2.2.5.2.4.1). >+ * Default: 168 hours/7 days. >+ */ >+#define DNS_SERVER_DEFAULT_NO_REFRESH_INTERVAL (24 * 7) >+#define DNS_SERVER_DEFAULT_REFRESH_INTERVAL (24 * 7) >+ > struct dnsserver_serverinfo { > uint32_t dwVersion; > uint8_t fBootMethod; >diff --git a/source4/rpc_server/dnsserver/dnsutils.c b/source4/rpc_server/dnsserver/dnsutils.c >index e7ea282e3eb4..aae8efc9d784 100644 >--- a/source4/rpc_server/dnsserver/dnsutils.c >+++ b/source4/rpc_server/dnsserver/dnsutils.c >@@ -196,9 +196,11 @@ struct dnsserver_serverinfo *dnsserver_init_serverinfo(TALLOC_CTX *mem_ctx, > &serverinfo->dwScavengingInterval, > NULL); /* _si_secs */ > serverinfo->dwDefaultRefreshInterval = lpcfg_parm_int( >- lp_ctx, NULL, "dnsserver", "DefaultRefreshInterval", 24 * 3); >+ lp_ctx, NULL, "dnsserver", "DefaultRefreshInterval", >+ DNS_SERVER_DEFAULT_REFRESH_INTERVAL); > serverinfo->dwDefaultNoRefreshInterval = lpcfg_parm_int( >- lp_ctx, NULL, "dnsserver", "DefaultNoRefreshInterval", 24 * 3); >+ lp_ctx, NULL, "dnsserver", "DefaultNoRefreshInterval", >+ DNS_SERVER_DEFAULT_NO_REFRESH_INTERVAL); > > serverinfo->dwLastScavengeTime = 0; > >-- >2.43.0 > > >From 57520a6fa81d4c9d865dbcb61298553da74c2976 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 21:42:55 +0200 >Subject: [PATCH 06/10] s4:rpc_server/dnsserver: let dnsserver_init_zoneinfo() > fallback to serverinfo->dwDefault[No]RefreshInterval > >And disable fAging if the values are still 0. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit fdcda85ac611e2e12ab895674fed76347b5ed6d0) >--- > python/samba/tests/samba_tool/dnscmd.py | 3 ++- > source4/rpc_server/dnsserver/dnsutils.c | 21 +++++++++++++++++++++ > 2 files changed, 23 insertions(+), 1 deletion(-) > >diff --git a/python/samba/tests/samba_tool/dnscmd.py b/python/samba/tests/samba_tool/dnscmd.py >index aa475fb84ac1..4f144c17c166 100644 >--- a/python/samba/tests/samba_tool/dnscmd.py >+++ b/python/samba/tests/samba_tool/dnscmd.py >@@ -956,8 +956,9 @@ class DnsCmdTestCase(SambaToolCmdTest): > (['--aging=2', '--norefreshinterval=1'], {}, True), > (['--aging=1', '--norefreshinterval=1'], > {'fAging': 'TRUE', 'dwNoRefreshInterval': '1'}, False), >+ # setting --norefreshinterval=0 results in the server default > (['--aging=1', '--norefreshinterval=0'], >- {'fAging': 'TRUE', 'dwNoRefreshInterval': '0'}, False), >+ {'fAging': 'TRUE', 'dwNoRefreshInterval': '168'}, False), > (['--aging=0', '--norefreshinterval=99', '--refreshinterval=99'], > {'fAging': 'FALSE', > 'dwNoRefreshInterval': '99', >diff --git a/source4/rpc_server/dnsserver/dnsutils.c b/source4/rpc_server/dnsserver/dnsutils.c >index aae8efc9d784..c90e1e15106a 100644 >--- a/source4/rpc_server/dnsserver/dnsutils.c >+++ b/source4/rpc_server/dnsserver/dnsutils.c >@@ -310,6 +310,27 @@ struct dnsserver_zoneinfo *dnsserver_init_zoneinfo(struct dnsserver_zone *zone, > } > } > >+ if (strcmp(zone->name, ".") != 0) { >+ if (zoneinfo->dwRefreshInterval == 0) { >+ zoneinfo->dwRefreshInterval = >+ serverinfo->dwDefaultRefreshInterval; >+ } >+ if (zoneinfo->dwNoRefreshInterval == 0) { >+ zoneinfo->dwNoRefreshInterval = >+ serverinfo->dwDefaultNoRefreshInterval; >+ } >+ } >+ >+ /* >+ * If any value is still 0 we disable aging >+ */ >+ if (zoneinfo->dwRefreshInterval == 0) { >+ zoneinfo->fAging = 0; >+ } >+ if (zoneinfo->dwNoRefreshInterval == 0) { >+ zoneinfo->fAging = 0; >+ } >+ > return zoneinfo; > } > >-- >2.43.0 > > >From 62ff94fef94e4c3395cbe723bf0250a81dd7432d Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 21:42:01 +0200 >Subject: [PATCH 07/10] s4:dns_server: let dns_get_zone_properties() initialize > zoneinfo completely. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 9fe99c5760a1dc22a57e7bf6338a1b2244e4da6d) >--- > source4/dns_server/dnsserver_common.c | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c >index 52475204877d..ca87666b5cfb 100644 >--- a/source4/dns_server/dnsserver_common.c >+++ b/source4/dns_server/dnsserver_common.c >@@ -919,6 +919,8 @@ WERROR dns_get_zone_properties(struct ldb_context *samdb, > struct ldb_result *res = NULL; > enum ndr_err_code err; > >+ *zoneinfo = (struct dnsserver_zoneinfo) {}; >+ > ret = ldb_search(samdb, > mem_ctx, > &res, >-- >2.43.0 > > >From 0bdeb8eea7268fb0eb4e234436462ecf0a4a0db6 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 22:37:20 +0200 >Subject: [PATCH 08/10] s4:dns_server: move rpc_server/dnsserver/dnsutils.c to > dns_server/dnsserver_utils.c > >This will avoid linking problems in the following commits. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 3f97ac62727137a2b56555a821a2f1ab5113fac2) >--- > .../dnsserver/dnsutils.c => dns_server/dnsserver_utils.c} | 3 +-- > source4/dns_server/wscript_build | 4 ++-- > source4/rpc_server/tests/rpc_dns_server_dnsutils_test.c | 2 +- > source4/rpc_server/wscript_build | 1 - > 4 files changed, 4 insertions(+), 6 deletions(-) > rename source4/{rpc_server/dnsserver/dnsutils.c => dns_server/dnsserver_utils.c} (99%) > >diff --git a/source4/rpc_server/dnsserver/dnsutils.c b/source4/dns_server/dnsserver_utils.c >similarity index 99% >rename from source4/rpc_server/dnsserver/dnsutils.c >rename to source4/dns_server/dnsserver_utils.c >index c90e1e15106a..31aa4ad1442c 100644 >--- a/source4/rpc_server/dnsserver/dnsutils.c >+++ b/source4/dns_server/dnsserver_utils.c >@@ -20,13 +20,12 @@ > */ > > #include "includes.h" >-#include "dnsserver.h" >+#include "rpc_server/dnsserver/dnsserver.h" > #include "rpc_server/common/common.h" > #include "dns_server/dnsserver_common.h" > #include "dsdb/samdb/samdb.h" > #include "lib/socket/netif.h" > #include "lib/util/util_net.h" >-#include "dnsserver_common.h" > > #undef strcasecmp > >diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build >index ab0a241b937d..104135ed12cf 100644 >--- a/source4/dns_server/wscript_build >+++ b/source4/dns_server/wscript_build >@@ -4,8 +4,8 @@ > # when samba-tool is called where the ad-dc was not built. The server-side dns > # code is used in the client when we do direct LDAP modification of DNS records. > bld.SAMBA_LIBRARY('dnsserver_common', >- source='dnsserver_common.c', >- deps='samba-util samba-errors ldbsamba clidns', >+ source='dnsserver_common.c dnsserver_utils.c', >+ deps='samba-util samba-errors ldbsamba clidns netif', > private_library=True > ) > >diff --git a/source4/rpc_server/tests/rpc_dns_server_dnsutils_test.c b/source4/rpc_server/tests/rpc_dns_server_dnsutils_test.c >index 46ede51aac86..ab73bbdd2f10 100644 >--- a/source4/rpc_server/tests/rpc_dns_server_dnsutils_test.c >+++ b/source4/rpc_server/tests/rpc_dns_server_dnsutils_test.c >@@ -40,7 +40,7 @@ > #include <cmocka.h> > > >-#include "../dnsserver/dnsutils.c" >+#include "../../dns_server/dnsserver_utils.c" > > > /* >diff --git a/source4/rpc_server/wscript_build b/source4/rpc_server/wscript_build >index 54a10f2ba003..d8e7a014b87e 100644 >--- a/source4/rpc_server/wscript_build >+++ b/source4/rpc_server/wscript_build >@@ -180,7 +180,6 @@ bld.SAMBA_MODULE('dcerpc_eventlog', > bld.SAMBA_MODULE('dcerpc_dnsserver', > source=''' > dnsserver/dcerpc_dnsserver.c >- dnsserver/dnsutils.c > dnsserver/dnsdata.c > dnsserver/dnsdb.c > ''', >-- >2.43.0 > > >From 27fd6ef4e62e5398c4f2c2ad14034873ef31bc3d Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 21:47:56 +0200 >Subject: [PATCH 09/10] s4:dns_server: let dns_get_zone_properties() fallback > to serverinfo->dwDefault[No]RefreshInterval > >And disable fAging if the values are still 0. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> >(cherry picked from commit 1146df4c532834481a67cbcf5c7bc8142dfe9875) >--- > source4/dns_server/dnsserver_common.c | 33 ++++++++++++++++++++++++++- > 1 file changed, 32 insertions(+), 1 deletion(-) > >diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c >index ca87666b5cfb..bf22ebf28311 100644 >--- a/source4/dns_server/dnsserver_common.c >+++ b/source4/dns_server/dnsserver_common.c >@@ -911,7 +911,10 @@ WERROR dns_get_zone_properties(struct ldb_context *samdb, > struct ldb_dn *zone_dn, > struct dnsserver_zoneinfo *zoneinfo) > { >- >+ struct loadparm_context *lp_ctx = >+ talloc_get_type_abort(ldb_get_opaque(samdb, "loadparm"), >+ struct loadparm_context); >+ struct dnsserver_serverinfo *serverinfo = NULL; > int ret, i; > struct dnsp_DnsProperty *prop = NULL; > struct ldb_message_element *element = NULL; >@@ -921,6 +924,12 @@ WERROR dns_get_zone_properties(struct ldb_context *samdb, > > *zoneinfo = (struct dnsserver_zoneinfo) {}; > >+ serverinfo = dnsserver_init_serverinfo(mem_ctx, lp_ctx, samdb); >+ if (serverinfo == NULL) { >+ DBG_ERR("dnsserver_init_serverinfo() failed\n"); >+ return DNS_ERR(SERVER_FAILURE); >+ } >+ > ret = ldb_search(samdb, > mem_ctx, > &res, >@@ -968,6 +977,28 @@ WERROR dns_get_zone_properties(struct ldb_context *samdb, > } > } > >+ /* >+ * Fallback to the defaults >+ */ >+ if (zoneinfo->dwRefreshInterval == 0) { >+ zoneinfo->dwRefreshInterval = >+ serverinfo->dwDefaultRefreshInterval; >+ } >+ if (zoneinfo->dwNoRefreshInterval == 0) { >+ zoneinfo->dwNoRefreshInterval = >+ serverinfo->dwDefaultNoRefreshInterval; >+ } >+ >+ /* >+ * If any value is still 0 we disable aging >+ */ >+ if (zoneinfo->dwRefreshInterval == 0) { >+ zoneinfo->fAging = 0; >+ } >+ if (zoneinfo->dwNoRefreshInterval == 0) { >+ zoneinfo->fAging = 0; >+ } >+ > return WERR_OK; > } > >-- >2.43.0 > > >From af6738b08aa043a8b0003ae649da6a85efe46d51 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Wed, 19 Aug 2026 23:34:53 +0200 >Subject: [PATCH 10/10] s4:kcc: let dns_tombstone_records_zone() skip if fAging > is not 1 > >This means we only do scavenging if the dw[No]RefreshInterval related >logic in dns_common_replace() is triggered and dwTimeStamp has >a chance to be updated before. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=16223 > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Reviewed-by: Volker Lendecke <vl@samba.org> > >Autobuild-User(master): Stefan Metzmacher <metze@samba.org> >Autobuild-Date(master): Tue Aug 25 12:14:04 UTC 2026 on atb-devel-224 > >(cherry picked from commit 2cf29c3c95aa4c6bdd645e34fdf521f9bcb91538) >--- > source4/dsdb/kcc/scavenge_dns_records.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > >diff --git a/source4/dsdb/kcc/scavenge_dns_records.c b/source4/dsdb/kcc/scavenge_dns_records.c >index 0a5016fa62bc..3882cb566553 100644 >--- a/source4/dsdb/kcc/scavenge_dns_records.c >+++ b/source4/dsdb/kcc/scavenge_dns_records.c >@@ -143,6 +143,22 @@ static NTSTATUS dns_tombstone_records_zone(TALLOC_CTX *mem_ctx, > return NT_STATUS_INTERNAL_ERROR; > } > >+ if (zi->fAging != 1) { >+ /* >+ * Don't do scavenging if aging is not enabled >+ * zi->dwNoRefreshInterval + zi->dwRefreshInterval >+ * might be zero... >+ */ >+ DBG_INFO("ZONE[%s] fAging=%"PRIu32" " >+ "dwNoRefreshInterval=%"PRIu32" " >+ "dwRefreshInterval=%"PRIu32" - skipping\n", >+ zone->name, >+ zi->fAging, >+ zi->dwNoRefreshInterval, >+ zi->dwRefreshInterval); >+ return NT_STATUS_PROPSET_NOT_FOUND; >+ } >+ > /* Subtract them from current time to get the earliest possible. > * timestamp allowed for a non-expired DNS record. */ > dns_timestamp -= zi->dwNoRefreshInterval + zi->dwRefreshInterval; >-- >2.43.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
vl
:
review+
Actions:
View
Attachments on
bug 16223
: 19181 |
19182
|
19183