diff options
-rw-r--r-- | cache.c | 19 | ||||
-rw-r--r-- | cache.h | 6 |
2 files changed, 25 insertions, 0 deletions
@@ -192,3 +192,22 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, cleanup: return result; } + +isc_result_t +discard_from_cache(ldap_cache_t *cache, dns_name_t *name) +{ + isc_result_t result; + + REQUIRE(cache != NULL); + REQUIRE(name != NULL); + + if (cache->rbt == NULL) + result = ISC_R_SUCCESS; + else + result = dns_rbt_deletename(cache->rbt, name, ISC_FALSE); + + if (result == ISC_R_NOTFOUND) + result = ISC_R_SUCCESS; + + return result; +} @@ -48,5 +48,11 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, ldap_db_t *ldap_db, dns_name_t *name, ldapdb_rdatalist_t *rdatalist); +/* + * Discard 'name' from the cache. If caching is not really turned on or 'name' + * is not cached, this function will still return ISC_R_SUCCESS. + */ +isc_result_t +discard_from_cache(ldap_cache_t *cache, dns_name_t *name); #endif /* !_LD_CACHE_H_ */ |