xref: /minix3/external/bsd/dhcp/dist/omapip/test.c (revision 83ee113ee0d94f3844d44065af2311604e9a30ad)
1*83ee113eSDavid van Moolenbroek /*	$NetBSD: test.c,v 1.1.1.2 2014/07/12 11:58:00 spz Exp $	*/
2*83ee113eSDavid van Moolenbroek /* test.c
3*83ee113eSDavid van Moolenbroek 
4*83ee113eSDavid van Moolenbroek    Test code for omapip... */
5*83ee113eSDavid van Moolenbroek 
6*83ee113eSDavid van Moolenbroek /*
7*83ee113eSDavid van Moolenbroek  * Copyright (c) 2009-2010,2013-2014 by Internet Systems Consortium, Inc. ("ISC")
8*83ee113eSDavid van Moolenbroek  * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
9*83ee113eSDavid van Moolenbroek  * Copyright (c) 1999-2003 by Internet Software Consortium
10*83ee113eSDavid van Moolenbroek  *
11*83ee113eSDavid van Moolenbroek  * Permission to use, copy, modify, and distribute this software for any
12*83ee113eSDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
13*83ee113eSDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
14*83ee113eSDavid van Moolenbroek  *
15*83ee113eSDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
16*83ee113eSDavid van Moolenbroek  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17*83ee113eSDavid van Moolenbroek  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
18*83ee113eSDavid van Moolenbroek  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19*83ee113eSDavid van Moolenbroek  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20*83ee113eSDavid van Moolenbroek  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21*83ee113eSDavid van Moolenbroek  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22*83ee113eSDavid van Moolenbroek  *
23*83ee113eSDavid van Moolenbroek  *   Internet Systems Consortium, Inc.
24*83ee113eSDavid van Moolenbroek  *   950 Charter Street
25*83ee113eSDavid van Moolenbroek  *   Redwood City, CA 94063
26*83ee113eSDavid van Moolenbroek  *   <info@isc.org>
27*83ee113eSDavid van Moolenbroek  *   https://www.isc.org/
28*83ee113eSDavid van Moolenbroek  *
29*83ee113eSDavid van Moolenbroek  */
30*83ee113eSDavid van Moolenbroek 
31*83ee113eSDavid van Moolenbroek #include <sys/cdefs.h>
32*83ee113eSDavid van Moolenbroek __RCSID("$NetBSD: test.c,v 1.1.1.2 2014/07/12 11:58:00 spz Exp $");
33*83ee113eSDavid van Moolenbroek 
34*83ee113eSDavid van Moolenbroek #include "config.h"
35*83ee113eSDavid van Moolenbroek 
36*83ee113eSDavid van Moolenbroek #include <time.h>
37*83ee113eSDavid van Moolenbroek #include <stdio.h>
38*83ee113eSDavid van Moolenbroek #include <stdlib.h>
39*83ee113eSDavid van Moolenbroek #include <stdarg.h>
40*83ee113eSDavid van Moolenbroek #include <string.h>
41*83ee113eSDavid van Moolenbroek #include <omapip/result.h>
42*83ee113eSDavid van Moolenbroek #include <sys/time.h>
43*83ee113eSDavid van Moolenbroek #include <omapip/omapip.h>
44*83ee113eSDavid van Moolenbroek #include <omapip/isclib.h>
45*83ee113eSDavid van Moolenbroek 
main(int argc,char ** argv)46*83ee113eSDavid van Moolenbroek int main (int argc, char **argv)
47*83ee113eSDavid van Moolenbroek {
48*83ee113eSDavid van Moolenbroek 	omapi_object_t *listener = (omapi_object_t*)0;
49*83ee113eSDavid van Moolenbroek 	omapi_object_t *connection = (omapi_object_t*)0;
50*83ee113eSDavid van Moolenbroek 	isc_result_t status;
51*83ee113eSDavid van Moolenbroek 
52*83ee113eSDavid van Moolenbroek 	status = dhcp_context_create(DHCP_CONTEXT_PRE_DB | DHCP_CONTEXT_POST_DB,
53*83ee113eSDavid van Moolenbroek 				     NULL, NULL);
54*83ee113eSDavid van Moolenbroek 	if (status != ISC_R_SUCCESS) {
55*83ee113eSDavid van Moolenbroek 		fprintf(stderr, "Can't initialize context: %s\n",
56*83ee113eSDavid van Moolenbroek 			isc_result_totext(status));
57*83ee113eSDavid van Moolenbroek 		exit(1);
58*83ee113eSDavid van Moolenbroek 	}
59*83ee113eSDavid van Moolenbroek 
60*83ee113eSDavid van Moolenbroek 	omapi_init ();
61*83ee113eSDavid van Moolenbroek 
62*83ee113eSDavid van Moolenbroek 	if (argc > 1 && !strcmp (argv [1], "listen")) {
63*83ee113eSDavid van Moolenbroek 		if (argc < 3) {
64*83ee113eSDavid van Moolenbroek 			fprintf (stderr, "Usage: test listen port\n");
65*83ee113eSDavid van Moolenbroek 			exit (1);
66*83ee113eSDavid van Moolenbroek 		}
67*83ee113eSDavid van Moolenbroek 		status = omapi_generic_new (&listener, MDL);
68*83ee113eSDavid van Moolenbroek 		if (status != ISC_R_SUCCESS) {
69*83ee113eSDavid van Moolenbroek 			fprintf (stderr, "omapi_generic_new: %s\n",
70*83ee113eSDavid van Moolenbroek 				 isc_result_totext (status));
71*83ee113eSDavid van Moolenbroek 			exit (1);
72*83ee113eSDavid van Moolenbroek 		}
73*83ee113eSDavid van Moolenbroek 		status = omapi_protocol_listen (listener,
74*83ee113eSDavid van Moolenbroek 						(unsigned)atoi (argv [2]), 1);
75*83ee113eSDavid van Moolenbroek 		if (status != ISC_R_SUCCESS) {
76*83ee113eSDavid van Moolenbroek 			fprintf (stderr, "omapi_listen: %s\n",
77*83ee113eSDavid van Moolenbroek 				 isc_result_totext (status));
78*83ee113eSDavid van Moolenbroek 			exit (1);
79*83ee113eSDavid van Moolenbroek 		}
80*83ee113eSDavid van Moolenbroek 		omapi_dispatch (0);
81*83ee113eSDavid van Moolenbroek 	} else if (argc > 1 && !strcmp (argv [1], "connect")) {
82*83ee113eSDavid van Moolenbroek 		if (argc < 4) {
83*83ee113eSDavid van Moolenbroek 			fprintf (stderr, "Usage: test listen address port\n");
84*83ee113eSDavid van Moolenbroek 			exit (1);
85*83ee113eSDavid van Moolenbroek 		}
86*83ee113eSDavid van Moolenbroek 		status = omapi_generic_new (&connection, MDL);
87*83ee113eSDavid van Moolenbroek 		if (status != ISC_R_SUCCESS) {
88*83ee113eSDavid van Moolenbroek 			fprintf (stderr, "omapi_generic_new: %s\n",
89*83ee113eSDavid van Moolenbroek 				 isc_result_totext (status));
90*83ee113eSDavid van Moolenbroek 			exit (1);
91*83ee113eSDavid van Moolenbroek 		}
92*83ee113eSDavid van Moolenbroek 		status = omapi_protocol_connect (connection,
93*83ee113eSDavid van Moolenbroek 						 argv [2],
94*83ee113eSDavid van Moolenbroek 						 (unsigned)atoi (argv [3]), 0);
95*83ee113eSDavid van Moolenbroek 		fprintf (stderr, "connect: %s\n", isc_result_totext (status));
96*83ee113eSDavid van Moolenbroek 		if (status != ISC_R_SUCCESS)
97*83ee113eSDavid van Moolenbroek 			exit (1);
98*83ee113eSDavid van Moolenbroek 		status = omapi_wait_for_completion (connection, 0);
99*83ee113eSDavid van Moolenbroek 		fprintf (stderr, "completion: %s\n",
100*83ee113eSDavid van Moolenbroek 			 isc_result_totext (status));
101*83ee113eSDavid van Moolenbroek 		if (status != ISC_R_SUCCESS)
102*83ee113eSDavid van Moolenbroek 			exit (1);
103*83ee113eSDavid van Moolenbroek 		/* ... */
104*83ee113eSDavid van Moolenbroek 	} else {
105*83ee113eSDavid van Moolenbroek 		fprintf (stderr, "Usage: test [listen | connect] ...\n");
106*83ee113eSDavid van Moolenbroek 		exit (1);
107*83ee113eSDavid van Moolenbroek 	}
108*83ee113eSDavid van Moolenbroek 
109*83ee113eSDavid van Moolenbroek 	return 0;
110*83ee113eSDavid van Moolenbroek }
111