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"))) {
74 if (check_if_updated) {
80 else if (strcmp(
policy_name(policy), (
char*)xml_text)) {
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);
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);
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")) {
416 if (check_if_updated) {
429 else if (!strcmp((
char*)node2->name,
"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))) {
455 if (!(duration = duration_create_from_string((
char*)xml_text))) {
465 if (check_if_updated) {
474 duration_cleanup(duration);
478 duration_cleanup(duration);
481 else if (!strcmp((
char*)node3->name,
"OptOut")) {
484 if (check_if_updated) {
497 else if (!strcmp((
char*)node3->name,
"Resalt")) {
498 if (!(xml_text = xmlNodeGetContent(node3))) {
501 ods_log_deeebug(
"[policy_*_from_xml] denial resalt %s", (
char*)xml_text);
502 if (!(duration = duration_create_from_string((
char*)xml_text))) {
512 if (check_if_updated) {
521 duration_cleanup(duration);
525 duration_cleanup(duration);
528 else if (!strcmp((
char*)node3->name,
"Hash")) {
529 for (node4 = node3->children; node4; node4 = node4->next) {
530 if (node4->type != XML_ELEMENT_NODE) {
534 if (!strcmp((
char*)node4->name,
"Algorithm")) {
535 if (!(xml_text = xmlNodeGetContent(node4))) {
538 ods_log_deeebug(
"[policy_*_from_xml] denial algorithm %s", (
char*)xml_text);
539 if (check_if_updated) {
559 else if (!strcmp((
char*)node4->name,
"Iterations")) {
560 if (!(xml_text = xmlNodeGetContent(node4))) {
563 ods_log_deeebug(
"[policy_*_from_xml] denial iterations %s", (
char*)xml_text);
564 if (check_if_updated) {
584 else if (!strcmp((
char*)node4->name,
"Salt")) {
585 if (!(xml_text = xmlGetProp(node4, (xmlChar*)
"length"))) {
588 ods_log_deeebug(
"[policy_*_from_xml] denial salt length %s", (
char*)xml_text);
589 if (check_if_updated) {
627 else if (!strcmp((
char*)node->name,
"Keys")) {
628 for (node2 = node->children; node2; node2 = node2->next) {
629 if (node2->type != XML_ELEMENT_NODE) {
633 if (!strcmp((
char*)node2->name,
"TTL")) {
634 if (!(xml_text = xmlNodeGetContent(node2))) {
638 if (!(duration = duration_create_from_string((
char*)xml_text))) {
648 if (check_if_updated) {
657 duration_cleanup(duration);
661 duration_cleanup(duration);
664 else if (!strcmp((
char*)node2->name,
"RetireSafety")) {
665 if (!(xml_text = xmlNodeGetContent(node2))) {
668 ods_log_deeebug(
"[policy_*_from_xml] keys retire safety %s", (
char*)xml_text);
669 if (!(duration = duration_create_from_string((
char*)xml_text))) {
679 if (check_if_updated) {
688 duration_cleanup(duration);
692 duration_cleanup(duration);
695 else if (!strcmp((
char*)node2->name,
"PublishSafety")) {
696 if (!(xml_text = xmlNodeGetContent(node2))) {
699 ods_log_deeebug(
"[policy_*_from_xml] keys publish safety %s", (
char*)xml_text);
700 if (!(duration = duration_create_from_string((
char*)xml_text))) {
710 if (check_if_updated) {
719 duration_cleanup(duration);
723 duration_cleanup(duration);
726 else if (!strcmp((
char*)node2->name,
"ShareKeys")) {
729 if (check_if_updated) {
742 else if (!strcmp((
char*)node2->name,
"Purge")) {
744 if (!(xml_text = xmlNodeGetContent(node2))) {
748 if (!(duration = duration_create_from_string((
char*)xml_text))) {
758 if (check_if_updated) {
767 duration_cleanup(duration);
771 duration_cleanup(duration);
774 else if (!strcmp((
char*)node2->name,
"KSK")) {
777 else if (!strcmp((
char*)node2->name,
"ZSK")) {
780 else if (!strcmp((
char*)node2->name,
"CSK")) {
789 else if (!strcmp((
char*)node->name,
"Zone")) {
790 for (node2 = node->children; node2; node2 = node2->next) {
791 if (node2->type != XML_ELEMENT_NODE) {
795 if (!strcmp((
char*)node2->name,
"PropagationDelay")) {
796 if (!(xml_text = xmlNodeGetContent(node2))) {
799 ods_log_deeebug(
"[policy_*_from_xml] zone propagation delay %s", (
char*)xml_text);
800 if (!(duration = duration_create_from_string((
char*)xml_text))) {
810 if (check_if_updated) {
819 duration_cleanup(duration);
823 duration_cleanup(duration);
826 else if (!strcmp((
char*)node2->name,
"SOA")) {
827 for (node3 = node2->children; node3; node3 = node3->next) {
828 if (node3->type != XML_ELEMENT_NODE) {
832 if (!strcmp((
char*)node3->name,
"TTL")) {
833 if (!(xml_text = xmlNodeGetContent(node3))) {
836 ods_log_deeebug(
"[policy_*_from_xml] zone soa ttl %s", (
char*)xml_text);
837 if (!(duration = duration_create_from_string((
char*)xml_text))) {
847 if (check_if_updated) {
856 duration_cleanup(duration);
860 duration_cleanup(duration);
863 else if (!strcmp((
char*)node3->name,
"Minimum")) {
864 if (!(xml_text = xmlNodeGetContent(node3))) {
867 ods_log_deeebug(
"[policy_*_from_xml] zone soa minimum %s", (
char*)xml_text);
868 if (!(duration = duration_create_from_string((
char*)xml_text))) {
878 if (check_if_updated) {
887 duration_cleanup(duration);
891 duration_cleanup(duration);
894 else if (!strcmp((
char*)node3->name,
"Serial")) {
895 if (!(xml_text = xmlNodeGetContent(node3))) {
898 ods_log_deeebug(
"[policy_*_from_xml] zone soa serial %s", (
char*)xml_text);
899 if (check_if_updated) {
931 else if (!strcmp((
char*)node->name,
"Parent")) {
932 for (node2 = node->children; node2; node2 = node2->next) {
933 if (node2->type != XML_ELEMENT_NODE) {
937 if (!strcmp((
char*)node2->name,
"RegistrationDelay")) {
938 if (!(xml_text = xmlNodeGetContent(node2))) {
941 ods_log_deeebug(
"[policy_*_from_xml] parent registration delay %s", (
char*)xml_text);
942 if (!(duration = duration_create_from_string((
char*)xml_text))) {
952 if (check_if_updated) {
961 duration_cleanup(duration);
965 duration_cleanup(duration);
968 else if (!strcmp((
char*)node2->name,
"PropagationDelay")) {
969 if (!(xml_text = xmlNodeGetContent(node2))) {
972 ods_log_deeebug(
"[policy_*_from_xml] parent propagation delay %s", (
char*)xml_text);
973 if (!(duration = duration_create_from_string((
char*)xml_text))) {
983 if (check_if_updated) {
992 duration_cleanup(duration);
996 duration_cleanup(duration);
999 else if (!strcmp((
char*)node2->name,
"SOA")) {
1000 for (node3 = node2->children; node3; node3 = node3->next) {
1001 if (node3->type != XML_ELEMENT_NODE) {
1005 if (!strcmp((
char*)node3->name,
"TTL")) {
1006 if (!(xml_text = xmlNodeGetContent(node3))) {
1009 ods_log_deeebug(
"[policy_*_from_xml] parent soa ttl %s", (
char*)xml_text);
1010 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1020 if (check_if_updated) {
1029 duration_cleanup(duration);
1033 duration_cleanup(duration);
1036 else if (!strcmp((
char*)node3->name,
"Minimum")) {
1037 if (!(xml_text = xmlNodeGetContent(node3))) {
1040 ods_log_deeebug(
"[policy_*_from_xml] parent soa minimum %s", (
char*)xml_text);
1041 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1051 if (check_if_updated) {
1060 duration_cleanup(duration);
1064 duration_cleanup(duration);
1068 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
1073 else if (!strcmp((
char*)node2->name,
"DS")) {
1074 for (node3 = node2->children; node3; node3 = node3->next) {
1075 if (node3->type != XML_ELEMENT_NODE) {
1079 if (!strcmp((
char*)node3->name,
"TTL")) {
1080 if (!(xml_text = xmlNodeGetContent(node3))) {
1083 ods_log_deeebug(
"[policy_*_from_xml] parent ds ttl %s", (
char*)xml_text);
1084 if (!(duration = duration_create_from_string((
char*)xml_text))) {
1094 if (check_if_updated) {
1103 duration_cleanup(duration);
1107 duration_cleanup(duration);
1111 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node3->name);
1117 ods_log_deeebug(
"[policy_*_from_xml] unknown %s", (
char*)node2->name);
1132 duration_cleanup(duration);
1138 if (!denial_optout) {
1140 if (check_if_updated) {
1155 if (check_if_updated) {
1168 if (!signatures_max_zone_ttl) {
1176 if (check_if_updated) *updated = 1;
1181 if (check_if_updated) {
1196 if (check_if_updated) {
1213 if (check_if_updated)
1231 return __xmlNode2policy(policy, policy_node, NULL);
1245 return __xmlNode2policy(policy, policy_node, updated);
int policy_set_signatures_refresh(policy_t *policy, unsigned int signatures_refresh)
int policy_set_zone_soa_serial_text(policy_t *policy, const char *zone_soa_serial)
int policy_set_signatures_jitter(policy_t *policy, unsigned int signatures_jitter)
int policy_set_description(policy_t *policy, const char *description_text)
unsigned int policy_denial_resalt(const policy_t *policy)
unsigned int policy_parent_registration_delay(const policy_t *policy)
int policy_set_signatures_inception_offset(policy_t *policy, unsigned int signatures_inception_offset)
const char * policy_name(const policy_t *policy)
int policy_set_denial_ttl(policy_t *policy, unsigned int denial_ttl)
unsigned int policy_signatures_max_zone_ttl(const policy_t *policy)
unsigned int policy_denial_algorithm(const policy_t *policy)
unsigned int policy_signatures_refresh(const policy_t *policy)
unsigned int policy_signatures_validity_default(const policy_t *policy)
int policy_set_keys_retire_safety(policy_t *policy, unsigned int keys_retire_safety)
int policy_set_signatures_max_zone_ttl(policy_t *policy, unsigned int signatures_max_zone_ttl)
unsigned int policy_parent_propagation_delay(const policy_t *policy)
int policy_set_denial_type(policy_t *policy, policy_denial_type_t denial_type)
int policy_set_keys_shared(policy_t *policy, unsigned int keys_shared)
int db_value_not_empty(const db_value_t *value)
unsigned int policy_signatures_validity_denial(const policy_t *policy)
const db_connection_t * db_object_connection(const db_object_t *object)
int policy_set_signatures_resign(policy_t *policy, unsigned int signatures_resign)
unsigned int policy_passthrough(const policy_t *policy)
int policy_set_parent_registration_delay(policy_t *policy, unsigned int parent_registration_delay)
unsigned int policy_signatures_jitter(const policy_t *policy)
int policy_update_from_xml(policy_t *policy, xmlNodePtr policy_node, int *updated)
unsigned int policy_signatures_inception_offset(const policy_t *policy)
int policy_set_parent_soa_minimum(policy_t *policy, unsigned int parent_soa_minimum)
unsigned int policy_zone_propagation_delay(const policy_t *policy)
unsigned int policy_denial_iterations(const policy_t *policy)
int policy_set_keys_ttl(policy_t *policy, unsigned int keys_ttl)
int policy_set_signatures_validity_default(policy_t *policy, unsigned int signatures_validity_default)
unsigned int policy_zone_soa_ttl(const policy_t *policy)
unsigned int policy_keys_publish_safety(const policy_t *policy)
int policy_set_keys_publish_safety(policy_t *policy, unsigned int keys_publish_safety)
policy_key_list_t * policy_get_policy_keys(const policy_t *policy)
int policy_set_zone_soa_minimum(policy_t *policy, unsigned int zone_soa_minimum)
int policy_set_denial_salt_length(policy_t *policy, unsigned int denial_salt_length)
unsigned int policy_parent_ds_ttl(const policy_t *policy)
int policy_create_from_xml(policy_t *policy, xmlNodePtr policy_node)
const char * policy_zone_soa_serial_text(const policy_t *policy)
unsigned int policy_denial_ttl(const policy_t *policy)
int policy_set_zone_propagation_delay(policy_t *policy, unsigned int zone_propagation_delay)
int policy_set_parent_propagation_delay(policy_t *policy, unsigned int parent_propagation_delay)
unsigned int policy_parent_soa_minimum(const policy_t *policy)
unsigned int policy_denial_optout(const policy_t *policy)
unsigned int policy_keys_retire_safety(const policy_t *policy)
int policy_set_zone_soa_ttl(policy_t *policy, unsigned int zone_soa_ttl)
const char * policy_description(const policy_t *policy)
int policy_set_passthrough(policy_t *policy, unsigned int passthrough)
void ods_log_deeebug(const char *format,...)
int policy_set_name(policy_t *policy, const char *name_text)
int policy_set_denial_iterations(policy_t *policy, unsigned int denial_iterations)
unsigned int policy_denial_salt_length(const policy_t *policy)
unsigned int policy_parent_soa_ttl(const policy_t *policy)
int policy_set_denial_resalt(policy_t *policy, unsigned int denial_resalt)
unsigned int policy_signatures_validity_keyset(const policy_t *policy)
unsigned int policy_keys_shared(const policy_t *policy)
int policy_set_denial_algorithm(policy_t *policy, unsigned int denial_algorithm)
unsigned int policy_zone_soa_minimum(const policy_t *policy)
unsigned int policy_keys_purge_after(const policy_t *policy)
int policy_set_signatures_validity_keyset(policy_t *policy, unsigned int signatures_validity_keyset)
int policy_set_denial_optout(policy_t *policy, unsigned int denial_optout)
policy_key_list_t * policy_key_list_new_get_by_policy_id(const db_connection_t *connection, const db_value_t *policy_id)
int policy_set_keys_purge_after(policy_t *policy, unsigned int keys_purge_after)
int policy_set_signatures_validity_denial(policy_t *policy, unsigned int signatures_validity_denial)
int policy_set_parent_ds_ttl(policy_t *policy, unsigned int parent_ds_ttl)
unsigned int policy_keys_ttl(const policy_t *policy)
unsigned int policy_signatures_resign(const policy_t *policy)
int policy_set_parent_soa_ttl(policy_t *policy, unsigned int parent_soa_ttl)