43 #define AXFR_TSIG_SIGN_EVERY_NTH 96
57 ldns_rdf* prev = NULL;
58 ldns_rdf* orig = NULL;
61 ldns_status status = LDNS_STATUS_OK;
88 rr =
addns_read_rr(fd, line, &orig, &prev, &ttl, &status, &l);
98 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
154 char* xfrfile = NULL;
156 ldns_rdf* prev = NULL;
157 ldns_rdf* orig = NULL;
158 uint16_t total_added = 0;
161 ldns_status status = LDNS_STATUS_OK;
197 ods_log_error(
"[%s] unable to open axfr file %s for zone %s",
199 free((
void*)xfrfile);
203 free((
void*)xfrfile);
230 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
293 &status, &l)) != NULL) {
295 if (status != LDNS_STATUS_OK) {
299 axfr_str, l, ldns_get_errorstr_by_id(status), line);
326 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
328 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
389 char* xfrfile = NULL;
391 ldns_rdf* prev = NULL;
392 ldns_rdf* orig = NULL;
393 uint16_t total_added = 0;
396 ldns_status status = LDNS_STATUS_OK;
401 uint32_t new_serial = 0;
402 unsigned del_mode = 0;
403 unsigned soa_found = 0;
430 ods_log_error(
"[%s] unable to open ixfr file %s for zone %s",
434 free((
void*)xfrfile);
436 return axfr(q, engine, 1);
438 free((
void*)xfrfile);
447 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
454 return axfr(q, engine, 1);
466 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
488 new_serial = ldns_rdf2native_int32(
524 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() failed "
531 return axfr(q, engine, 1);
534 &status, &l)) != NULL) {
536 if (status != LDNS_STATUS_OK) {
540 axfr_str, l, ldns_get_errorstr_by_id(status), line);
543 if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA) {
544 del_mode = !del_mode;
547 if (del_mode && ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA &&
548 q->
serial == ldns_rdf2native_int32(
564 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
571 return axfr(q, engine, 1);
579 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
581 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
624 return axfr(q, engine, 1);
#define AXFR_TSIG_SIGN_EVERY_NTH
void ods_log_debug(const char *format,...)
#define BUFFER_PKT_HEADER_SIZE
time_t serial_xfr_acquired
void buffer_pkt_set_qdcount(buffer_type *buffer, uint16_t count)
void ods_log_info(const char *format,...)
void ods_log_error(const char *format,...)
#define SE_SOA_RDATA_SERIAL
size_t update_since_last_prepare
FILE * ods_fopen(const char *file, const char *dir, const char *mode)
ldns_rr * addns_read_rr(FILE *fd, char *line, ldns_rdf **orig, ldns_rdf **prev, uint32_t *ttl, ldns_status *status, unsigned int *l)
int util_serial_gt(uint32_t serial_new, uint32_t serial_old)
uint16_t buffer_pkt_ancount(buffer_type *buffer)
#define SE_SOA_RDATA_EXPIRE
void buffer_pkt_set_ancount(buffer_type *buffer, uint16_t count)
void buffer_pkt_set_nscount(buffer_type *buffer, uint16_t count)
void buffer_set_limit(buffer_type *buffer, size_t limit)
query_state axfr(query_type *q, engine_type *engine, int fallback)
enum query_enum query_state
void buffer_pkt_set_aa(buffer_type *buffer)
char * ods_build_path(const char *file, const char *suffix, int dir, int no_slash)
query_state ixfr(query_type *q, engine_type *engine)
void buffer_set_position(buffer_type *buffer, size_t pos)
void ods_fclose(FILE *fd)
#define SE_ADFILE_MAXLINE
#define AXFR_MAX_MESSAGE_LEN
void ods_log_deeebug(const char *format,...)
void buffer_pkt_set_rcode(buffer_type *buffer, ldns_pkt_rcode rcode)
query_state soa_request(query_type *q, engine_type *engine)
void query_prepare(query_type *q)
int query_add_rr(query_type *q, ldns_rr *rr)
size_t buffer_position(buffer_type *buffer)
void buffer_pkt_set_arcount(buffer_type *buffer, uint16_t count)
#define ods_log_assert(x)
void ods_log_warning(const char *format,...)