Changes in uspace/app/ping/ping.c [02a09ed:959d2ec] in mainline


Ignore:
File:
1 edited

Legend:

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

    r02a09ed r959d2ec  
    3737#include <errno.h>
    3838#include <fibril_synch.h>
    39 #include <net/socket_codes.h>
    4039#include <inet/dnsr.h>
    4140#include <inet/addr.h>
     
    6463};
    6564
    66 static addr32_t src;
    67 static addr32_t dest;
     65static inet_addr_t src_addr;
     66static inet_addr_t dest_addr;
    6867
    6968static bool ping_repeat = false;
     
    8483static int ping_ev_recv(inetping_sdu_t *sdu)
    8584{
    86         inet_addr_t src_addr;
    87         inet_addr_set(sdu->src, &src_addr);
    88        
    89         inet_addr_t dest_addr;
    90         inet_addr_set(sdu->dest, &dest_addr);
    91        
    92         char *asrc;
    93         int rc = inet_addr_format(&src_addr, &asrc);
     85        char *asrc, *adest;
     86        int rc;
     87
     88        rc = inet_addr_format(&sdu->src, &asrc);
    9489        if (rc != EOK)
    9590                return ENOMEM;
    96        
    97         char *adest;
    98         rc = inet_addr_format(&dest_addr, &adest);
     91
     92        rc = inet_addr_format(&sdu->dest, &adest);
    9993        if (rc != EOK) {
    10094                free(asrc);
    10195                return ENOMEM;
    10296        }
    103        
    10497        printf("Received ICMP echo reply: from %s to %s, seq. no %u, "
    10598            "payload size %zu\n", asrc, adest, sdu->seq_no, sdu->size);
    106        
    107         if (!ping_repeat)
     99
     100        if (!ping_repeat) {
    108101                ping_signal_done();
    109        
     102        }
     103
    110104        free(asrc);
    111105        free(adest);
     
    118112        int rc;
    119113
    120         sdu.src = src;
    121         sdu.dest = dest;
     114        sdu.src = src_addr;
     115        sdu.dest = dest_addr;
    122116        sdu.seq_no = seq_no;
    123117        sdu.data = (void *) "foo";
     
    208202
    209203        /* Parse destination address */
    210         inet_addr_t dest_addr;
    211204        rc = inet_addr_parse(argv[argi], &dest_addr);
    212205        if (rc != EOK) {
     
    217210                        goto error;
    218211                }
    219                
     212
    220213                dest_addr = hinfo->addr;
    221214        }
    222        
    223         uint16_t af = inet_addr_get(&dest_addr, &dest, NULL);
    224         if (af != AF_INET) {
    225                 printf(NAME ": Destination '%s' is not an IPv4 address.\n",
    226                     argv[argi]);
    227                 goto error;
    228         }
    229        
     215
    230216        /* Determine source address */
    231         rc = inetping_get_srcaddr(dest, &src);
     217        rc = inetping_get_srcaddr(&dest_addr, &src_addr);
    232218        if (rc != EOK) {
    233219                printf(NAME ": Failed determining source address.\n");
    234220                goto error;
    235221        }
    236        
    237         inet_addr_t src_addr;
    238         inet_addr_set(src, &src_addr);
    239        
     222
    240223        rc = inet_addr_format(&src_addr, &asrc);
    241224        if (rc != EOK) {
     
    243226                goto error;
    244227        }
    245        
     228
    246229        rc = inet_addr_format(&dest_addr, &adest);
    247230        if (rc != EOK) {
     
    249232                goto error;
    250233        }
    251        
     234
    252235        if (hinfo != NULL) {
    253236                rc = asprintf(&sdest, "%s (%s)", hinfo->cname, adest);
     
    304287        dnsr_hostinfo_destroy(hinfo);
    305288        return 0;
    306        
    307289error:
    308290        free(asrc);
Note: See TracChangeset for help on using the changeset viewer.