1*8fdd821aSDavid Carlier // RUN: %clangxx -O0 -g %s -o %t
2*8fdd821aSDavid Carlier //
3*8fdd821aSDavid Carlier // REQUIRES: linux, freebsd
4*8fdd821aSDavid Carlier 
5*8fdd821aSDavid Carlier #include <inttypes.h>
6*8fdd821aSDavid Carlier #include <netdb.h>
7*8fdd821aSDavid Carlier #include <stdint.h>
8*8fdd821aSDavid Carlier #include <stdio.h>
9*8fdd821aSDavid Carlier #include <stdlib.h>
10*8fdd821aSDavid Carlier #include <assert.h>
11*8fdd821aSDavid Carlier 
12*8fdd821aSDavid Carlier #if defined(__linux__)
13*8fdd821aSDavid Carlier #define LOOPBACK "loopback"
14*8fdd821aSDavid Carlier #else
15*8fdd821aSDavid Carlier #define LOOPBACK "your-net"
16*8fdd821aSDavid Carlier #endif
17*8fdd821aSDavid Carlier 
test1()18*8fdd821aSDavid Carlier void test1() {
19*8fdd821aSDavid Carlier   struct netent *ntp = getnetent();
20*8fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
21*8fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
22*8fdd821aSDavid Carlier   assert(ntp->n_net == 127);
23*8fdd821aSDavid Carlier   endnetent();
24*8fdd821aSDavid Carlier }
25*8fdd821aSDavid Carlier 
test2()26*8fdd821aSDavid Carlier void test2() {
27*8fdd821aSDavid Carlier   struct netent *ntp = getnetbyname(LOOPBACK);
28*8fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
29*8fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
30*8fdd821aSDavid Carlier   assert(ntp->n_net == 127);
31*8fdd821aSDavid Carlier   endnetent();
32*8fdd821aSDavid Carlier }
33*8fdd821aSDavid Carlier 
test3()34*8fdd821aSDavid Carlier void test3() {
35*8fdd821aSDavid Carlier   struct netent *lb = getnetbyname(LOOPBACK);
36*8fdd821aSDavid Carlier   assert(lb);
37*8fdd821aSDavid Carlier   struct netent *ntp = getnetbyaddr(lb->n_net, lb->n_addrtype);
38*8fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
39*8fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
40*8fdd821aSDavid Carlier   assert(ntp->n_net == 127);
41*8fdd821aSDavid Carlier   endnetent();
42*8fdd821aSDavid Carlier }
43*8fdd821aSDavid Carlier 
test4()44*8fdd821aSDavid Carlier void test4() {
45*8fdd821aSDavid Carlier   setnetent(1);
46*8fdd821aSDavid Carlier 
47*8fdd821aSDavid Carlier   struct netent *ntp = getnetent();
48*8fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
49*8fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
50*8fdd821aSDavid Carlier   assert(ntp->n_net == 127);
51*8fdd821aSDavid Carlier   endnetent();
52*8fdd821aSDavid Carlier }
53*8fdd821aSDavid Carlier 
main(void)54*8fdd821aSDavid Carlier int main(void) {
55*8fdd821aSDavid Carlier   printf("netent\n");
56*8fdd821aSDavid Carlier 
57*8fdd821aSDavid Carlier   test1();
58*8fdd821aSDavid Carlier   test2();
59*8fdd821aSDavid Carlier   test3();
60*8fdd821aSDavid Carlier   test4();
61*8fdd821aSDavid Carlier 
62*8fdd821aSDavid Carlier   return 0;
63*8fdd821aSDavid Carlier }
64