~vcs-imports/dnstracer/main

« back to all changes in this revision

Viewing changes to dnstracer.c

  • Committer: mavetju
  • Date: 2004-07-08 05:50:03 UTC
  • Revision ID: Arch-1:dnstracer@bazaar.ubuntu.com%dnstracer--MAIN--0--patch-71
        - Warnings are printed if you receive a different RR type
          than the one you asked for (for example when you ask for
          an A record and receive a CNAME)
        - Records received in the authority field are not longer
          checked if they are smaller than the domain the nameserver
          is authoritative for,
        - When compiled without IPv6 support on an IPv6 capable
          machine the machine tried to query the IPv6 translated
          IPv5 address anyway.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
//
2
 
// $Id: dnstracer.c,v 1.44 2004/07/08 04:15:13 mavetju Exp $
 
2
// $Id: dnstracer.c,v 1.45 2004/07/08 05:50:03 mavetju Exp $
3
3
//
4
4
 
5
5
//
174
174
        struct dnsrr *  next;
175
175
};
176
176
 
 
177
char *rr_types[256]={
 
178
        "#0x00", "a", "ns", "#0x03", "#0x04", "cname", "soa", "#0x07",
 
179
        "#0x08", "#0x09", "#0x0a", "#0x0b", "#ptr", "#hinfo", "#0x0e", "#mx",
 
180
        "#txt", "#0x11", "#0x12", "#0x13", "#0x14", "#0x15", "#0x16", "#0x17",
 
181
        "#0x18", "#0x19", "#0x1a", "#0x1b", "#0x1c", "#0x1d", "#0x1e", "#0x1f",
 
182
        "#0x20", "#0x21", "#0x22", "#0x23", "#0x24", "#0x25", "#0x26", "#0x27",
 
183
        "#0x28", "#0x29", "#0x2a", "#0x2b", "#0x2c", "#0x2d", "#0x2e", "#0x2f",
 
184
        "#0x30", "#0x31", "#0x32", "#0x33", "#0x34", "#0x35", "#0x36", "#0x37",
 
185
        "#0x38", "#0x39", "#0x3a", "#0x3b", "#0x3c", "#0x3d", "#0x3e", "#0x3f",
 
186
        "#0x40", "#0x41", "#0x42", "#0x43", "#0x44", "#0x45", "#0x46", "#0x47",
 
187
        "#0x48", "#0x49", "#0x4a", "#0x4b", "#0x4c", "#0x4d", "#0x4e", "#0x4f",
 
188
        "#0x50", "#0x51", "#0x52", "#0x53", "#0x54", "#0x55", "#0x56", "#0x57",
 
189
        "#0x58", "#0x59", "#0x5a", "#0x5b", "#0x5c", "#0x5d", "#0x5e", "#0x5f",
 
190
        "#0x60", "#0x61", "#0x62", "#0x63", "#0x64", "#0x65", "#0x66", "#0x67",
 
191
        "#0x68", "#0x69", "#0x6a", "#0x6b", "#0x6c", "#0x6d", "#0x6e", "#0x6f",
 
192
        "#0x70", "#0x71", "#0x72", "#0x73", "#0x74", "#0x75", "#0x76", "#0x77",
 
193
        "#0x78", "#0x79", "#0x7a", "#0x7b", "#0x7c", "#0x7d", "#0x7e", "#0x7f",
 
194
        "#0x80", "#0x81", "#0x82", "#0x83", "#0x84", "#0x85", "#0x86", "#0x87",
 
195
        "#0x88", "#0x89", "#0x8a", "#0x8b", "#0x8c", "#0x8d", "#0x8e", "#0x8f",
 
196
        "#0x90", "#0x91", "#0x92", "#0x93", "#0x94", "#0x95", "#0x96", "#0x97",
 
197
        "#0x98", "#0x99", "#0x9a", "#0x9b", "#0x9c", "#0x9d", "#0x9e", "#0x9f",
 
198
        "#0xa0", "#0xa1", "#0xa2", "#0xa3", "#0xa4", "#0xa5", "#0xa6", "#0xa7",
 
199
        "#0xa8", "#0xa9", "#0xaa", "#0xab", "#0xac", "#0xad", "#0xae", "#0xaf",
 
200
        "#0xb0", "#0xb1", "#0xb2", "#0xb3", "#0xb4", "#0xb5", "#0xb6", "#0xb7",
 
201
        "#0xb8", "#0xb9", "#0xba", "#0xbb", "#0xbc", "#0xbd", "#0xbe", "#0xbf",
 
202
        "#0xc0", "#0xc1", "#0xc2", "#0xc3", "#0xc4", "#0xc5", "#0xc6", "#0xc7",
 
203
        "#0xc8", "#0xc9", "#0xca", "#0xcb", "#0xcc", "#0xcd", "#0xce", "#0xcf",
 
204
        "#0xd0", "#0xd1", "#0xd2", "#0xd3", "#0xd4", "#0xd5", "#0xd6", "#0xd7",
 
205
        "#0xd8", "#0xd9", "#0xda", "#0xdb", "#0xdc", "#0xdd", "#0xde", "#0xdf",
 
206
        "#0xe0", "#0xe1", "#0xe2", "#0xe3", "#0xe4", "#0xe5", "#0xe6", "#0xe7",
 
207
        "#0xe8", "#0xe9", "#0xea", "#0xeb", "#0xec", "#0xed", "#0xee", "#0xef",
 
208
        "#0xf0", "#0xf1", "#0xf2", "#0xf3", "#0xf4", "#0xf5", "#0xf6", "#0xf7",
 
209
        "#0xf8", "#0xf9", "#0xfa", "#0xfb", "#0xfc", "#0xfd", "#0xfe", "#0xff"
 
210
};
 
