]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
also parse the search keyword in the /etc/resolv.conf. Only 1 domain is parsed
authorMiek Gieben <miekg@NLnetLabs.nl>
Tue, 27 Sep 2005 12:15:41 +0000 (12:15 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Tue, 27 Sep 2005 12:15:41 +0000 (12:15 +0000)
drill/drill.c
ldns/resolver.h
resolver.c

index 83a014295d0ccaf298d2352fee2d8e3891e9c48f..993260737db6bc035c8ff151880f699e70587641 100644 (file)
@@ -609,7 +609,7 @@ main(int argc, char *argv[])
                                                for(key_count = 0; key_count < ldns_rr_list_rr_count(key_verified);
                                                                key_count++) {
                                                        if (qdebug != -1) {
-                                                               mesg("VALIDATED by id = %d, owner = ",
+                                                               printf("VALIDATED by id = %d, owner = ",
                                                                                (int)ldns_calc_keytag(
                                                                                                      ldns_rr_list_rr(key_verified, key_count)));
                                                                ldns_rdf_print(stdout, ldns_rr_owner(
@@ -621,7 +621,7 @@ main(int argc, char *argv[])
                                                for(key_count = 0; key_count < ldns_rr_list_rr_count(key_list);
                                                                key_count++) {
                                                        if (qdebug != -1) {
-                                                               mesg("BOGUS by id = %d, owner = ",
+                                                               printf("BOGUS by id = %d, owner = ",
                                                                                (int)ldns_calc_keytag(
                                                                                                      ldns_rr_list_rr(key_list, key_count)));
                                                                ldns_rdf_print(stdout, ldns_rr_owner(
index 8f5070cd8d0cb63c4ce4bede05d9a3f4ca7d1acb..2e19f6e5b2d7e881eb993e263e11ba62df472f61 100644 (file)
 #define LDNS_RESOLV_CONF       "/etc/resolv.conf"
 #define LDNS_RESOLV_HOSTS      "/etc/hosts"
 
-#define LDNS_RESOLV_KEYWORD            0
-#define LDNS_RESOLV_DEFDOMAIN  1
-#define LDNS_RESOLV_NAMESERVER 2
+#define LDNS_RESOLV_KEYWORD     -1     
+#define LDNS_RESOLV_DEFDOMAIN  0
+#define LDNS_RESOLV_NAMESERVER 1
+#define LDNS_RESOLV_SEARCH     2
+
+#define LDNS_RESOLV_KEYWORDS    3
 
 #define LDNS_RESOLV_INETANY            0
 #define LDNS_RESOLV_INET               1
index d499438fecbfc86a296b172a41fecb5fc7cc352a..a68f1e21fba2d4d647730b5ae6716e715df2ac1f 100644 (file)
@@ -391,6 +391,23 @@ ldns_resolver_set_timeout(ldns_resolver *r, struct timeval timeout)
 void
 ldns_resolver_push_searchlist(ldns_resolver *r, ldns_rdf *d)
 {
+       ldns_rdf **searchlist;
+       uint16_t list_count;
+
+       if (ldns_rdf_get_type(d) != LDNS_RDF_TYPE_DNAME) {
+               return;
+       }
+
+       /* need functions XXX */
+       list_count = r->_searchlist_count;
+       searchlist = ldns_resolver_searchlist(r);
+
+       searchlist = LDNS_XREALLOC(searchlist, ldns_rdf *, (list_count + 1));
+       r->_searchlist = searchlist;
+
+       searchlist[list_count] = ldns_rdf_clone(d);
+       ldns_resolver_set_searchlist_count(r, list_count + 1);
+       
        r->_searchlist[++r->_searchlist_count] = ldns_rdf_clone(d);
 }
 
@@ -478,9 +495,9 @@ ldns_resolver *
 ldns_resolver_new_frm_fp_l(FILE *fp, int *line_nr)
 {
        ldns_resolver *r;
-       const char *keyword[2];
+       const char *keyword[LDNS_RESOLV_KEYWORDS];
        char *word;
-       uint8_t expect;
+       int8_t expect;
        uint8_t i;
        ldns_rdf *tmp;
        ssize_t gtr;
@@ -493,8 +510,9 @@ ldns_resolver_new_frm_fp_l(FILE *fp, int *line_nr)
         */
 
        /* recognized keywords */
-       keyword[0] = "domain";
-       keyword[1] = "nameserver";
+       keyword[LDNS_RESOLV_DEFDOMAIN] = "domain";
+       keyword[LDNS_RESOLV_NAMESERVER] = "nameserver";
+       keyword[LDNS_RESOLV_SEARCH] = "search";
        word = LDNS_XMALLOC(char, LDNS_MAX_LINELEN + 1);
        expect = LDNS_RESOLV_KEYWORD;
 
@@ -508,17 +526,17 @@ ldns_resolver_new_frm_fp_l(FILE *fp, int *line_nr)
                switch(expect) {
                        case LDNS_RESOLV_KEYWORD:
                                /* keyword */
-                               for(i = 0; i < 2; i++) {
+                               for(i = 0; i < LDNS_RESOLV_KEYWORDS; i++) {
                                        if (strcasecmp(keyword[i], word) == 0) {
                                                /* chosen the keyword and
                                                 * expect values carefully
                                                 */
-                                               expect = i + 1;
+                                               expect = i;
                                                break;
                                        }
                                }
                                /* no keyword recognized */
-                               if (expect == 0) {
+                               if (expect == LDNS_RESOLV_KEYWORD) {
                                                dprintf("[%s] unreg keyword\n", word); 
                                }
                                break;
@@ -549,6 +567,18 @@ ldns_resolver_new_frm_fp_l(FILE *fp, int *line_nr)
                                ldns_rdf_deep_free(tmp);
                                expect = LDNS_RESOLV_KEYWORD;
                                break;
+                       case LDNS_RESOLV_SEARCH:
+                               /* search list domain dname, will only work with 1 name! */
+                               tmp = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, word);
+                               if (!tmp) {
+                                       expect = LDNS_RESOLV_KEYWORD;
+                                       break;
+                               }
+
+                               ldns_resolver_push_searchlist(r, tmp); 
+                               ldns_rdf_deep_free(tmp);
+                               expect = LDNS_RESOLV_KEYWORD;
+                               break;
                        default:
                                /* huh?! */
                                dprintf("%s", "BIG FAT WARNING should never reach this\n");