45 #define AXFR_TSIG_SIGN_EVERY_NTH 96
59 ldns_rdf* prev = NULL;
60 ldns_rdf* orig = NULL;
63 ldns_status status = LDNS_STATUS_OK;
90 rr =
addns_read_rr(fd, line, &orig, &prev, &ttl, &status, &l);
100 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
156 char* xfrfile = NULL;
158 ldns_rdf* prev = NULL;
159 ldns_rdf* orig = NULL;
160 uint16_t total_added = 0;
163 ldns_status status = LDNS_STATUS_OK;
199 ods_log_error(
"[%s] unable to open axfr file %s for zone %s",
201 free((
void*)xfrfile);
205 free((
void*)xfrfile);
232 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
295 &status, &l)) != NULL) {
297 if (status != LDNS_STATUS_OK) {
301 axfr_str, l, ldns_get_errorstr_by_id(status), line);
328 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
330 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
391 char* xfrfile = NULL;
393 ldns_rdf* prev = NULL;
394 ldns_rdf* orig = NULL;
395 uint16_t total_added = 0;
398 ldns_status status = LDNS_STATUS_OK;
403 uint32_t new_serial = 0;
404 unsigned del_mode = 0;
405 unsigned soa_found = 0;
432 ods_log_error(
"[%s] unable to open ixfr file %s for zone %s",
436 free((
void*)xfrfile);
438 return axfr(q, engine, 1);
440 free((
void*)xfrfile);
449 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
456 return axfr(q, engine, 1);
468 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_SOA) {
490 new_serial = ldns_rdf2native_int32(
526 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() failed "
533 return axfr(q, engine, 1);
536 &status, &l)) != NULL) {
538 if (status != LDNS_STATUS_OK) {
542 axfr_str, l, ldns_get_errorstr_by_id(status), line);
545 if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA) {
546 del_mode = !del_mode;
549 if (del_mode && ldns_rr_get_type(rr) == LDNS_RR_TYPE_SOA &&
550 q->
serial == ldns_rdf2native_int32(
566 ods_log_error(
"[%s] unable to read ixfr for zone %s: ftell() "
573 return axfr(q, engine, 1);
581 if (fseek(q->
axfr_fd, fpos, SEEK_SET) != 0) {
583 "file: fseek() failed (%s)",
axfr_str, strerror(errno));
626 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,...)