38 static int __xmlNode2policy(
policy_t*
policy, xmlNodePtr policy_node,
int* updated) {
43 xmlChar* xml_text = NULL;
44 duration_type* duration = NULL;
45 int check_if_updated = 0;
47 int denial_optout = 0;
49 int signatures_max_zone_ttl = 0;
52 unsigned int passthrough = 0;
70 if (!(xml_text = xmlGetProp(policy_node, (xmlChar*)
"name"))) {
73 ods_log_deeebug(
"[policy_*_from_xml] policy %s", (
char*)xml_text);
74 if (check_if_updated) {
98 for (node = policy_node->children; node; node = node->next) {
99 if (node->type != XML_ELEMENT_NODE) {
103 if (!strcmp((
char*)node->name,
"Description")) {
104 if (!(xml_text = xmlNodeGetContent(node))) {
107 ods_log_deeebug(
"[policy_*_from_xml] description %s", (
char*)xml_text);
108 if (check_if_updated) {
132 else if (!strcmp((
char*)node->name,
"Passthrough")) {
135 else if (!strcmp((
char*)node->name,
"Signatures")) {
136 for (node2 = node->children; node2; node2 = node2->next) {
137 if (node2->type != XML_ELEMENT_NODE) {
141 if (!strcmp((
char*)node2->name,
"Resign")) {
142 if (!(xml_text = xmlNodeGetContent(node2))) {
145 ods_log_deeebug(
"[policy_*_from_xml] signature resign %s", (
char*)xml_text);
146 if (!(duration = duration_create_from_string((
char*)xml_text))) {
156 if (check_if_updated) {
165 duration_cleanup(duration);
169 duration_cleanup(duration);
172 else if (!strcmp((
char*)node2->name,
"Refresh")) {
173 if (!(xml_text = xmlNodeGetContent(node2))) {
176 ods_log_deeebug(
"[policy_*_from_xml] signature refresh %s", (
char*)xml_text);
177 if (!(duration = duration_create_from_string((
char*)xml_text))) {
187 if (check_if_updated) {
196 duration_cleanup(duration);
200 duration_cleanup(duration);
203 else if (!strcmp((
char*)node2->name,
"Validity")) {
204 for (node3 = node2->children; node3; node3 = node3->next) {
205 if (node3->type != XML_ELEMENT_NODE) {
209 if (!strcmp((
char*)node3->name,
"Default")) {
210 if (!(xml_text = xmlNodeGetContent(node3))) {
213 ods_log_deeebug(
"[policy_*_from_xml] signature validity default %s", (
char*)xml_text);
214 if (!(duration = duration_create_from_string((
char*)xml_text))) {
224 if (check_if_updated) {
233 duration_cleanup(duration);
237 duration_cleanup(duration);
240 else if (!strcmp((
char*)node3->name,
"Denial")) {
241 if (!(xml_text = xmlNodeGetContent(node3))) {
244 ods_log_deeebug(
"[policy_*_from_xml] signature validity denial %s", (
char*)xml_text);
245 if (!(duration = duration_create_from_string((
char*)xml_text))) {
255 if (check_if_updated) {
264 duration_cleanup(duration);
268 duration_cleanup(duration);
271 else if (!strcmp((
char*)node3->name,
"Keyset")) {
272 if (!(xml_text = xmlNodeGetContent(node3))) {
275 ods_log_deeebug(
"[policy_*_from_xml] signature validity keyset %s", (
char*)xml_text);
276 if (!(duration = duration_create_from_string((
char*)xml_text))) {
286 if (check_if_updated) {
295 duration_cleanup(duration);
299 duration_cleanup(duration);
303 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
308 else if (!strcmp((
char*)node2->name,
"Jitter")) {
309 if (!(xml_text = xmlNodeGetContent(node2))) {
312 ods_log_deeebug(
"[policy_*_from_xml] signature jitter %s", (
char*)xml_text);
313 if (!(duration = duration_create_from_string((
char*)xml_text))) {
323 if (check_if_updated) {
332 duration_cleanup(duration);
336 duration_cleanup(duration);
339 else if (!strcmp((
char*)node2->name,
"InceptionOffset")) {
340 if (!(xml_text = xmlNodeGetContent(node2))) {
343 ods_log_deeebug(
"[policy_*_from_xml] signature inception offset %s", (
char*)xml_text);
344 if (!(duration = duration_create_from_string((
char*)xml_text))) {
354 if (check_if_updated) {
363 duration_cleanup(duration);
367 duration_cleanup(duration);
370 else if (!strcmp((
char*)node2->name,
"MaxZoneTTL")) {
371 signatures_max_zone_ttl = 1;
372 if (!(xml_text = xmlNodeGetContent(node2))) {
375 ods_log_deeebug(
"[policy_*_from_xml] signature max zone ttl %s", (
char*)xml_text);
376 if (!(duration = duration_create_from_string((
char*)xml_text))) {
386 if (check_if_updated) {
395 duration_cleanup(duration);
399 duration_cleanup(duration);
403 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
408 else if (!strcmp((
char*)node->name,
"Denial")) {
409 for (node2 = node->children; node2; node2 = node2->next) {
410 if (node2->type != XML_ELEMENT_NODE) {
414 if (!strcmp((
char*)node2->name,
"NSEC")) {
415 ods_log_deeebug(
"[policy_*_from_xml] denial nsec");
416 if (check_if_updated) {
429 else if (!strcmp((
char*)node2->name,
"NSEC3")) {
430 ods_log_deeebug(
"[policy_*_from_xml] denial nsec3");
431 if (check_if_updated) {
444 for (node3 = node2->children; node3; node3 = node3->next) {
445 if (node3->type != XML_ELEMENT_NODE) {
449 if (!strcmp((
char*)node3->name,
"TTL")) {
451 if (!(xml_text = xmlNodeGetContent(node3))) {
454 ods_log_deeebug(
"[policy_*_from_xml] denial ttl %s", (
char*)xml_text);
455 if (!(duration = duration_create_from_string((
char*)xml_text))) {
467 duration_cleanup(duration);
470 if (check_if_updated) *updated = 1;
472 duration_cleanup(duration);
475 else if (!strcmp((
char*)node3->name,
"OptOut")) {
477 ods_log_deeebug(
"[policy_*_from_xml] denial optout");
478 if (check_if_updated) {
491 else if (!strcmp((
char*)node3->name,
"Resalt")) {
492 if (!(xml_text = xmlNodeGetContent(node3))) {
495 ods_log_deeebug(
"[policy_*_from_xml] denial resalt %s", (
char*)xml_text);
496 if (!(duration = duration_create_from_string((
char*)xml_text))) {
506 if (check_if_updated) {
515 duration_cleanup(duration);
519 duration_cleanup(duration);
522 else if (!strcmp((
char*)node3->name,
"Hash")) {
523 for (node4 = node3->children; node4; node4 = node4->next) {
524 if (node4->type != XML_ELEMENT_NODE) {
528 if (!strcmp((
char*)node4->name,
"Algorithm")) {
529 if (!(xml_text = xmlNodeGetContent(node4))) {
532 ods_log_deeebug(
"[policy_*_from_xml] denial algorithm %s", (
char*)xml_text);
533 if (check_if_updated) {
553 else if (!strcmp((
char*)node4->name,
"Iterations")) {
554 if (!(xml_text = xmlNodeGetContent(node4))) {
557 ods_log_deeebug(
"[policy_*_from_xml] denial iterations %s", (
char*)xml_text);
558 if (check_if_updated) {
578 else if (!strcmp((
char*)node4->name,
"Salt")) {
579 if (!(xml_text = xmlGetProp(node4, (xmlChar*)
"length"))) {
582 ods_log_deeebug(
"[policy_*_from_xml] denial salt length %s", (
char*)xml_text);
583 if (check_if_updated) {
604 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node4->name);
610 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
616 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
621 else if (!strcmp((
char*)node->name,
"Keys")) {
622 for (node2 = node->children; node2; node2 = node2->next) {
623 if (node2->type != XML_ELEMENT_NODE) {
627 if (!strcmp((
char*)node2->name,
"TTL")) {
628 if (!(xml_text = xmlNodeGetContent(node2))) {
631 ods_log_deeebug(
"[policy_*_from_xml] keys ttl %s", (
char*)xml_text);
632 if (!(duration = duration_create_from_string((
char*)xml_text))) {
642 if (check_if_updated) {
651 duration_cleanup(duration);
655 duration_cleanup(duration);
658 else if (!strcmp((
char*)node2->name,
"RetireSafety")) {
659 if (!(xml_text = xmlNodeGetContent(node2))) {
662 ods_log_deeebug(
"[policy_*_from_xml] keys retire safety %s", (
char*)xml_text);
663 if (!(duration = duration_create_from_string((
char*)xml_text))) {
673 if (check_if_updated) {
682 duration_cleanup(duration);
686 duration_cleanup(duration);
689 else if (!strcmp((
char*)node2->name,
"PublishSafety")) {
690 if (!(xml_text = xmlNodeGetContent(node2))) {
693 ods_log_deeebug(
"[policy_*_from_xml] keys publish safety %s", (
char*)xml_text);
694 if (!(duration = duration_create_from_string((
char*)xml_text))) {
704 if (check_if_updated) {
713 duration_cleanup(duration);
717 duration_cleanup(duration);
720 else if (!strcmp((
char*)node2->name,
"ShareKeys")) {
722 ods_log_deeebug(
"[policy_*_from_xml] keys shared keys");
723 if (check_if_updated) {
736 else if (!strcmp((
char*)node2->name,
"Purge")) {
738 if (!(xml_text = xmlNodeGetContent(node2))) {
741 ods_log_deeebug(
"[policy_*_from_xml] keys purge %s", (
char*)xml_text);
742 if (!(duration = duration_create_from_string((
char*)xml_text))) {
752 if (check_if_updated) {
761 duration_cleanup(duration);
765 duration_cleanup(duration);
768 else if (!strcmp((
char*)node2->name,
"KSK")) {
771 else if (!strcmp((
char*)node2->name,
"ZSK")) {
774 else if (!strcmp((
char*)node2->name,
"CSK")) {
778 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
783 else if (!strcmp((
char*)node->name,
"Zone")) {
784 for (node2 = node->children; node2; node2 = node2->next) {
785 if (node2->type != XML_ELEMENT_NODE) {
789 if (!strcmp((
char*)node2->name,
"PropagationDelay")) {
790 if (!(xml_text = xmlNodeGetContent(node2))) {
793 ods_log_deeebug(
"[policy_*_from_xml] zone propagation delay %s", (
char*)xml_text);
794 if (!(duration = duration_create_from_string((
char*)xml_text))) {
804 if (check_if_updated) {
813 duration_cleanup(duration);
817 duration_cleanup(duration);
820 else if (!strcmp((
char*)node2->name,
"SOA")) {
821 for (node3 = node2->children; node3; node3 = node3->next) {
822 if (node3->type != XML_ELEMENT_NODE) {
826 if (!strcmp((
char*)node3->name,
"TTL")) {
827 if (!(xml_text = xmlNodeGetContent(node3))) {
830 ods_log_deeebug(
"[policy_*_from_xml] zone soa ttl %s", (
char*)xml_text);
831 if (!(duration = duration_create_from_string((
char*)xml_text))) {
841 if (check_if_updated) {
850 duration_cleanup(duration);
854 duration_cleanup(duration);
857 else if (!strcmp((
char*)node3->name,
"Minimum")) {
858 if (!(xml_text = xmlNodeGetContent(node3))) {
861 ods_log_deeebug(
"[policy_*_from_xml] zone soa minimum %s", (
char*)xml_text);
862 if (!(duration = duration_create_from_string((
char*)xml_text))) {
872 if (check_if_updated) {
881 duration_cleanup(duration);
885 duration_cleanup(duration);
888 else if (!strcmp((
char*)node3->name,
"Serial")) {
889 if (!(xml_text = xmlNodeGetContent(node3))) {
892 ods_log_deeebug(
"[policy_*_from_xml] zone soa serial %s", (
char*)xml_text);
893 if (check_if_updated) {
914 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
920 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
925 else if (!strcmp((
char*)node->name,
"Parent")) {
926 for (node2 = node->children; node2; node2 = node2->next) {
927 if (node2->type != XML_ELEMENT_NODE) {
931 if (!strcmp((
char*)node2->name,
"RegistrationDelay")) {
932 if (!(xml_text = xmlNodeGetContent(node2))) {
935 ods_log_deeebug(
"[policy_*_from_xml] parent registration delay %s", (
char*)xml_text);
936 if (!(duration = duration_create_from_string((
char*)xml_text))) {
946 if (check_if_updated) {
955 duration_cleanup(duration);
959 duration_cleanup(duration);
962 else if (!strcmp((
char*)node2->name,
"PropagationDelay")) {
963 if (!(xml_text = xmlNodeGetContent(node2))) {
966 ods_log_deeebug(
"[policy_*_from_xml] parent propagation delay %s", (
char*)xml_text);
967 if (!(duration = duration_create_from_string((
char*)xml_text))) {
977 if (check_if_updated) {
986 duration_cleanup(duration);
990 duration_cleanup(duration);
993 else if (!strcmp((
char*)node2->name,
"SOA")) {
994 for (node3 = node2->children; node3; node3 = node3->next) {
995 if (node3->type != XML_ELEMENT_NODE) {
999 if (!strcmp((
char*)node3->name,
"TTL")) {
1000 if (!(xml_text = xmlNodeGetContent(node3))) {
1003 ods_log_deeebug(
"[policy_*_from_xml] parent soa ttl %s", (
char*)xml_text);
1004 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1014 if (check_if_updated) {
1023 duration_cleanup(duration);
1027 duration_cleanup(duration);
1030 else if (!strcmp((
char*)node3->name,
"Minimum")) {
1031 if (!(xml_text = xmlNodeGetContent(node3))) {
1034 ods_log_deeebug(
"[policy_*_from_xml] parent soa minimum %s", (
char*)xml_text);
1035 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1045 if (check_if_updated) {
1054 duration_cleanup(duration);
1058 duration_cleanup(duration);
1062 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
1067 else if (!strcmp((
char*)node2->name,
"DS")) {
1068 for (node3 = node2->children; node3; node3 = node3->next) {
1069 if (node3->type != XML_ELEMENT_NODE) {
1073 if (!strcmp((
char*)node3->name,
"TTL")) {
1074 if (!(xml_text = xmlNodeGetContent(node3))) {
1077 ods_log_deeebug(
"[policy_*_from_xml] parent ds ttl %s", (
char*)xml_text);
1078 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1088 if (check_if_updated) {
1097 duration_cleanup(duration);
1101 duration_cleanup(duration);
1105 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
1111 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
1117 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node->name);
1126 duration_cleanup(duration);
1132 if (!denial_optout) {
1133 ods_log_deeebug(
"[policy_*_from_xml] - denial optout");
1134 if (check_if_updated) {
1148 ods_log_deeebug(
"[policy_*_from_xml] - keys shared keys");
1149 if (check_if_updated) {
1162 if (!signatures_max_zone_ttl) {
1163 ods_log_deeebug(
"[policy_*_from_xml] - signatures max zone ttl");
1170 if (check_if_updated) *updated = 1;
1174 ods_log_deeebug(
"[policy_*_from_xml] - keys purge");
1175 if (check_if_updated) {
1189 ods_log_deeebug(
"[policy_*_from_xml] - denial ttl");
1199 if (check_if_updated) *updated = 1;
1204 ods_log_deeebug(
"[policy_*_from_xml] - passthrough set to %d",
1206 if (check_if_updated)
1224 return __xmlNode2policy(
policy, policy_node, NULL);
1238 return __xmlNode2policy(
policy, policy_node, updated);
const db_connection_t * db_object_connection(const db_object_t *object)
int db_value_not_empty(const db_value_t *value)
const char * policy_name(const policy_t *policy)
unsigned int policy_denial_salt_length(const policy_t *policy)
int policy_set_name(policy_t *policy, const char *name_text)
unsigned int policy_zone_propagation_delay(const policy_t *policy)
unsigned int policy_denial_iterations(const policy_t *policy)
int policy_set_parent_ds_ttl(policy_t *policy, unsigned int parent_ds_ttl)
int policy_set_denial_type(policy_t *policy, policy_denial_type_t denial_type)
int policy_set_denial_ttl(policy_t *policy, unsigned int denial_ttl)
unsigned int policy_denial_optout(const policy_t *policy)
unsigned int policy_parent_soa_minimum(const policy_t *policy)
int policy_set_signatures_resign(policy_t *policy, unsigned int signatures_resign)
unsigned int policy_signatures_validity_denial(const policy_t *policy)
unsigned int policy_keys_purge_after(const policy_t *policy)
int policy_set_denial_iterations(policy_t *policy, unsigned int denial_iterations)
unsigned int policy_parent_ds_ttl(const policy_t *policy)
unsigned int policy_signatures_resign(const policy_t *policy)
int policy_set_parent_soa_minimum(policy_t *policy, unsigned int parent_soa_minimum)
int policy_set_signatures_inception_offset(policy_t *policy, unsigned int signatures_inception_offset)
int policy_set_zone_propagation_delay(policy_t *policy, unsigned int zone_propagation_delay)
unsigned int policy_keys_ttl(const policy_t *policy)
unsigned int policy_parent_propagation_delay(const policy_t *policy)
int policy_set_keys_purge_after(policy_t *policy, unsigned int keys_purge_after)
unsigned int policy_zone_soa_ttl(const policy_t *policy)
unsigned int policy_zone_soa_minimum(const policy_t *policy)
unsigned int policy_passthrough(const policy_t *policy)
unsigned int policy_signatures_refresh(const policy_t *policy)
unsigned int policy_denial_ttl(const policy_t *policy)
unsigned int policy_signatures_max_zone_ttl(const policy_t *policy)
int policy_set_parent_soa_ttl(policy_t *policy, unsigned int parent_soa_ttl)
int policy_set_denial_resalt(policy_t *policy, unsigned int denial_resalt)
unsigned int policy_keys_shared(const policy_t *policy)
int policy_set_denial_algorithm(policy_t *policy, unsigned int denial_algorithm)
int policy_set_parent_registration_delay(policy_t *policy, unsigned int parent_registration_delay)
int policy_set_zone_soa_serial_text(policy_t *policy, const char *zone_soa_serial)
unsigned int policy_signatures_jitter(const policy_t *policy)
unsigned int policy_parent_registration_delay(const policy_t *policy)
const char * policy_description(const policy_t *policy)
int policy_set_parent_propagation_delay(policy_t *policy, unsigned int parent_propagation_delay)
int policy_set_denial_optout(policy_t *policy, unsigned int denial_optout)
unsigned int policy_signatures_inception_offset(const policy_t *policy)
int policy_set_signatures_max_zone_ttl(policy_t *policy, unsigned int signatures_max_zone_ttl)
int policy_set_signatures_jitter(policy_t *policy, unsigned int signatures_jitter)
int policy_set_description(policy_t *policy, const char *description_text)
int policy_set_keys_shared(policy_t *policy, unsigned int keys_shared)
unsigned int policy_parent_soa_ttl(const policy_t *policy)
int policy_set_denial_salt_length(policy_t *policy, unsigned int denial_salt_length)
int policy_set_signatures_validity_keyset(policy_t *policy, unsigned int signatures_validity_keyset)
int policy_set_signatures_validity_default(policy_t *policy, unsigned int signatures_validity_default)
unsigned int policy_denial_algorithm(const policy_t *policy)
unsigned int policy_signatures_validity_default(const policy_t *policy)
int policy_set_signatures_refresh(policy_t *policy, unsigned int signatures_refresh)
int policy_set_keys_ttl(policy_t *policy, unsigned int keys_ttl)
const char * policy_zone_soa_serial_text(const policy_t *policy)
int policy_set_signatures_validity_denial(policy_t *policy, unsigned int signatures_validity_denial)
int policy_set_passthrough(policy_t *policy, unsigned int passthrough)
unsigned int policy_denial_resalt(const policy_t *policy)
unsigned int policy_keys_publish_safety(const policy_t *policy)
int policy_set_zone_soa_minimum(policy_t *policy, unsigned int zone_soa_minimum)
int policy_set_keys_publish_safety(policy_t *policy, unsigned int keys_publish_safety)
unsigned int policy_keys_retire_safety(const policy_t *policy)
int policy_set_keys_retire_safety(policy_t *policy, unsigned int keys_retire_safety)
unsigned int policy_signatures_validity_keyset(const policy_t *policy)
int policy_set_zone_soa_ttl(policy_t *policy, unsigned int zone_soa_ttl)
@ POLICY_DENIAL_TYPE_NSEC
@ POLICY_DENIAL_TYPE_NSEC3
policy_key_list_t * policy_get_policy_keys(const policy_t *policy)
int policy_update_from_xml(policy_t *policy, xmlNodePtr policy_node, int *updated)
int policy_create_from_xml(policy_t *policy, xmlNodePtr policy_node)
policy_key_list_t * policy_key_list_new_get_by_policy_id(const db_connection_t *connection, const db_value_t *policy_id)