s3 move the sitename cache in its own file
authorSimo Sorce <idra@samba.org>
Tue, 23 Feb 2010 16:11:37 +0000 (11:11 -0500)
committerSimo Sorce <idra@samba.org>
Tue, 23 Feb 2010 17:46:26 +0000 (12:46 -0500)
source3/Makefile.in
source3/include/proto.h
source3/libads/dns.c
source3/libads/ldap.c
source3/libads/sitename_cache.c [new file with mode: 0644]
source3/libads/sitename_cache.h [new file with mode: 0644]
source3/libsmb/dsgetdcname.c
source3/libsmb/namequery.c
source3/libsmb/namequery_dc.c
source3/utils/net_lookup.c
source3/winbindd/winbindd_cm.c

index c4093084c46afc7478958232e4fe3a43a11af7ad..e966023a1ab5078e53a5e12b532dfabc9c782b8d 100644 (file)
@@ -464,7 +464,8 @@ LIBNBT_OBJ = ../libcli/nbt/nbtname.o \
             ../librpc/ndr/ndr_svcctl.o
 
 LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \
-            libsmb/namequery.o ../libcli/nbt/lmhosts.o libsmb/conncache.o libads/dns.o
+            libsmb/namequery.o ../libcli/nbt/lmhosts.o libsmb/conncache.o \
+            libads/dns.o libads/sitename_cache.o
 
 NTERR_OBJ = libsmb/nterr.o libsmb/smberr.o
 DOSERR_OBJ = ../libcli/util/doserr.o
index ca1a38ba247508fb4e1d1e9462a99fed8b238ad3..f8c3032ff13137e4b55997d72beeeab587304f5b 100644 (file)
@@ -1748,9 +1748,6 @@ NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx,
                                const char *dnsdomain,
                                struct dns_rr_ns **nslist,
                                int *numns);
-bool sitename_store(const char *realm, const char *sitename);
-char *sitename_fetch(const char *realm);
-bool stored_sitename_changed(const char *realm, const char *sitename);
 NTSTATUS ads_dns_query_dcs(TALLOC_CTX *ctx,
                           const char *realm,
                           const char *sitename,
index 2fa6f18c77e390a2aeeb2a044cc5ebfa16ab2643..dc573e3a462b8ba66203ab766e8c3284d6f88654 100644 (file)
@@ -726,119 +726,6 @@ NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx,
        return NT_STATUS_OK;
 }
 
-/****************************************************************************
- Store and fetch the AD client sitename.
-****************************************************************************/
-
-#define SITENAME_KEY   "AD_SITENAME/DOMAIN/%s"
-
-static char *sitename_key(const char *realm)
-{
-       char *keystr;
-
-       if (asprintf_strupper_m(&keystr, SITENAME_KEY, realm) == -1) {
-               return NULL;
-       }
-
-       return keystr;
-}
-
-
-/****************************************************************************
- Store the AD client sitename.
- We store indefinately as every new CLDAP query will re-write this.
-****************************************************************************/
-
-bool sitename_store(const char *realm, const char *sitename)
-{
-       time_t expire;
-       bool ret = False;
-       char *key;
-
-       if (!realm || (strlen(realm) == 0)) {
-               DEBUG(0,("sitename_store: no realm\n"));
-               return False;
-       }
-
-       key = sitename_key(realm);
-
-       if (!sitename || (sitename && !*sitename)) {
-               DEBUG(5,("sitename_store: deleting empty sitename!\n"));
-               ret = gencache_del(key);
-               SAFE_FREE(key);
-               return ret;
-       }
-
-       expire = get_time_t_max(); /* Store indefinately. */
-
-       DEBUG(10,("sitename_store: realm = [%s], sitename = [%s], expire = [%u]\n",
-               realm, sitename, (unsigned int)expire ));
-
-       ret = gencache_set( key, sitename, expire );
-       SAFE_FREE(key);
-       return ret;
-}
-
-/****************************************************************************
- Fetch the AD client sitename.
- Caller must free.
-****************************************************************************/
-
-char *sitename_fetch(const char *realm)
-{
-       char *sitename = NULL;
-       time_t timeout;
-       bool ret = False;
-       const char *query_realm;
-       char *key;
-
-       if (!realm || (strlen(realm) == 0)) {
-               query_realm = lp_realm();
-       } else {
-               query_realm = realm;
-       }
-
-       key = sitename_key(query_realm);
-
-       ret = gencache_get( key, &sitename, &timeout );
-       SAFE_FREE(key);
-       if ( !ret ) {
-               DEBUG(5,("sitename_fetch: No stored sitename for %s\n",
-                       query_realm));
-       } else {
-               DEBUG(5,("sitename_fetch: Returning sitename for %s: \"%s\"\n",
-                       query_realm, sitename ));
-       }
-       return sitename;
-}
-
-/****************************************************************************
- Did the sitename change ?
-****************************************************************************/
-
-bool stored_sitename_changed(const char *realm, const char *sitename)
-{
-       bool ret = False;
-
-       char *new_sitename;
-
-       if (!realm || (strlen(realm) == 0)) {
-               DEBUG(0,("stored_sitename_changed: no realm\n"));
-               return False;
-       }
-
-       new_sitename = sitename_fetch(realm);
-
-       if (sitename && new_sitename && !strequal(sitename, new_sitename)) {
-               ret = True;
-       } else if ((sitename && !new_sitename) ||
-                       (!sitename && new_sitename)) {
-               ret = True;
-       }
-       SAFE_FREE(new_sitename);
-       return ret;
-}
-
 /********************************************************************
  Query with optional sitename.
 ********************************************************************/
