Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / isc-dhcp / omapip / test.c
1 /* test.c
2
3    Test code for omapip... */
4
5 /*
6  * Copyright (c) 1999-2000 Internet Software Consortium.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. Neither the name of The Internet Software Consortium nor the names
19  *    of its contributors may be used to endorse or promote products derived
20  *    from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
23  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
27  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  *
36  * This software has been written for the Internet Software Consortium
37  * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
38  * To learn more about the Internet Software Consortium, see
39  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
40  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
41  * ``http://www.nominum.com''.
42  */
43
44 #include <time.h>
45 #include <stdio.h>
46 #include <stdlib.h>
47 #include <stdarg.h>
48 #include <isc-dhcp/result.h>
49 #include <sys/time.h>
50 #include <omapip/omapip.h>
51
52 int main (int argc, char **argv)
53 {
54         omapi_object_t *listener = (omapi_object_t*)0;
55         omapi_object_t *connection = (omapi_object_t*)0;
56         isc_result_t status;
57
58         omapi_init ();
59
60         if (argc > 1 && !strcmp (argv [1], "listen")) {
61                 if (argc < 3) {
62                         fprintf (stderr, "Usage: test listen port\n");
63                         exit (1);
64                 }
65                 status = omapi_generic_new (&listener, MDL);
66                 if (status != ISC_R_SUCCESS) {
67                         fprintf (stderr, "omapi_generic_new: %s\n",
68                                  isc_result_totext (status));
69                         exit (1);
70                 }
71                 status = omapi_protocol_listen (listener,
72                                                 (unsigned)atoi (argv [2]), 1);
73                 if (status != ISC_R_SUCCESS) {
74                         fprintf (stderr, "omapi_listen: %s\n",
75                                  isc_result_totext (status));
76                         exit (1);
77                 }
78                 omapi_dispatch (0);
79         } else if (argc > 1 && !strcmp (argv [1], "connect")) {
80                 if (argc < 4) {
81                         fprintf (stderr, "Usage: test listen address port\n");
82                         exit (1);
83                 }
84                 status = omapi_generic_new (&connection, MDL);
85                 if (status != ISC_R_SUCCESS) {
86                         fprintf (stderr, "omapi_generic_new: %s\n",
87                                  isc_result_totext (status));
88                         exit (1);
89                 }
90                 status = omapi_protocol_connect (connection,
91                                                  argv [2],
92                                                  (unsigned)atoi (argv [3]), 0);
93                 fprintf (stderr, "connect: %s\n", isc_result_totext (status));
94                 if (status != ISC_R_SUCCESS)
95                         exit (1);
96                 status = omapi_wait_for_completion (connection, 0);
97                 fprintf (stderr, "completion: %s\n",
98                          isc_result_totext (status));
99                 if (status != ISC_R_SUCCESS)
100                         exit (1);
101                 /* ... */
102         } else {
103                 fprintf (stderr, "Usage: test [listen | connect] ...\n");
104                 exit (1);
105         }
106
107         return 0;
108 }