Annotation of 43BSD/etc/named/tools/nstest.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)nstest.c   4.1 (Berkeley) 5/12/86";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  * Copyright (c) 1986 Regents of the University of California
        !             7:  *     All Rights Reserved
        !             8:  */
        !             9: 
        !            10: #include <sys/types.h>
        !            11: #include <sys/socket.h>
        !            12: #include <netinet/in.h>
        !            13: #include <stdio.h>
        !            14: #include <arpa/nameser.h>
        !            15: #include <resolv.h>
        !            16: 
        !            17: extern char *inet_ntoa();
        !            18: char *progname;
        !            19: FILE *log;
        !            20: 
        !            21: main(argc, argv)
        !            22:        char **argv;
        !            23: {
        !            24:        register char *cp;
        !            25:        struct hostent *hp;
        !            26:        short port = htons(NAMESERVER_PORT);
        !            27:        char buf[BUFSIZ];
        !            28:        char packet[PACKETSZ];
        !            29:        char answer[PACKETSZ];
        !            30:        int n;
        !            31: 
        !            32:        progname = argv[0];
        !            33:        _res.options |= RES_INIT|RES_DEBUG|RES_RECURSE;
        !            34:        while (argc > 1 && argv[1][0] == '-') {
        !            35:                argc--;
        !            36:                cp = *++argv;
        !            37:                while (*++cp)
        !            38:                        switch (*cp) {
        !            39:                        case 'p':
        !            40:                                if (--argc <= 0)
        !            41:                                        usage();
        !            42:                                port = htons(atoi(*++argv));
        !            43:                                break;
        !            44: 
        !            45:                        case 'i':
        !            46:                                _res.options |= RES_IGNTC;
        !            47:                                break;
        !            48: 
        !            49:                        case 'v':
        !            50:                                _res.options |= RES_USEVC|RES_STAYOPEN;
        !            51:                                break;
        !            52: 
        !            53:                        case 'r':
        !            54:                                _res.options &= ~RES_RECURSE;
        !            55:                                break;
        !            56: 
        !            57:                        default:
        !            58:                                usage();
        !            59:                        }
        !            60:        }
        !            61:        _res.nsaddr.sin_family = AF_INET;
        !            62:        _res.nsaddr.sin_addr.s_addr = INADDR_ANY;
        !            63:        _res.nsaddr.sin_port = port;
        !            64:        if (argc > 1)
        !            65:                _res.nsaddr.sin_addr.s_addr = inet_addr(argv[1]);
        !            66:        if (argc > 2) {
        !            67:                log = fopen(argv[2],"w");
        !            68:                if (log == NULL) perror(argv[2]);
        !            69:        }
        !            70:        for (;;) {
        !            71:                printf("> ");
        !            72:                fflush(stdout);
        !            73:                if ((cp = (char *)gets(buf)) == NULL)
        !            74:                        break;
        !            75:                switch (*cp++) {
        !            76:                case 'a':
        !            77:                        n = res_mkquery(QUERY, cp, C_ANY, T_A, (char *)0, 0, NULL,
        !            78:                                packet, sizeof(packet));
        !            79:                        break;
        !            80: 
        !            81:                case 'A':
        !            82:                        n = ntohl(inet_addr(cp));
        !            83:                        putlong(n, cp);
        !            84:                        n = res_mkquery(IQUERY, "", C_IN, T_A, cp, sizeof(long), NULL,
        !            85:                                packet, sizeof(packet));
        !            86:                        break;
        !            87: 
        !            88:                case 'f':
        !            89:                        n = res_mkquery(QUERY, cp, C_ANY, T_UINFO, (char *)0, 0, NULL,
        !            90:                                packet, sizeof(packet));
        !            91:                        break;
        !            92: 
        !            93:                case 'g':
        !            94:                        n = res_mkquery(QUERY, cp, C_ANY, T_GID, (char *)0, 0, NULL,
        !            95:                                packet, sizeof(packet));
        !            96:                        break;
        !            97: 
        !            98:                case 'G':
        !            99:                        *(int *)cp = htonl(atoi(cp));
        !           100:                        n = res_mkquery(IQUERY, "", C_ANY, T_GID, cp, sizeof(int), NULL,
        !           101:                                packet, sizeof(packet));
        !           102:                        break;
        !           103: 
        !           104:                case 'h':
        !           105:                        n = res_mkquery(QUERY, cp, C_IN, T_HINFO, (char *)0, 0, NULL,
        !           106:                                packet, sizeof(packet));
        !           107:                        break;
        !           108: 
        !           109:                case 'm':
        !           110:                        n = res_mkquery(QUERY, cp, C_IN, T_MX, (char *)0, 0, NULL,
        !           111:                                packet, sizeof(packet));
        !           112:                        break;
        !           113: 
        !           114:                case 'M':
        !           115:                        n = res_mkquery(QUERY, cp, C_IN, T_MAILB, (char *)0, 0, NULL,
        !           116:                                packet, sizeof(packet));
        !           117:                        break;
        !           118: 
        !           119:                case 'n':
        !           120:                        n = res_mkquery(QUERY, cp, C_IN, T_NS, (char *)0, 0, NULL,
        !           121:                                packet, sizeof(packet));
        !           122:                        break;
        !           123: 
        !           124:                case 'p':
        !           125:                        n = res_mkquery(QUERY, cp, C_IN, T_PTR, (char *)0, 0, NULL,
        !           126:                                packet, sizeof(packet));
        !           127:                        break;
        !           128: 
        !           129:                case 's':
        !           130:                        n = res_mkquery(QUERY, cp, C_IN, T_SOA, (char *)0, 0, NULL,
        !           131:                                packet, sizeof(packet));
        !           132:                        break;
        !           133: 
        !           134:                case 'u':
        !           135:                        n = res_mkquery(QUERY, cp, C_ANY, T_UID, (char *)0, 0, NULL,
        !           136:                                packet, sizeof(packet));
        !           137:                        break;
        !           138: 
        !           139:                case 'U':
        !           140:                        *(int *)cp = htonl(atoi(cp));
        !           141:                        n = res_mkquery(IQUERY, "", C_ANY, T_UID, cp, sizeof(int), NULL,
        !           142:                                packet, sizeof(packet));
        !           143:                        break;
        !           144: 
        !           145:                case 'x':
        !           146:                        n = res_mkquery(QUERY, cp, C_IN, T_AXFR, (char *)0, 0, NULL,
        !           147:                                packet, sizeof(packet));
        !           148:                        break;
        !           149: 
        !           150:                case 'w':
        !           151:                        n = res_mkquery(QUERY, cp, C_IN, T_WKS, (char *)0, 0, NULL,
        !           152:                                packet, sizeof(packet));
        !           153:                        break;
        !           154: 
        !           155:                case '*':
        !           156:                        n = res_mkquery(QUERY, cp, C_IN, T_ANY, (char *)0, 0, NULL,
        !           157:                                packet, sizeof(packet));
        !           158:                        break;
        !           159: 
        !           160:                default:
        !           161:                        printf("a{host} - query  T_A\n");
        !           162:                        printf("A{addr} - iquery T_A\n");
        !           163:                        printf("f{host} - query  T_UINFO\n");
        !           164:                        printf("g{host} - query  T_GID\n");
        !           165:                        printf("G{gid}  - iquery T_GID\n");
        !           166:                        printf("h{host} - query  T_HINFO\n");
        !           167:                        printf("p{host} - query  T_PTR\n");
        !           168:                        printf("m{host} - query  T_MX\n");
        !           169:                        printf("M{host} - query  T_MAILB\n");
        !           170:                        printf("n{host} - query  T_NS\n");
        !           171:                        printf("s{host} - query  T_SOA\n");
        !           172:                        printf("u{host} - query  T_UID\n");
        !           173:                        printf("U{uid}  - iquery T_UID\n");
        !           174:                        printf("x{host} - query  T_AXFR\n");
        !           175:                        printf("w{host} - query  T_WKS\n");
        !           176:                        printf("*{host} - query  T_ANY\n");
        !           177:                        continue;
        !           178:                }
        !           179:                if (n < 0) {
        !           180:                        printf("res_mkquery: buffer too small\n");
        !           181:                        continue;
        !           182:                }
        !           183:                if (log) {
        !           184:                        fprintf(log,"SEND QUERY\n");
        !           185:                        fp_query(packet, log);
        !           186:                }
        !           187:                n = res_send(packet, n, answer, sizeof(answer));
        !           188:                if (n < 0) {
        !           189:                        printf("res_send: send error\n");
        !           190:                        if (log) fprintf(log, "res_send: send error\n");
        !           191:                }
        !           192:                else {
        !           193:                        int f;
        !           194: 
        !           195:                        f = creat("r", 0644);
        !           196:                        write(f, answer, n);
        !           197:                        (void) close(f);
        !           198:                        if (log) {
        !           199:                                fprintf(log, "GOT ANSWER\n");
        !           200:                                fp_query(answer, log);
        !           201:                        }
        !           202:                }
        !           203:        }
        !           204: }
        !           205: 
        !           206: usage()
        !           207: {
        !           208:        fprintf(stderr, "Usage: %s [-v] [-i] [-r] [-p port] hostaddr\n",
        !           209:                progname);
        !           210:        exit(1);
        !           211: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.