isc_result_t dns_peer_getrequestixfr(dns_peer_t *peer, isc_boolean_t *retval) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(retval != NULL); if (DNS_BIT_CHECK(REQUEST_IXFR_BIT, &peer->bitflags)) { *retval = peer->request_ixfr; return (ISC_R_SUCCESS); } else return (ISC_R_NOTFOUND); }
isc_result_t dns_peer_getbogus(dns_peer_t *peer, isc_boolean_t *retval) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(retval != NULL); if (DNS_BIT_CHECK(BOGUS_BIT, &peer->bitflags)) { *retval = peer->bogus; return (ISC_R_SUCCESS); } else return (ISC_R_NOTFOUND); }
isc_result_t dns_peer_getprovideixfr(dns_peer_t *peer, isc_boolean_t *retval) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(retval != NULL); if (DNS_BIT_CHECK(PROVIDE_IXFR_BIT, &peer->bitflags)) { *retval = peer->provide_ixfr; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
isc_result_t dns_peer_gettransferformat(dns_peer_t *peer, dns_transfer_format_t *retval) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(retval != NULL); if (DNS_BIT_CHECK(SERVER_TRANSFER_FORMAT_BIT, &peer->bitflags)) { *retval = peer->transfer_format; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
isc_result_t dns_peer_gettransfers(dns_peer_t *peer, isc_uint32_t *retval) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(retval != NULL); if (DNS_BIT_CHECK(TRANSFERS_BIT, &peer->bitflags)) { *retval = peer->transfers; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
void dns_peer_attach(dns_peer_t *source, dns_peer_t **target) { REQUIRE(DNS_PEER_VALID(source)); REQUIRE(target != NULL); REQUIRE(*target == NULL); source->refs++; ENSURE(source->refs != 0xffffffffU); *target = source; }
isc_result_t dns_peer_setsupportedns(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SUPPORT_EDNS_BIT, &peer->bitflags); peer->support_edns = newval; DNS_BIT_SET(SUPPORT_EDNS_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setsendcookie(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SEND_COOKIE_BIT, &peer->bitflags); peer->send_cookie = newval; DNS_BIT_SET(SEND_COOKIE_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setprovideixfr(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(PROVIDE_IXFR_BIT, &peer->bitflags); peer->provide_ixfr = newval; DNS_BIT_SET(PROVIDE_IXFR_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setbogus(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(BOGUS_BIT, &peer->bitflags); peer->bogus = newval; DNS_BIT_SET(BOGUS_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setforcetcp(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(FORCE_TCP_BIT, &peer->bitflags); peer->force_tcp = newval; DNS_BIT_SET(FORCE_TCP_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_getpadding(dns_peer_t *peer, isc_uint16_t *padding) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(padding != NULL); if (DNS_BIT_CHECK(SERVER_PADDING_BIT, &peer->bitflags)) { *padding = peer->padding; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
isc_result_t dns_peer_settransfers(dns_peer_t *peer, isc_uint32_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(TRANSFERS_BIT, &peer->bitflags); peer->transfers = newval; DNS_BIT_SET(TRANSFERS_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setrequestsit(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(REQUEST_SIT_BIT, &peer->bitflags); peer->request_sit = newval; DNS_BIT_SET(REQUEST_SIT_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_getmaxudp(dns_peer_t *peer, isc_uint16_t *maxudp) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(maxudp != NULL); if (DNS_BIT_CHECK(SERVER_MAXUDP_BIT, &peer->bitflags)) { *maxudp = peer->maxudp; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
isc_result_t dns_peer_settcpkeepalive(dns_peer_t *peer, isc_boolean_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(REQUEST_TCP_KEEPALIVE_BIT, &peer->bitflags); peer->tcp_keepalive = newval; DNS_BIT_SET(REQUEST_TCP_KEEPALIVE_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_getudpsize(dns_peer_t *peer, isc_uint16_t *udpsize) { REQUIRE(DNS_PEER_VALID(peer)); REQUIRE(udpsize != NULL); if (DNS_BIT_CHECK(SERVER_UDPSIZE_BIT, &peer->bitflags)) { *udpsize = peer->udpsize; return (ISC_R_SUCCESS); } else { return (ISC_R_NOTFOUND); } }
isc_result_t dns_peer_setmaxudp(dns_peer_t *peer, isc_uint16_t maxudp) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SERVER_MAXUDP_BIT, &peer->bitflags); peer->maxudp = maxudp; DNS_BIT_SET(SERVER_MAXUDP_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setudpsize(dns_peer_t *peer, isc_uint16_t udpsize) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SERVER_UDPSIZE_BIT, &peer->bitflags); peer->udpsize = udpsize; DNS_BIT_SET(SERVER_UDPSIZE_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_settransferformat(dns_peer_t *peer, dns_transfer_format_t newval) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SERVER_TRANSFER_FORMAT_BIT, &peer->bitflags); peer->transfer_format = newval; DNS_BIT_SET(SERVER_TRANSFER_FORMAT_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
isc_result_t dns_peer_setpadding(dns_peer_t *peer, isc_uint16_t padding) { isc_boolean_t existed; REQUIRE(DNS_PEER_VALID(peer)); existed = DNS_BIT_CHECK(SERVER_PADDING_BIT, &peer->bitflags); if (padding > 512) padding = 512; peer->padding = padding; DNS_BIT_SET(SERVER_PADDING_BIT, &peer->bitflags); return (existed ? ISC_R_EXISTS : ISC_R_SUCCESS); }
void dns_peer_detach(dns_peer_t **peer) { dns_peer_t *p; REQUIRE(peer != NULL); REQUIRE(*peer != NULL); REQUIRE(DNS_PEER_VALID(*peer)); p = *peer; REQUIRE(p->refs > 0); *peer = NULL; p->refs--; if (p->refs == 0) peer_delete(&p); }
isc_result_t dns_peer_setquerysource(dns_peer_t *peer, const isc_sockaddr_t *query_source) { REQUIRE(DNS_PEER_VALID(peer)); if (peer->query_source != NULL) { isc_mem_put(peer->mem, peer->query_source, sizeof(*peer->query_source)); peer->query_source = NULL; } if (query_source != NULL) { peer->query_source = isc_mem_get(peer->mem, sizeof(*peer->query_source)); if (peer->query_source == NULL) return (ISC_R_NOMEMORY); *peer->query_source = *query_source; } return (ISC_R_SUCCESS); }