index 33d22d04ec91b59d1329bd6e40d047fbf8ec462a..df45be5f8a51093873d60bbd5f44c58c3432a54a 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "includes.h"
 #include "lib/ldb/include/ldb.h"
+#include "libads/sitename_cache.h"
 
 #ifdef HAVE_LDAP
 
diff --git a/source3/libads/sitename_cache.c b/source3/libads/sitename_cache.c
new file mode 100644 (file)
index 0000000..cb1bae5
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+   Unix SMB/CIFS implementation.
+   DNS utility library
+   Copyright (C) Gerald (Jerry) Carter           2006.
+   Copyright (C) Jeremy Allison                  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 "libads/sitename_cache.h"
+
+/****************************************************************************
+ Store and fetch the AD client sitename.
+****************************************************************************/
+
+#define SITENAME_KEY   "AD_SITENAME/DOMAIN/%s"
+
+static char *sitename_key(const char *realm)
+{
+       char *keystr;
+
+       if (asprintf_strupper_m(&keystr, SITENAME_KEY, realm) == -1) {
+               return NULL;
+       }
+
+       return keystr;
+}
+
+
+/****************************************************************************
+ Store the AD client sitename.
+ We store indefinately as every new CLDAP query will re-write this.
+****************************************************************************/
+
+bool sitename_store(const char *realm, const char *sitename)
+{
+       time_t expire;
+       bool ret = False;
+       char *key;
+
+       if (!realm || (strlen(realm) == 0)) {
+               DEBUG(0,("sitename_store: no realm\n"));
+               return False;
+       }
+
+       key = sitename_key(realm);
+
+       if (!sitename || (sitename && !*sitename)) {
+               DEBUG(5,("sitename_store: deleting empty sitename!\n"));
+               ret = gencache_del(key);
+               SAFE_FREE(key);
+               return ret;
+       }
+
+       expire = get_time_t_max(); /* Store indefinately. */
+
+       DEBUG(10,("sitename_store: realm = [%s], sitename = [%s], expire = [%u]\n",
+               realm, sitename, (unsigned int)expire ));
+
+       ret = gencache_set( key, sitename, expire );
+       SAFE_FREE(key);
+       return ret;
+}
+
+/****************************************************************************
+ Fetch the AD client sitename.
+ Caller must free.
+****************************************************************************/
+
+char *sitename_fetch(const char *realm)
+{
+       char *sitename = NULL;
+       time_t timeout;
+       bool ret = False;
+       const char *query_realm;
+       char *key;
+
+       if (!realm || (strlen(realm) == 0)) {
+               query_realm = lp_realm();
+       } else {
+               query_realm = realm;
+       }
+
+       key = sitename_key(query_realm);
+
+       ret = gencache_get( key, &sitename, &timeout );
+       SAFE_FREE(key);
+       if ( !ret ) {
+               DEBUG(5,("sitename_fetch: No stored sitename for %s\n",
+                       query_realm));
+       } else {
+               DEBUG(5,("sitename_fetch: Returning sitename for %s: \"%s\"\n",
+                       query_realm, sitename ));
+       }
+       return sitename;
+}
+
+/****************************************************************************
+ Did the sitename change ?
+****************************************************************************/
+
+bool stored_sitename_changed(const char *realm, const char *sitename)
+{
+       bool ret = False;
+
+       char *new_sitename;
+
+       if (!realm || (strlen(realm) == 0)) {
+               DEBUG(0,("stored_sitename_changed: no realm\n"));
+               return False;
+       }
+
+       new_sitename = sitename_fetch(realm);
+
+       if (sitename && new_sitename && !strequal(sitename, new_sitename)) {
+               ret = True;
+       } else if ((sitename && !new_sitename) ||
+                       (!sitename && new_sitename)) {
+               ret = True;
+       }
+       SAFE_FREE(new_sitename);
+       return ret;
+}
+
diff --git a/source3/libads/sitename_cache.h b/source3/libads/sitename_cache.h
new file mode 100644 (file)
index 0000000..4e62f00
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+   Unix SMB/CIFS implementation.
+   DNS utility library
+   Copyright (C) Gerald (Jerry) Carter           2006.
+   Copyright (C) Jeremy Allison                  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/>.
+*/
+
+#ifndef _LIBADS_SITENAME_CACHE_H_
+#define _LIBADS_SITENAME_CACHE_H_
+
+bool sitename_store(const char *realm, const char *sitename);
+char *sitename_fetch(const char *realm);
+bool stored_sitename_changed(const char *realm, const char *sitename);
+
+#endif /* _LIBADS_SITENAME_CACHE_H_ */
index 00339d2d3286439db487bb587a39bc0121f070ad..6e67e050fea517cf8befde6dc82569dbc8059a47 100644 (file)
@@ -21,6 +21,7 @@
 */
 
 #include "includes.h"
