Changeset cd18cd1 in mainline


Ignore:
Timestamp:
2013-07-19T14:40:24Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
330df83, a5756bc
Parents:
0aa70f4
Message:

add switches for IPv6-only and IPv4-only lookups

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/dnsres/dnsres.c

    r0aa70f4 rcd18cd1  
    3636#include <inet/addr.h>
    3737#include <inet/dnsr.h>
     38#include <net/socket_codes.h>
    3839#include <stdio.h>
    3940#include <stdlib.h>
    4041
    41 #define NAME "dnsres"
     42#define NAME  "dnsres"
    4243
    4344static void print_syntax(void)
    4445{
    45         printf("syntax: " NAME " <host-name>\n");
     46        printf("Syntax: %s [-4|-6] <host-name>\n", NAME);
    4647}
    4748
    4849int main(int argc, char *argv[])
    4950{
    50         int rc;
    51         dnsr_hostinfo_t *hinfo;
    52         char *hname;
    53         char *saddr;
    54 
    55         if (argc != 2) {
     51        if ((argc < 2) || (argc > 3)) {
    5652                print_syntax();
    5753                return 1;
    5854        }
    59 
    60         hname = argv[1];
    61 
    62         rc = dnsr_name2host(hname, &hinfo, 0);
     55       
     56        uint16_t af;
     57        char *hname;
     58       
     59        if (str_cmp(argv[1], "-4") == 0) {
     60                if (argc < 3) {
     61                        print_syntax();
     62                        return 1;
     63                }
     64               
     65                af = AF_INET;
     66                hname = argv[2];
     67        } else if (str_cmp(argv[1], "-6") == 0) {
     68                if (argc < 3) {
     69                        print_syntax();
     70                        return 1;
     71                }
     72               
     73                af = AF_INET6;
     74                hname = argv[2];
     75        } else {
     76                af = 0;
     77                hname = argv[1];
     78        }
     79       
     80        dnsr_hostinfo_t *hinfo;
     81        int rc = dnsr_name2host(hname, &hinfo, af);
    6382        if (rc != EOK) {
    64                 printf(NAME ": Error resolving '%s'.\n", argv[1]);
    65                 return 1;
     83                printf("%s: Error resolving '%s'.\n", NAME, hname);
     84                return rc;
    6685        }
    67 
     86       
     87        char *saddr;
    6888        rc = inet_addr_format(&hinfo->addr, &saddr);
    6989        if (rc != EOK) {
    7090                dnsr_hostinfo_destroy(hinfo);
    71                 printf(NAME ": Out of memory.\n");
    72                 return 1;
     91                printf("%s: Error formatting address.\n", NAME);
     92                return rc;
    7393        }
    74 
     94       
    7595        printf("Host name: %s\n", hname);
     96       
    7697        if (str_cmp(hname, hinfo->cname) != 0)
    7798                printf("Canonical name: %s\n", hinfo->cname);
     99       
    78100        printf("Address: %s\n", saddr);
    79 
     101       
    80102        dnsr_hostinfo_destroy(hinfo);
    81103        free(saddr);
    82 
     104       
    83105        return 0;
    84106}
Note: See TracChangeset for help on using the changeset viewer.