source: network-demos/dnstest/test.c @ 8cfa3aa

4.11netdemos-4-5-branchnetwork-demos-4-10-branchnetwork-demos-4-6-branchnetwork-demos-4-7-branchnetwork-demos-4-8-branchnetwork-demos-4-9-branchrtems-4-5-branch
Last change on this file since 8cfa3aa was 8cfa3aa, checked in by Joel Sherrill <joel.sherrill@…>, on Aug 21, 1998 at 1:13:06 PM

New files

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*
2 * Test RTEMS networking
3 *
4 * This program may be distributed and used for any purpose.
5 * I ask only that you:
6 *      1. Leave this author information intact.
7 *      2. Document any changes you make.
8 *
9 * W. Eric Norum
10 * Saskatchewan Accelerator Laboratory
11 * University of Saskatchewan
12 * Saskatoon, Saskatchewan, CANADA
13 * eric@skatter.usask.ca
14 */
15#include <stdio.h>
16#include <string.h>
17#include <errno.h>
18#include <ctype.h>
19#include <rtems.h>
20#include <rtems/rtems_bsdnet.h>
21#include <rtems/error.h>
22#include <sys/types.h>
23#include <sys/socket.h>
24#include <netinet/in.h>
25#include <netdb.h>
26#include <arpa/inet.h>
27
28/*
29 * Show network-related statistics
30 */
31static void
32showStatistics (void)
33{
34        rtems_bsdnet_show_inet_routes ();
35        rtems_bsdnet_show_mbuf_stats ();
36        rtems_bsdnet_show_if_stats ();
37        rtems_bsdnet_show_ip_stats ();
38        rtems_bsdnet_show_icmp_stats ();
39        rtems_bsdnet_show_udp_stats ();
40        rtems_bsdnet_show_tcp_stats ();
41}
42
43/*
44 * Show host information
45 */
46static void
47showhost (struct hostent *hp)
48{
49        char **ap;
50        struct in_addr in;
51
52        if (hp == NULL) {
53                printf ("Host information not available.\n");
54                return;
55        }
56        printf ("Official name: %s\n", hp->h_name);
57        ap = hp->h_aliases;
58        if (ap && *ap) {
59                printf ("Alias%s:\n", ap[1] ? "es" : "");
60                while (*ap)
61                        printf ("    %s\n", *ap++);
62        }
63        if ((hp->h_addrtype == AF_INET) && (hp->h_length == sizeof in)) {
64                ap = hp->h_addr_list;
65                if (ap && *ap) {
66                        printf ("Address%s:", ap[1] ? "es" : "");
67                        while (*ap) {
68                                memcpy (&in, *ap++, sizeof in);
69                                printf (" %s", inet_ntoa (in));
70                        }
71                        printf ("\n");
72                }
73        }
74        else {
75                printf ("Address type: %d\n", hp->h_addrtype);
76                printf ("Address length: %d\n", hp->h_length);
77        }
78}
79
80/*
81 * Test Domain Name Servers
82 */
83void
84testDNS (void)
85{
86        char namebuf[100];
87        char *name, *cp;
88        struct hostent *hp;
89
90        for (;;) {
91                printf ("\nhost? ");
92                if (fgets (namebuf, sizeof namebuf, stdin) == NULL)
93                        return;
94                cp = namebuf;
95                while (isspace (*cp))
96                        cp++;
97                if (cp[0] == '\0') {
98                        showStatistics ();
99                        continue;
100                }
101                name = cp;
102                while (isgraph (*cp))
103                        cp++;
104                *cp = '\0';
105                if (isdigit(*name)) {
106                        struct in_addr addr;
107
108                        addr.s_addr = inet_addr (name);
109                        hp = gethostbyaddr ((char *)&addr, sizeof addr, AF_INET);
110                }
111                else {
112                        hp = gethostbyname (name);
113                }
114                showhost (hp);
115        }
116}
Note: See TracBrowser for help on using the repository browser.