mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-22 23:01:43 -04:00
1515. [func] Allow transfer source to be set in a server statement.
[RT #6496]
This commit is contained in:
parent
867759d584
commit
608740d240
4 changed files with 42 additions and 7 deletions
3
CHANGES
3
CHANGES
|
|
@ -21,6 +21,9 @@
|
|||
1517. [port] Support for IPv6 interface scanning on HP/UX and
|
||||
TrueUNIX 5.1.
|
||||
|
||||
1515. [func] Allow transfer source to be set in a server statement.
|
||||
[RT #6496]
|
||||
|
||||
1514. [bug] named: isc_hash_destroy() was being called too early.
|
||||
[RT #9160]
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.c,v 1.339.2.15.2.34 2003/10/15 05:32:10 marka Exp $ */
|
||||
/* $Id: server.c,v 1.339.2.15.2.35 2003/10/21 05:49:17 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -561,6 +561,18 @@ configure_peer(cfg_obj_t *cpeer, isc_mem_t *mctx, dns_peer_t **peerp) {
|
|||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
obj = NULL;
|
||||
if (isc_sockaddr_pf(sa) == AF_INET)
|
||||
(void)cfg_map_get(cpeer, "transfer-source", &obj);
|
||||
else
|
||||
(void)cfg_map_get(cpeer, "transfer-source-v6", &obj);
|
||||
if (obj != NULL) {
|
||||
result = dns_peer_settransfersource(peer,
|
||||
cfg_obj_assockaddr(obj));
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
}
|
||||
*peerp = peer;
|
||||
return (ISC_R_SUCCESS);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: check.c,v 1.37.6.19 2003/10/10 06:24:32 marka Exp $ */
|
||||
/* $Id: check.c,v 1.37.6.20 2003/10/21 05:49:18 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -806,10 +806,30 @@ check_servers(cfg_obj_t *servers, isc_log_t *logctx) {
|
|||
cfg_obj_t *v1, *v2;
|
||||
isc_sockaddr_t *s1, *s2;
|
||||
isc_netaddr_t na;
|
||||
cfg_obj_t *ts;
|
||||
char buf[128];
|
||||
const char *xfr;
|
||||
isc_buffer_t target;
|
||||
|
||||
for (e1 = cfg_list_first(servers); e1 != NULL; e1 = cfg_list_next(e1)) {
|
||||
v1 = cfg_listelt_value(e1);
|
||||
s1 = cfg_obj_assockaddr(cfg_map_getname(v1));
|
||||
ts = NULL;
|
||||
if (isc_sockaddr_pf(s1) == AF_INET)
|
||||
xfr = "transfer-source-v6";
|
||||
else
|
||||
xfr = "transfer-source";
|
||||
(void)cfg_map_get(v1, xfr, &ts);
|
||||
if (ts != NULL) {
|
||||
isc_netaddr_fromsockaddr(&na, s1);
|
||||
isc_buffer_init(&target, buf, sizeof(buf) - 1);
|
||||
RUNTIME_CHECK(isc_netaddr_totext(&na, &target)
|
||||
== ISC_R_SUCCESS);
|
||||
buf[isc_buffer_usedlength(&target)] = '\0';
|
||||
cfg_obj_log(v1, logctx, ISC_LOG_ERROR,
|
||||
"server '%s': %s not valid", buf, xfr);
|
||||
result = ISC_R_FAILURE;
|
||||
}
|
||||
e2 = e1;
|
||||
while ((e2 = cfg_list_next(e2)) != NULL) {
|
||||
v2 = cfg_listelt_value(e2);
|
||||
|
|
@ -817,8 +837,6 @@ check_servers(cfg_obj_t *servers, isc_log_t *logctx) {
|
|||
if (isc_sockaddr_eqaddr(s1, s2)) {
|
||||
const char *file = cfg_obj_file(v1);
|
||||
unsigned int line = cfg_obj_line(v1);
|
||||
isc_buffer_t target;
|
||||
char buf[128];
|
||||
|
||||
if (file == NULL)
|
||||
file = "<unknown file>";
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: namedconf.c,v 1.21.44.19 2003/10/10 06:39:47 marka Exp $ */
|
||||
/* $Id: namedconf.c,v 1.21.44.20 2003/10/21 05:49:19 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
|
@ -829,6 +829,8 @@ server_clauses[] = {
|
|||
{ "transfer-format", &cfg_type_transferformat, 0 },
|
||||
{ "keys", &cfg_type_server_key_kludge, 0 },
|
||||
{ "edns", &cfg_type_boolean, 0 },
|
||||
{ "transfer-source", &cfg_type_sockaddr4wild, 0 },
|
||||
{ "transfer-source-v6", &cfg_type_sockaddr6wild, 0 },
|
||||
{ NULL, NULL, 0 }
|
||||
};
|
||||
static cfg_clausedef_t *
|
||||
|
|
@ -1584,8 +1586,8 @@ static cfg_type_t cfg_type_sockaddr4wild = {
|
|||
|
||||
static unsigned int sockaddr6wild_flags = CFG_ADDR_WILDOK | CFG_ADDR_V6OK;
|
||||
static cfg_type_t cfg_type_sockaddr6wild = {
|
||||
"v6addrportwild", cfg_parse_sockaddr, cfg_print_sockaddr, cfg_doc_sockaddr,
|
||||
&cfg_rep_sockaddr, &sockaddr6wild_flags
|
||||
"v6addrportwild", cfg_parse_sockaddr, cfg_print_sockaddr,
|
||||
cfg_doc_sockaddr, &cfg_rep_sockaddr, &sockaddr6wild_flags
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue