Ignore:
File:
1 edited

Legend:

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

    r26de91a rfff7ef4  
    3737#include <async.h>
    3838#include <stdio.h>
    39 #include <stdlib.h>
    4039#include <str.h>
    4140
     
    5352static char buf[BUF_SIZE];
    5453
    55 static struct sockaddr *address;
    56 static socklen_t addrlen;
     54static struct sockaddr_in addr;
    5755
    5856static uint16_t port;
     
    6462        char *endptr;
    6563        dnsr_hostinfo_t *hinfo;
    66         inet_addr_t addr;
    67         char *addr_s;
    6864
    6965        port = 7;
     
    7369
    7470        /* Connect to local IP address by default */
    75         inet_addr(&addr, 127, 0, 0, 1);
     71        addr.sin_family = AF_INET;
     72        addr.sin_port = htons(port);
     73        addr.sin_addr.s_addr = htonl(0x7f000001);
    7674
    7775        if (argc >= 2) {
    7876                printf("parsing address '%s'\n", argv[1]);
    79                 rc = inet_addr_parse(argv[1], &addr);
     77                rc = inet_pton(AF_INET, argv[1], (uint8_t *)&addr.sin_addr.s_addr);
    8078                if (rc != EOK) {
    8179                        /* Try interpreting as a host name */
    82                         rc = dnsr_name2host(argv[1], &hinfo, ip_v4);
     80                        rc = dnsr_name2host(argv[1], &hinfo);
    8381                        if (rc != EOK) {
    8482                                printf("Error resolving host '%s'.\n", argv[1]);
     
    8684                        }
    8785
    88                         addr = hinfo->addr;
     86                        addr.sin_addr.s_addr = host2uint32_t_be(hinfo->addr.ipv4);
     87                        addr.sin_family = AF_INET;
    8988                }
    90                 rc = inet_addr_format(&addr, &addr_s);
    91                 if (rc != EOK) {
    92                         assert(rc == ENOMEM);
    93                         printf("Out of memory.\n");
    94                         return rc;
    95                 }
    96                 printf("result: rc=%d, ver=%d, addr=%s\n", rc,
    97                     addr.version, addr_s);
    98                 free(addr_s);
     89                printf("result: rc=%d, family=%d, addr=%x\n", rc,
     90                    addr.sin_family, addr.sin_addr.s_addr);
    9991        }
    10092
    10193        if (argc >= 3) {
    10294                printf("parsing port '%s'\n", argv[2]);
    103                 port = htons(strtoul(argv[2], &endptr, 10));
     95                addr.sin_port = htons(strtoul(argv[2], &endptr, 10));
    10496                if (*endptr != '\0') {
    10597                        fprintf(stderr, "Error parsing port\n");
     
    108100        }
    109101
    110         rc = inet_addr_sockaddr(&hinfo->addr, port, &address, &addrlen);
    111         if (rc != EOK) {
    112                 printf("Out of memory.\n");
    113                 return rc;
    114         }
    115 
    116102        printf("socket()\n");
    117         fd = socket(address->sa_family, SOCK_STREAM, IPPROTO_TCP);
     103        fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    118104        printf(" -> %d\n", fd);
    119105        if (fd < 0)
     
    121107
    122108        printf("connect()\n");
    123         rc = connect(fd, address, addrlen);
     109        rc = connect(fd, (struct sockaddr *) &addr, sizeof(addr));
    124110        printf(" -> %d\n", rc);
    125111        if (rc != 0)
     
    144130        printf(" -> %d\n", rc);
    145131
    146         free(address);
    147 
    148132        return 0;
    149133}
Note: See TracChangeset for help on using the changeset viewer.