( cd drill ; $(MAKE) -f Makefile all)
./examples/config.log:
- ( mkdir examples ; cd examples ; ../$(srcdir)/examples/configure LDFLAGS="-L../.libs" CPPFLAGS="-I.. -I../..")
+ ( $(INSTALL) -d examples ; cd examples ; ../$(srcdir)/examples/configure LDFLAGS="-L../.libs" CPPFLAGS="-I.. -I../..")
examples: ./examples/config.log
( cd examples ; $(MAKE) -f Makefile all)
ldns_rdf *tmp_par;
if (ldns_rdf_get_type(sub) != LDNS_RDF_TYPE_DNAME ||
- ldns_rdf_get_type(parent) != LDNS_RDF_TYPE_DNAME) {
+ ldns_rdf_get_type(parent) != LDNS_RDF_TYPE_DNAME ||
+ ldns_rdf_compare(sub, parent) == 0
+ ) {
return false;
}
ldns_rr_list *orig_zone_rrs;
ldns_rr_list *signed_zone_rrs;
ldns_rr_list *pubkeys;
+ ldns_rr_list *glue_rrs;
+
ldns_rdf *cur_dname = NULL;
ldns_rdf *next_dname = NULL;
ldns_rr *nsec;
ldns_rr_list_free(cur_rrsigs);
orig_zone_rrs = ldns_rr_list_clone(ldns_zone_rrs(zone));
+
+ glue_rrs = ldns_zone_glue_rr_list(zone);
+
/* add the key (TODO: check if it's there already? */
pubkeys = ldns_rr_list_new();
for (i = 0; i < ldns_key_list_key_count(key_list); i++) {
if (cur_rrset_type != LDNS_RR_TYPE_RRSIG &&
(ldns_dname_is_subdomain(cur_dname, ldns_rr_owner(ldns_zone_soa(zone))) ||
ldns_rdf_compare(cur_dname, ldns_rr_owner(ldns_zone_soa(zone))) == 0
- )
+ ) &&
+ !(ldns_rr_list_contains_rr(glue_rrs, ldns_rr_list_rr(cur_rrset, 0)))
) {
cur_rrsigs = ldns_sign_public(cur_rrset, key_list);
#AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir")
-#AC_CONFIG_FILES([Makefile
-# drill.h
-# ])
+AC_CONFIG_FILES([Makefile])
AC_CONFIG_HEADER([config.h])
AC_OUTPUT
ldns_key_list *keys;
+ uint16_t default_ttl = LDNS_DEFAULT_TTL;
+
char *outputfile_name = NULL;
FILE *outputfile;
if (!keyfile) {
fprintf(stderr, "Error: unable to read %s: %s\n", keyfile_name, strerror(errno));
} else {
- pubkey = ldns_rr_new_frm_fp_l(keyfile, LDNS_DEFAULT_TTL, NULL, &line_nr);
+ pubkey = ldns_rr_new_frm_fp_l(keyfile, &default_ttl, NULL, &line_nr);
if (pubkey) {
ldns_key_set_pubkey_owner(key, ldns_rdf_clone(ldns_rr_owner(pubkey)));
ldns_key_set_flags(key, ldns_rdf2native_int16(ldns_rr_rdf(pubkey, 0)));
*/
ldns_rr* ldns_rr_list_pop_rr(ldns_rr_list *rr_list);
+/**
+ * returns true if the given rr is one of the rrs in the
+ * list, or if it is equal to one
+ * \param[in] rr_list the rr_list to check
+ * \param[in] rr the rr to check
+ * \return true if rr_list contains rr, false otherwise
+ */
+bool ldns_rr_list_contains_rr(ldns_rr_list *rr_list, ldns_rr *rr);
+
/**
* checks if an rr_list is a rrset.
* \param[in] rr_list the rr_list to check
ldns_rr * ldns_zone_soa(ldns_zone *z);
/**
+ * Returns the number of resource records in the zone, NOT counting the SOA record
* \param[in] z the zone to read from
* \return the number of rr's in the zone
*/
return NULL;
}
- rr = ldns_rr_new_frm_str((const char*) line, ttl, *origin);
+ if (origin) {
+ rr = ldns_rr_new_frm_str((const char*) line, ttl, *origin);
+ } else {
+ rr = ldns_rr_new_frm_str((const char*) line, ttl, NULL);
+ }
+
if (!rr) {
if ((keyword = strstr(line, "$ORIGIN "))) {
if (*origin) {
return pop;
}
+bool
+ldns_rr_list_contains_rr(ldns_rr_list *rr_list, ldns_rr *rr)
+{
+ size_t i;
+
+ if (!rr_list || !rr || ldns_rr_list_rr_count(rr_list) == 0) {
+ return false;
+ }
+
+ for (i = 0; i < ldns_rr_list_rr_count(rr_list); i++) {
+ if (rr == ldns_rr_list_rr(rr_list, i)) {
+ return true;
+ } else if (ldns_rr_compare(rr, ldns_rr_list_rr(rr_list, i)) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
bool
ldns_is_rrset(ldns_rr_list *rr_list)
{
uint16_t
ldns_zone_rr_count(ldns_zone *z)
{
- return ldns_rr_list_rr_count(z->_rrs) + 1; /* SOA record */
+ return ldns_rr_list_rr_count(z->_rrs);
}
void
for(i = 0; i < ldns_zone_rr_count(z); i++) {
r = ldns_rr_list_rr(ldns_zone_rrs(z), i);
- ldns_rr_print(stdout, r);
-
if (ldns_rr_get_type(r) == LDNS_RR_TYPE_A ||
ldns_rr_get_type(r) == LDNS_RR_TYPE_AAAA) {
/* possibly glue */
/* multiple zones will end up here -
* for now; not a problem
*/
- ldns_rr_list_push_rr(zone_cuts, r);
+ /* don't add NS records for the current zone itself */
+ if (ldns_rdf_compare(ldns_rr_owner(r), ldns_rr_owner(ldns_zone_soa(z))) != 0) {
+ ldns_rr_list_push_rr(zone_cuts, r);
+ }
continue;
}
}
- /* will sorting make it quicker ?? */
+ /* will sorting make it quicker ?? */
for(i = 0; i < ldns_rr_list_rr_count(zone_cuts); i++) {
ns = ldns_rr_list_rr(zone_cuts, i);
+/*
dname_ns = ldns_rr_ns_nsdname(ns);
-
+*/
+ dname_ns = ldns_rr_owner(ns);
for(j = 0; j < ldns_rr_list_rr_count(addr); j++) {
a = ldns_rr_list_rr(addr, j);
dname_a = ldns_rr_owner(a);