summaryrefslogtreecommitdiff
path: root/support/dktools/test-udpa.c
blob: 4292cde2027083b4b5d38413b2048e9c540478e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
	WARNING: This file was generated by dkct.
	Changes you make here will be lost if dkct is run again!
	You should modify the original source and run dkct on it.
	Original source: test-udpa.ctr
*/

/**	@file test-udpa.c The test-udpa module.
*/


#line 1 "test-udpa.ctr"

/*
	test-udap hostname...

	Test the dk4socket_c8_udp_addresses_numeric() function from the
	dk4sock32 module.
*/

#include "dk4conf.h"

#include <stdio.h>

#include "dk4sock.h"



static
void
show_address(dk4_sockaddr_storage_t *addr)
{
  struct sockaddr	*sa;
  struct sockaddr_in	*sa4;
  struct sockaddr_in6	*sa6;
  unsigned long		 ul;
  unsigned short	 us;
  size_t		 i;
  unsigned char		 uc;

  sa  = (struct sockaddr *)addr;
  sa4 = (struct sockaddr_in *)addr;
  sa6 = (struct sockaddr_in6 *)addr;

  switch (sa->sa_family) {
    case AF_INET : {
      ul = ntohl(sa4->sin_addr.s_addr);
      us = ntohs(sa4->sin_port);
      printf(
        "IPv4 %lu.%lu.%lu.%lu %u\n",
	((ul >> 24) & 0x000000FFUL),
	((ul >> 16) & 0x000000FFUL),
	((ul >>  8) & 0x000000FFUL),
	((ul      ) & 0x000000FFUL),
	(unsigned)us
      );
    } break;
    case AF_INET6 : {
      us = ntohs(sa6->sin6_port);
      printf("IPv6 ");
      for (i = 0; i < 16; i++) {
        uc = sa6->sin6_addr.s6_addr[i];
	if ((0 < i) && (0 == (i % 2))) {
	  printf(":");
	}
	printf("%02X", uc);
      }
      printf(" %u\n", (unsigned short)us);
    } break;
    default: {
      printf("ERROR: Unknown address family!\n");
    } break;
  }
}



int main(int argc, char *argv[])
{
  dk4_sockaddr_storage_t	array[2];
  int				i;
  int				res;

  for (i = 1; i < argc; i++) {
    printf("Test \"%s\"\n", argv[i]);
    res = dk4socket_c8_udp_addresses_numeric(
      array, argv[i], 9876, 9876, 0, NULL
    );
    if (DK4_SOCKET_RESULT_SUCCESS == res) {
      show_address(array);
      show_address(&(array[1]));
    } else {
      printf("ERROR: Not found!\n");
    }
    printf("\n");
  }
  return 0;
}