From: Suresh K <hs...@us...> - 2005-10-14 17:31:15
|
Update of /cvsroot/dnssec-tools/dnssec-tools/lib/libval In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv515/libval Modified Files: val_support.c Log Message: Support cleanup of the respondent server information from the rrset record find_rr_set takes the respondent server as a parameter and stores this information with the rrset Empty nxdomain responses have no respondent server information copy_rrset_rec also copies respondent server information Add support for displaying more error values in p_val_error Index: val_support.c =================================================================== RCS file: /cvsroot/dnssec-tools/dnssec-tools/lib/libval/val_support.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** val_support.c 29 Aug 2005 13:03:36 -0000 1.5 --- val_support.c 14 Oct 2005 17:31:03 -0000 1.6 *************** *** 162,165 **** --- 162,166 ---- if (*set) { + if ((*set)->rrs_respondent_server) free_name_server(&((*set)->rrs_respondent_server)); if ((*set)->rrs_name_n) FREE ((*set)->rrs_name_n); if ((*set)->rrs_data) res_sq_free_rr_recs (&((*set)->rrs_data)); *************** *** 223,227 **** di->di_requested_name_h = NULL; } ! if (di->di_rrset) res_sq_free_rrset_recs (&di->di_rrset); --- 224,228 ---- di->di_requested_name_h = NULL; } ! if (di->di_rrset) res_sq_free_rrset_recs (&di->di_rrset); *************** *** 424,427 **** --- 425,429 ---- struct rrset_rec *find_rr_set ( + struct name_server *respondent_server, struct rrset_rec **the_list, u_int8_t *name_n, *************** *** 464,469 **** last->rrs_next = new_one; /* we need to at least set the predecesor, while we have it */ ! memset (new_one, 0, sizeof (struct rrset_rec)); if ((init_rr_set (new_one, name_n, type_h, set_type_h, class_h,ttl_h,rdata_n,from_section, authoritive_answer)) --- 466,476 ---- last->rrs_next = new_one; /* we need to at least set the predecesor, while we have it */ ! memset (new_one, 0, sizeof (struct rrset_rec)); + if( SR_UNSET != clone_ns(&new_one->rrs_respondent_server, respondent_server)) { + res_sq_free_rrset_recs (the_list); + return NULL; + } + if ((init_rr_set (new_one, name_n, type_h, set_type_h, class_h,ttl_h,rdata_n,from_section, authoritive_answer)) *************** *** 514,518 **** if (*answers==NULL) return OUT_OF_MEMORY; ! (*answers)->rrs_name_n = (u_int8_t *) MALLOC (length); --- 521,526 ---- if (*answers==NULL) return OUT_OF_MEMORY; ! ! (*answers)->rrs_respondent_server = NULL; (*answers)->rrs_name_n = (u_int8_t *) MALLOC (length); *************** *** 985,994 **** copy_set = (struct rrset_rec *) MALLOC (sizeof(struct rrset_rec)); - if (copy_set == NULL) return NULL; ! o_length = wire_name_length (rr_set->rrs_name_n); memcpy (copy_set, rr_set, sizeof(struct rrset_rec)); copy_set->rrs_data = NULL; copy_set->rrs_next = NULL; --- 993,1005 ---- copy_set = (struct rrset_rec *) MALLOC (sizeof(struct rrset_rec)); if (copy_set == NULL) return NULL; ! o_length = wire_name_length (rr_set->rrs_name_n); memcpy (copy_set, rr_set, sizeof(struct rrset_rec)); + if (SR_UNSET != clone_ns(©_set->rrs_respondent_server, rr_set->rrs_respondent_server)) { + FREE(copy_set); + return NULL; + } copy_set->rrs_data = NULL; copy_set->rrs_next = NULL; *************** *** 1041,1044 **** --- 1052,1056 ---- case NO_ERROR: return "NO_ERROR"; break; + case NOT_IMPLEMENTED: return "NOT_IMPLEMENTED"; break; case OUT_OF_MEMORY: return "OUT_OF_MEMORY"; break; *************** *** 1051,1082 **** case NO_SPACE: return "NO_SPACE"; break; case UNKNOWN_LOCALE: return "UNKNOWN_LOCALE"; break; ! case VALIDATE_SUCCESS: return "VALIDATE_SUCCESS"; break; ! case BOGUS_PROVABLE: return "BOGUS_PROVABLE"; break; ! case BOGUS_UNPROVABLE: return "BOGUS_UNPROVABLE"; break; ! case INDETERMINATE_DS: return "INDETERMINATE_DS"; break; ! case INDETERMINATE_PROOF: return "INDETERMINATE_PROOF"; break; ! case INDETERMINATE_ERROR: return "INDETERMINATE_ERROR"; break; ! case INDETERMINATE_TRUST: return "INDETERMINATE_TRUST"; break; ! case INDETERMINATE_ZONE: return "INDETERMINATE_ZONE"; break; ! case SECURITY_LAME: return "SECURITY_LAME"; break; case NO_TRUST_ANCHOR: return "NO_TRUST_ANCHOR"; break; ! case TOO_MANY_LINKS: return "TOO_MANY_LINKS"; break; case IRRELEVANT_PROOF: return "IRRELEVANT_PROOF"; break; ! case INCOMPLETE_PROOF: return "INCOMPLETE_PROOF"; break; ! case BOGUS_PROOF: return "BOGUS_PROOF"; break; ! case NONEXISTENT_NAME: return "NONEXISTENT_NAME"; break; ! case NONEXISTENT_TYPE: return "NONEXISTENT_TYPE"; break; ! case RRSIG_VERIFIED: return "RRSIG_VERIFIED"; break; ! case RRSIG_VERIFY_FAILED: return "RRSIG_VERIFY_FAILED"; break; ! case BARE_RRSIG: return "BARE_RRSIG"; break; ! case RRSIG_EXPIRED: return "RRSIG_EXPIRED"; break; ! case RRSIG_NOTYETACTIVE: return "RRSIG_NOTYETACTIVE"; break; ! case NOT_A_ZONE_KEY: return "NOT_A_ZONE_KEY"; break; ! case RRSIG_MISSING: return "RRSIG_MISSING"; break; ! case UNKNOWN_ALGO: return "UNKNOWN_ALGO"; break; ! case ALGO_NOT_SUPPORTED: return "ALGO_NOT_SUPPORTED"; break; case UNKNOWN_DNSKEY_PROTO: return "UNKNOWN_DNSKEY_PROTO"; break; case DNSKEY_NOMATCH: return "DNSKEY_NOMATCH"; break; case WRONG_LABEL_COUNT: return "WRONG_LABEL_COUNT"; break; case NOT_VERIFIED: return "NOT_VERIFIED"; break; case KEY_TOO_LARGE: return "KEY_TOO_LARGE"; break; --- 1063,1087 ---- case NO_SPACE: return "NO_SPACE"; break; case UNKNOWN_LOCALE: return "UNKNOWN_LOCALE"; break; ! ! case DATA_MISSING: return "DATA_MISSING"; break; ! case RRSIG_MISSING: return "RRSIG_MISSING"; break; case NO_TRUST_ANCHOR: return "NO_TRUST_ANCHOR"; break; ! case UNTRUSTED_ZONE: return "UNTRUSTED_ZONE"; break; case IRRELEVANT_PROOF: return "IRRELEVANT_PROOF"; break; ! case DNSSEC_VERSION_ERROR: return "DNSSEC_VERSION_ERROR"; break; ! case TOO_MANY_LINKS: return "TOO_MANY_LINKS"; break; case UNKNOWN_DNSKEY_PROTO: return "UNKNOWN_DNSKEY_PROTO"; break; + case FLOOD_ATTACK_DETECTED: return "FLOOD_ATTACK_DETECTED"; break; + case DNSKEY_NOMATCH: return "DNSKEY_NOMATCH"; break; case WRONG_LABEL_COUNT: return "WRONG_LABEL_COUNT"; break; + case SECURITY_LAME: return "SECURITY_LAME"; break; + case NOT_A_ZONE_KEY: return "NOT_A_ZONE_KEY"; break; + case RRSIG_NOTYETACTIVE: return "RRSIG_NOTYETACTIVE"; break; + case RRSIG_EXPIRED: return "RRSIG_EXPIRED"; break; + case ALGO_NOT_SUPPORTED: return "ALGO_NOT_SUPPORTED"; break; + case UNKNOWN_ALGO: return "UNKNOWN_ALGO"; break; + case RRSIG_VERIFIED: return "RRSIG_VERIFIED"; break; + case RRSIG_VERIFY_FAILED: return "RRSIG_VERIFY_FAILED"; break; case NOT_VERIFIED: return "NOT_VERIFIED"; break; case KEY_TOO_LARGE: return "KEY_TOO_LARGE"; break; *************** *** 1090,1095 **** case RRSIG_ALGO_MISMATCH: return "RRSIG_ALGO_MISMATCH"; break; case KEYTAG_MISMATCH: return "KEYTAG_MISMATCH"; break; - case VALIDATION_ERROR: return "VALIDATION_ERROR"; break; /* case UNAUTHORIZED_SIGNER: return "UNAUTHORIZED_SIGNER"; break; --- 1095,1118 ---- case RRSIG_ALGO_MISMATCH: return "RRSIG_ALGO_MISMATCH"; break; case KEYTAG_MISMATCH: return "KEYTAG_MISMATCH"; break; + case VERIFIED: return "VERIFIED"; break; + case LOCAL_ANSWER: return "LOCAL_ANSWER"; break; + case TRUST_KEY: return "TRUST_KEY"; break; + case TRUST_ZONE: return "TRUST_ZONE"; break; + case BARE_RRSIG: return "BARE_RRSIG"; break; + case VALIDATE_SUCCESS: return "VALIDATE_SUCCESS"; break; + + case BOGUS_PROVABLE: return "BOGUS_PROVABLE"; break; + case BOGUS_UNPROVABLE: return "BOGUS_UNPROVABLE"; break; + case VALIDATION_ERROR: return "VALIDATION_ERROR"; break; + case NONEXISTENT_NAME: return "NONEXISTENT_NAME"; break; + case NONEXISTENT_TYPE: return "NONEXISTENT_TYPE"; break; + case INCOMPLETE_PROOF: return "INCOMPLETE_PROOF"; break; + case BOGUS_PROOF: return "BOGUS_PROOF"; break; + case INDETERMINATE_DS: return "INDETERMINATE_DS"; break; + case INDETERMINATE_PROOF: return "INDETERMINATE_PROOF"; break; + case INDETERMINATE_ERROR: return "INDETERMINATE_ERROR"; break; + case INDETERMINATE_TRUST: return "INDETERMINATE_TRUST"; break; + case INDETERMINATE_ZONE: return "INDETERMINATE_ZONE"; break; /* case UNAUTHORIZED_SIGNER: return "UNAUTHORIZED_SIGNER"; break; |