45 #define AXFR_TSIG_SIGN_EVERY_NTH 96
59 ldns_rdf* prev = NULL;
60 ldns_rdf* orig = NULL;
61 uint16_t total_added = 0;
64 ldns_status status = LDNS_STATUS_OK;
100 free((
void*)xfrfile);
104 free((
void*)xfrfile);
131 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
194 &status, &l)) != NULL) {
196 if (status != LDNS_STATUS_OK) {
200 axfr_str, l, ldns_get_errorstr_by_id(status), line);
227 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
229 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
291 char* xfrfile = NULL;
293 ldns_rdf* prev = NULL;
294 ldns_rdf* orig = NULL;
295 uint16_t total_added = 0;
298 ldns_status status = LDNS_STATUS_OK;
303 uint32_t new_serial = 0;
304 unsigned del_mode = 0;
305 unsigned soa_found = 0;
332 ods_log_error(
"[%s] unable to open ixfr file %s for zone %s",
336 free((
void*)xfrfile);
338 return axfr(q, engine);
340 free((
void*)xfrfile);
349 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
356 return axfr(q, engine);
368 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
390 new_serial = ldns_rdf2native_int32(
426 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() failed "
433 return axfr(q, engine);
436 &status, &l)) != NULL) {
438 if (status != LDNS_STATUS_OK) {
442 axfr_str, l, ldns_get_errorstr_by_id(status), line);
445 if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA) {
446 del_mode = !del_mode;
449 if (del_mode && ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA &&
450 q->
serial == ldns_rdf2native_int32(
466 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
473 return axfr(q, engine);
481 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
483 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
525 return axfr(q, engine);
#define AXFR_TSIG_SIGN_EVERY_NTH
void ods_log_debug(const char *format,...)
#define BUFFER_PKT_HEADER_SIZE
query_state axfr(query_type *q, engine_type *engine)
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)
enum query_enum query_state
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)
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,...)