zt.c revision 4a80a005507e0f69135a6e6fe45718e84cdf8c56
c10fda07d68c04221c2d552dc71a2de1352074cbTinderbox User * Copyright (C) 1999 Internet Software Consortium.
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * Permission to use, copy, modify, and distribute this software for any
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * purpose with or without fee is hereby granted, provided that the above
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * copyright notice and this permission notice appear in all copies.
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉#define VALID_ZT(zt) ISC_MAGIC_VALID(zt, ZTMAGIC)
8907d8fa04fdaa65baf0bc6b01230b2ebde93106Mark Andrewsstatic void auto_detach(void *, void *);
8907d8fa04fdaa65baf0bc6b01230b2ebde93106Mark Andrewsdns_zt_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, dns_zt_t **zt) {
8907d8fa04fdaa65baf0bc6b01230b2ebde93106Mark Andrews result = dns_rbt_create(mctx, auto_detach, NULL, &new->table);
bfcc5ae79a46c5c55e6cf1a9fe4d70a957712d2bTatuya JINMEI 神明達哉 "isc_lock_init() failed: %s",
2fff8b8280779a25fbdb891b2d3d9b435d2084f0Tatuya JINMEI 神明達哉dns_zt_mount(dns_zt_t *zt, dns_zone_t *zone) {
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 result = dns_zone_getorigin(zone, zt->mctx, &name);
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 result = dns_rbt_addname(zt->table, &name, zone);
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉dns_zt_unmount(dns_zt_t *zt, dns_zone_t *zone) {
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 result = dns_zone_getorigin(zone, zt->mctx, &name);
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 result = dns_rbt_deletename(zt->table, &name, ISC_FALSE);
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉dns_zt_find(dns_zt_t *zt, dns_name_t *name, dns_name_t *foundname,
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 result = dns_rbt_findname(zt->table, name, foundname, (void **)&dummy);
7c60401dbd4dce617dffc685c269fca224c589adTatuya JINMEI 神明達哉 if (result == DNS_R_SUCCESS || result == DNS_R_PARTIALMATCH)
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉dns_zt_attach(dns_zt_t *zt, dns_zt_t **ztp) {
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉 result = dns_rbtnodechain_first(&chain, zt->table, NULL, NULL);
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉 while (result == DNS_R_NEWORIGIN || result == DNS_R_SUCCESS) {
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉 result = dns_rbtnodechain_current(&chain, NULL, NULL,
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉 result = dns_rbtnodechain_next(&chain, NULL, NULL);
d9059b0c38bd630c367d81424d72b1308cd74b04Tatuya JINMEI 神明達哉 result = dns_rbtnodechain_first(&chain, zt->table, NULL, NULL);
dd2a0a6d2dec1c23787351e51b434a838dec5603Evan Hunt while (result == DNS_R_NEWORIGIN || result == DNS_R_SUCCESS) {
dd2a0a6d2dec1c23787351e51b434a838dec5603Evan Hunt result = dns_rbtnodechain_current(&chain, NULL, NULL,