xref: /netbsd-src/external/mpl/dhcp/dist/omapip/test.c (revision f407d9293b6650aa8c33d6a995f797bb6aaefd90)
1*f407d929Schristos /*	$NetBSD: test.c,v 1.3 2022/04/03 01:10:59 christos Exp $	*/
26fb29d29Schristos 
36fb29d29Schristos /* test.c
46fb29d29Schristos 
56fb29d29Schristos    Test code for omapip... */
66fb29d29Schristos 
76fb29d29Schristos /*
8*f407d929Schristos  * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC")
96fb29d29Schristos  * Copyright (c) 1999-2003 by Internet Software Consortium
106fb29d29Schristos  *
116fb29d29Schristos  * This Source Code Form is subject to the terms of the Mozilla Public
126fb29d29Schristos  * License, v. 2.0. If a copy of the MPL was not distributed with this
136fb29d29Schristos  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
146fb29d29Schristos  *
156fb29d29Schristos  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
166fb29d29Schristos  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
176fb29d29Schristos  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
186fb29d29Schristos  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
196fb29d29Schristos  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
206fb29d29Schristos  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
216fb29d29Schristos  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
226fb29d29Schristos  *
236fb29d29Schristos  *   Internet Systems Consortium, Inc.
24*f407d929Schristos  *   PO Box 360
25*f407d929Schristos  *   Newmarket, NH 03857 USA
266fb29d29Schristos  *   <info@isc.org>
276fb29d29Schristos  *   https://www.isc.org/
286fb29d29Schristos  *
296fb29d29Schristos  */
306fb29d29Schristos 
316fb29d29Schristos #include <sys/cdefs.h>
32*f407d929Schristos __RCSID("$NetBSD: test.c,v 1.3 2022/04/03 01:10:59 christos Exp $");
336fb29d29Schristos 
346fb29d29Schristos #include "config.h"
356fb29d29Schristos 
366fb29d29Schristos #include <time.h>
376fb29d29Schristos #include <stdio.h>
386fb29d29Schristos #include <stdlib.h>
396fb29d29Schristos #include <stdarg.h>
406fb29d29Schristos #include <string.h>
416fb29d29Schristos #include <omapip/result.h>
426fb29d29Schristos #include <sys/time.h>
436fb29d29Schristos #include <omapip/omapip.h>
446fb29d29Schristos #include <omapip/isclib.h>
456fb29d29Schristos 
main(int argc,char ** argv)466fb29d29Schristos int main (int argc, char **argv)
476fb29d29Schristos {
486fb29d29Schristos 	omapi_object_t *listener = (omapi_object_t*)0;
496fb29d29Schristos 	omapi_object_t *connection = (omapi_object_t*)0;
506fb29d29Schristos 	isc_result_t status;
516fb29d29Schristos 
526fb29d29Schristos 	status = dhcp_context_create(DHCP_CONTEXT_PRE_DB | DHCP_CONTEXT_POST_DB,
536fb29d29Schristos 				     NULL, NULL);
546fb29d29Schristos 	if (status != ISC_R_SUCCESS) {
556fb29d29Schristos 		fprintf(stderr, "Can't initialize context: %s\n",
566fb29d29Schristos 			isc_result_totext(status));
576fb29d29Schristos 		exit(1);
586fb29d29Schristos 	}
596fb29d29Schristos 
606fb29d29Schristos 	status = omapi_init ();
616fb29d29Schristos 	if (status != ISC_R_SUCCESS) {
626fb29d29Schristos 		fprintf(stderr, "omapi_init failed: %s\n",
636fb29d29Schristos 			isc_result_totext(status));
646fb29d29Schristos 		exit(1);
656fb29d29Schristos 	}
666fb29d29Schristos 
676fb29d29Schristos 	if (argc > 1 && !strcmp (argv [1], "listen")) {
686fb29d29Schristos 		if (argc < 3) {
696fb29d29Schristos 			fprintf (stderr, "Usage: test listen port\n");
706fb29d29Schristos 			exit (1);
716fb29d29Schristos 		}
726fb29d29Schristos 		status = omapi_generic_new (&listener, MDL);
736fb29d29Schristos 		if (status != ISC_R_SUCCESS) {
746fb29d29Schristos 			fprintf (stderr, "omapi_generic_new: %s\n",
756fb29d29Schristos 				 isc_result_totext (status));
766fb29d29Schristos 			exit (1);
776fb29d29Schristos 		}
786fb29d29Schristos 		status = omapi_protocol_listen (listener,
796fb29d29Schristos 						(unsigned)atoi (argv [2]), 1);
806fb29d29Schristos 		if (status != ISC_R_SUCCESS) {
816fb29d29Schristos 			fprintf (stderr, "omapi_listen: %s\n",
826fb29d29Schristos 				 isc_result_totext (status));
836fb29d29Schristos 			exit (1);
846fb29d29Schristos 		}
856fb29d29Schristos 		omapi_dispatch (0);
866fb29d29Schristos 	} else if (argc > 1 && !strcmp (argv [1], "connect")) {
876fb29d29Schristos 		if (argc < 4) {
886fb29d29Schristos 			fprintf (stderr, "Usage: test listen address port\n");
896fb29d29Schristos 			exit (1);
906fb29d29Schristos 		}
916fb29d29Schristos 		status = omapi_generic_new (&connection, MDL);
926fb29d29Schristos 		if (status != ISC_R_SUCCESS) {
936fb29d29Schristos 			fprintf (stderr, "omapi_generic_new: %s\n",
946fb29d29Schristos 				 isc_result_totext (status));
956fb29d29Schristos 			exit (1);
966fb29d29Schristos 		}
976fb29d29Schristos 		status = omapi_protocol_connect (connection,
986fb29d29Schristos 						 argv [2],
996fb29d29Schristos 						 (unsigned)atoi (argv [3]), 0);
1006fb29d29Schristos 		fprintf (stderr, "connect: %s\n", isc_result_totext (status));
1016fb29d29Schristos 		if (status != ISC_R_SUCCESS)
1026fb29d29Schristos 			exit (1);
1036fb29d29Schristos 		status = omapi_wait_for_completion (connection, 0);
1046fb29d29Schristos 		fprintf (stderr, "completion: %s\n",
1056fb29d29Schristos 			 isc_result_totext (status));
1066fb29d29Schristos 		if (status != ISC_R_SUCCESS)
1076fb29d29Schristos 			exit (1);
1086fb29d29Schristos 		/* ... */
1096fb29d29Schristos 	} else {
1106fb29d29Schristos 		fprintf (stderr, "Usage: test [listen | connect] ...\n");
1116fb29d29Schristos 		exit (1);
1126fb29d29Schristos 	}
1136fb29d29Schristos 
1146fb29d29Schristos 	return 0;
1156fb29d29Schristos }
116