Skip to content
Snippets Groups Projects
Commit 9bc8a489 authored by Lubos Slovak's avatar Lubos Slovak
Browse files

Prerequisities checking outline.

+ Some small fixes in nameserver.

refs #1128 @30m
parent 1fce428a
No related branches found
No related tags found
No related merge requests found
......@@ -2993,6 +2993,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
? KNOT_RCODE_FORMERR
: KNOT_RCODE_SERVFAIL,
response_wire, rsize);
knot_packet_free(&response);
return KNOT_EOK;
}
}
......@@ -3013,6 +3014,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
knot_ns_error_response_full(nameserver, response,
KNOT_RCODE_FORMERR,
response_wire, rsize);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3023,6 +3025,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
knot_ns_error_response_full(nameserver, response,
KNOT_RCODE_NOTAUTH,
response_wire, rsize);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3037,6 +3040,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
"%s.\n", knot_strerror(ret));
knot_ns_error_response_full(nameserver, response, rcode,
response_wire, rsize);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3048,6 +3052,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
"%s.\n", knot_strerror(ret));
knot_ns_error_response_full(nameserver, response, rcode,
response_wire, rsize);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3064,6 +3069,8 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
"%s.\n", knot_strerror(ret));
knot_ns_error_response_full(nameserver, response, rcode,
response_wire, rsize);
knot_ddns_prereqs_free(&prereqs);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3074,6 +3081,8 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
"%s.\n", knot_strerror(ret));
knot_ns_error_response_full(nameserver, response, rcode,
response_wire, rsize);
knot_ddns_prereqs_free(&prereqs);
knot_packet_free(&response);
return KNOT_EOK;
}
......@@ -3084,6 +3093,7 @@ int knot_ns_process_update(knot_nameserver_t *nameserver, knot_packet_t *query,
/*! \todo No response yet. Distinguish somehow in the caller. */
knot_packet_free(&response);
return KNOT_EOK;
}
......
......@@ -23,13 +23,6 @@
#include "util/error.h"
#include "consts.h"
/*----------------------------------------------------------------------------*/
static void knot_ddns_prereqs_free(knot_ddns_prereq_t **prereq)
{
/*! \todo Implement. */
}
/*----------------------------------------------------------------------------*/
// Copied from XFR - maybe extract somewhere else
static int knot_ddns_prereq_check_rrsets(knot_rrset_t ***rrsets,
......@@ -232,6 +225,51 @@ static int knot_ddns_add_update(knot_changeset_t *changeset,
return ret;
}
/*----------------------------------------------------------------------------*/
static int knot_ddns_check_exist(const knot_zone_contents_t *zone,
const knot_rrset_t *rrset, uint8_t *rcode)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
static int knot_ddns_check_exist_full(const knot_zone_contents_t *zone,
const knot_rrset_t *rrset, uint8_t *rcode)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
static int knot_ddns_check_not_exist(const knot_zone_contents_t *zone,
const knot_rrset_t *rrset, uint8_t *rcode)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
static int knot_ddns_check_in_use(const knot_zone_contents_t *zone,
const knot_dname_t *dname, uint8_t *rcode)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
static int knot_ddns_check_not_in_use(const knot_zone_contents_t *zone,
const knot_dname_t *dname, uint8_t *rcode)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
/* API functions */
/*----------------------------------------------------------------------------*/
......@@ -245,6 +283,15 @@ int knot_ddns_check_zone(const knot_zone_t *zone, knot_packet_t *query,
/*----------------------------------------------------------------------------*/
int knot_ddns_create_forward_query(const knot_packet_t *query,
knot_packet_t **fwd_query)
{
/*! \todo Implement. */
return KNOT_ENOTSUP;
}
/*----------------------------------------------------------------------------*/
int knot_ddns_process_prereqs(knot_packet_t *query,
knot_ddns_prereq_t **prereqs, uint8_t *rcode)
{
......@@ -286,7 +333,50 @@ int knot_ddns_process_prereqs(knot_packet_t *query,
int knot_ddns_check_prereqs(const knot_zone_contents_t *zone,
knot_ddns_prereq_t **prereqs, uint8_t *rcode)
{
return KNOT_ENOTSUP;
int i, ret;
for (i = 0; i < (*prereqs)->exist_count; ++i) {
ret = knot_ddns_check_exist(zone, (*prereqs)->exist[i], rcode);
if (ret != KNOT_EOK) {
return ret;
}
}
for (i = 0; i < (*prereqs)->exist_full_count; ++i) {
ret = knot_ddns_check_exist_full(zone,
(*prereqs)->exist_full[i],
rcode);
if (ret != KNOT_EOK) {
return ret;
}
}
for (i = 0; i < (*prereqs)->not_exist_count; ++i) {
ret = knot_ddns_check_not_exist(zone, (*prereqs)->not_exist[i],
rcode);
if (ret != KNOT_EOK) {
return ret;
}
}
for (i = 0; i < (*prereqs)->in_use_count; ++i) {
ret = knot_ddns_check_in_use(zone, (*prereqs)->in_use[i],
rcode);
if (ret != KNOT_EOK) {
return ret;
}
}
for (i = 0; i < (*prereqs)->not_in_use_count; ++i) {
ret = knot_ddns_check_not_in_use(zone,
(*prereqs)->not_in_use[i],
rcode);
if (ret != KNOT_EOK) {
return ret;
}
}
return KNOT_EOK;
}
/*----------------------------------------------------------------------------*/
......@@ -324,3 +414,10 @@ int knot_ddns_process_update(knot_packet_t *query,
return KNOT_EOK;
}
/*----------------------------------------------------------------------------*/
void knot_ddns_prereqs_free(knot_ddns_prereq_t **prereq)
{
/*! \todo Implement. */
}
......@@ -58,6 +58,9 @@ typedef struct knot_ddns_prereq_t {
int knot_ddns_check_zone(const knot_zone_t *zone, knot_packet_t *query,
uint8_t *rcode);
int knot_ddns_create_forward_query(const knot_packet_t *query,
knot_packet_t **fwd_query);
int knot_ddns_process_prereqs(knot_packet_t *query,
knot_ddns_prereq_t **prereqs, uint8_t *rcode);
......@@ -67,6 +70,8 @@ int knot_ddns_check_prereqs(const knot_zone_contents_t *zone,
int knot_ddns_process_update(knot_packet_t *query,
knot_changeset_t **changeset, uint8_t *rcode);
void knot_ddns_prereqs_free(knot_ddns_prereq_t **prereq);
#endif /* _KNOT_DDNS_H_ */
/*! @} */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment