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