2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-03 16:15:27 +00:00

dns_getname_origin nor returns (dns_name_t *) again.

This commit is contained in:
Mark Andrews
1999-10-14 00:47:01 +00:00
parent e2b0388d7c
commit f182ffaba7
3 changed files with 15 additions and 46 deletions

View File

@@ -120,7 +120,7 @@ dns_result_t dns_zone_setorigin(dns_zone_t *zone, char *origin);
* All possible values from dns_name_fromtext(). * All possible values from dns_name_fromtext().
*/ */
dns_result_t dns_zone_getorigin(dns_zone_t *zone, isc_mem_t *mctx, dns_name_t *name); dns_name_t * dns_zone_getorigin(dns_zone_t *zone);
/* /*
* Returns the value of the origin. * Returns the value of the origin.
* *

View File

@@ -15,7 +15,7 @@
* SOFTWARE. * SOFTWARE.
*/ */
/* $Id: zone.c,v 1.19 1999/10/13 23:32:02 marka Exp $ */ /* $Id: zone.c,v 1.20 1999/10/14 00:46:58 marka Exp $ */
#include <config.h> #include <config.h>
@@ -2274,7 +2274,7 @@ isc_result_t
dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview, dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview,
void *uap) { void *uap) {
dns_zone_callbackarg_t *cba = uap; dns_zone_callbackarg_t *cba = uap;
dns_name_t name; dns_name_t *name = NULL;
dns_view_t *oldview = NULL; dns_view_t *oldview = NULL;
dns_zone_t *oldzone = NULL; dns_zone_t *oldzone = NULL;
dns_view_t *newview = NULL; dns_view_t *newview = NULL;
@@ -2287,11 +2287,6 @@ dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview,
REQUIRE(czone != NULL); REQUIRE(czone != NULL);
REQUIRE(cba != NULL); REQUIRE(cba != NULL);
/*
* Initialization.
*/
dns_name_init(&name, NULL);
/* /*
* Find views by name. * Find views by name.
*/ */
@@ -2335,12 +2330,10 @@ dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview,
/* /*
* Find zone in mount table. * Find zone in mount table.
*/ */
result = dns_zone_getorigin(newzone, cba->mctx, &name); name = dns_zone_getorigin(newzone);
if (result != DNS_R_SUCCESS)
goto cleanup;
dns_zone_print(newzone); dns_zone_print(newzone);
result = dns_zt_find(newview->zonetable, &name, NULL, &tmpzone); result = dns_zt_find(newview->zonetable, name, NULL, &tmpzone);
if (result == DNS_R_SUCCESS) { if (result == DNS_R_SUCCESS) {
printf("zone already exists=\n"); printf("zone already exists=\n");
result = DNS_R_EXISTS; result = DNS_R_EXISTS;
@@ -2349,7 +2342,7 @@ dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview,
goto cleanup; goto cleanup;
if (oldview != NULL) if (oldview != NULL)
result = dns_zt_find(oldview->zonetable, &name, NULL, &oldzone); result = dns_zt_find(oldview->zonetable, name, NULL, &oldzone);
else else
result = DNS_R_NOTFOUND; result = DNS_R_NOTFOUND;
@@ -2374,8 +2367,6 @@ dns_zone_callback(dns_c_ctx_t *cfg, dns_c_zone_t *czone, dns_c_view_t *cview,
} }
cleanup: cleanup:
if (dns_name_dynamic(&name))
dns_name_free(&name, cba->mctx);
if (tmpzone != NULL) if (tmpzone != NULL)
dns_zone_detach(&tmpzone); dns_zone_detach(&tmpzone);
if (newzone != NULL) if (newzone != NULL)
@@ -2956,11 +2947,11 @@ dns_zonetype_t dns_zone_gettype(dns_zone_t *zone) {
return (zone->type); return (zone->type);
} }
dns_result_t dns_name_t *
dns_zone_getorigin(dns_zone_t *zone, isc_mem_t *mctx, dns_name_t *name) { dns_zone_getorigin(dns_zone_t *zone) {
REQUIRE(DNS_ZONE_VALID(zone)); REQUIRE(DNS_ZONE_VALID(zone));
return (dns_name_dup(&zone->origin, mctx, name)); return (&zone->origin);
} }
isc_task_t *dns_zone_gettask(dns_zone_t *zone) { isc_task_t *dns_zone_gettask(dns_zone_t *zone) {

View File

@@ -88,60 +88,38 @@ isc_result_t
dns_zt_mount(dns_zt_t *zt, dns_zone_t *zone) { dns_zt_mount(dns_zt_t *zt, dns_zone_t *zone) {
isc_result_t result; isc_result_t result;
dns_zone_t *dummy = NULL; dns_zone_t *dummy = NULL;
dns_name_t name; dns_name_t *name;
REQUIRE(VALID_ZT(zt)); REQUIRE(VALID_ZT(zt));
/* name = dns_zone_getorigin(zone);
* XXXRTH I don't understand why dns_zone_getorigin() is
* returning a dup'd name. I think we should make it
* return a pointer to the name in the zone structure
* and let the caller dup it if they need to.
*/
dns_name_init(&name, NULL);
result = dns_zone_getorigin(zone, zt->mctx, &name);
if (result != DNS_R_SUCCESS)
return (result);
RWLOCK(&zt->rwlock, isc_rwlocktype_write); RWLOCK(&zt->rwlock, isc_rwlocktype_write);
result = dns_rbt_addname(zt->table, &name, zone); result = dns_rbt_addname(zt->table, name, zone);
if (result == ISC_R_SUCCESS) if (result == ISC_R_SUCCESS)
dns_zone_attach(zone, &dummy); dns_zone_attach(zone, &dummy);
RWUNLOCK(&zt->rwlock, isc_rwlocktype_write); RWUNLOCK(&zt->rwlock, isc_rwlocktype_write);
dns_name_free(&name, zt->mctx);
return (result); return (result);
} }
isc_result_t isc_result_t
dns_zt_unmount(dns_zt_t *zt, dns_zone_t *zone) { dns_zt_unmount(dns_zt_t *zt, dns_zone_t *zone) {
isc_result_t result; isc_result_t result;
dns_name_t name; dns_name_t *name;
REQUIRE(VALID_ZT(zt)); REQUIRE(VALID_ZT(zt));
/* name = dns_zone_getorigin(zone);
* XXXRTH I don't understand why dns_zone_getorigin() is
* returning a dup'd name. I think we should make it
* return a pointer to the name in the zone structure
* and let the caller dup it if they need to.
*/
dns_name_init(&name, NULL);
result = dns_zone_getorigin(zone, zt->mctx, &name);
if (result != DNS_R_SUCCESS)
return (result);
RWLOCK(&zt->rwlock, isc_rwlocktype_write); RWLOCK(&zt->rwlock, isc_rwlocktype_write);
result = dns_rbt_deletename(zt->table, &name, ISC_FALSE); result = dns_rbt_deletename(zt->table, name, ISC_FALSE);
RWUNLOCK(&zt->rwlock, isc_rwlocktype_write); RWUNLOCK(&zt->rwlock, isc_rwlocktype_write);
dns_name_free(&name, zt->mctx);
return (result); return (result);
} }