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