211
 
177
212
/*****************************************************************************/
178
213
 
179
214
char *get_resource(int type,struct dnssession *session,char *buffer,int dots);
1128
1163
 
1129
1164
        answer=session->answer;
1130
1165
        while (answer!=NULL) {
 
1166
            if (answer->type!=global_querytype)
 
1167
                printf("[received type is %s] ",rr_types[answer->type]);
1131
1168
            add_arecord(session,answer,server_name,server_ip);
1132
1169
            answer=answer->next;
1133
1170
        }
1185
1222
        // of what we have, don't go there. This might happen if we are
1186
1223
        // looking through cnames from different domains.
1187
1224
        //
1188
 
        if (strcmp(rrauth->domainname_string,".") &&
 
1225
        if (strcmp(rrauth->domainname_string,".")==0 &&
1189
1226
                strcasecmp(rrauth->domainname_string,
1190
1227
                    host+strlen(host)-strlen(rrauth->domainname_string))!=0) {
1191
1228
            rrauth=rrauth->next;
1235
1272
                strcpy(nextserver_name,printablename(rradd->domainname,1));
1236
1273
                strcpy(nextserver_ip,rradd->data_string);
1237
1274
                retval+=create_session(host,
1238
 
                            nextserver_ip,rradd->type==ns_t_aaaa,
 
1275
                            nextserver_ip,(rradd->type==ns_t_aaaa)?1:0,
1239
1276
                            nextserver_name,rrauth->domainname_string,
1240
1277
                            depth+1,s,(rrauth->next==NULL && found<=1)?1:0);
1241
1278
            } else {
1243
1280
 
1244
1281
                strcpy(nextserver_name,rrauth->data_string);
1245
1282
 
 
1283
#ifdef NOIPV6
 
1284
                for (ip=0;ip<1;ip++) {
 
1285
#else
1246
1286
                for (ip=0;ip<2;ip++) {
 
1287
#endif
1247
1288
                    int count,i;
1248
1289
                    struct hostent *h;
1249
1290
                    char **addr_list=NULL;
1467
1508
    strcpy(argv0,argv[0]);
1468
1509
    if (argv0[strlen(argv[0])-1]=='.') argv0[strlen(argv[0])-1]=0;
1469
1510
 
1470
 
    printf("Tracing to %s via %s, maximum of %d retries\n",
1471
 
        argv0,server_name,global_retries);
 
1511
    printf("Tracing to %s[%s] via %s, maximum of %d retries\n",
 
1512
        argv0,rr_types[global_querytype],server_name,global_retries);
1472
1513
 
1473
1514
    srandom(time(NULL));
1474
1515