+#include "libads/sitename_cache.h"
 
 #define DSGETDCNAME_FMT        "DSGETDCNAME/DOMAIN/%s"
 /* 15 minutes */
index ed718ce53613e6177cd0bfb9641ebf2ab1295743..a77f5e4b466ab024a5dcc71f7358b55daeda88df 100644 (file)
@@ -19,6 +19,7 @@
 */
 
 #include "includes.h"
+#include "libads/sitename_cache.h"
 
 /* nmbd.c sets this to True. */
 bool global_in_nmbd = False;
index 7b0748f86bbdcf4e7ee52e96aa6e04ea61c47ef8..3b3470dcf316ec02b5a9361cd37bb6667c8f1a6d 100644 (file)
@@ -23,6 +23,7 @@
 
 
 #include "includes.h"
+#include "libads/sitename_cache.h"
 
 /**********************************************************************
  Is this our primary domain ?
index 658e904f59bb6dd2ea7c315bf274cc4acabc1a29..102f1b263f2020ddf8179c2fa081bb16b254ab92 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "includes.h"
 #include "utils/net.h"
+#include "libads/sitename_cache.h"
 
 int net_lookup_usage(struct net_context *c, int argc, const char **argv)
 {
index ed06dde2fff81300fceb9f8c6f3c30f351024e6f..6bdeac1bd7b3a9463b5b304f90579b53eb4aaf20 100644 (file)
@@ -65,6 +65,7 @@
 #include "../librpc/gen_ndr/cli_samr.h"
 #include "../librpc/gen_ndr/cli_lsa.h"
 #include "../librpc/gen_ndr/cli_dssetup.h"
+#include "libads/sitename_cache.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND