test.c revision 1.2 1 1.2 christos /* $NetBSD: test.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
2 1.1 christos
3 1.1 christos /* test.c
4 1.1 christos
5 1.1 christos Test code for omapip... */
6 1.1 christos
7 1.1 christos /*
8 1.1 christos * Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC")
9 1.1 christos * Copyright (c) 1999-2003 by Internet Software Consortium
10 1.1 christos *
11 1.1 christos * This Source Code Form is subject to the terms of the Mozilla Public
12 1.1 christos * License, v. 2.0. If a copy of the MPL was not distributed with this
13 1.1 christos * file, You can obtain one at http://mozilla.org/MPL/2.0/.
14 1.1 christos *
15 1.1 christos * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
16 1.1 christos * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17 1.1 christos * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
18 1.1 christos * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 1.1 christos * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 1.1 christos * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21 1.1 christos * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 1.1 christos *
23 1.1 christos * Internet Systems Consortium, Inc.
24 1.1 christos * 950 Charter Street
25 1.1 christos * Redwood City, CA 94063
26 1.1 christos * <info (at) isc.org>
27 1.1 christos * https://www.isc.org/
28 1.1 christos *
29 1.1 christos */
30 1.1 christos
31 1.1 christos #include <sys/cdefs.h>
32 1.2 christos __RCSID("$NetBSD: test.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
33 1.1 christos
34 1.1 christos #include "config.h"
35 1.1 christos
36 1.1 christos #include <time.h>
37 1.1 christos #include <stdio.h>
38 1.1 christos #include <stdlib.h>
39 1.1 christos #include <stdarg.h>
40 1.1 christos #include <string.h>
41 1.1 christos #include <omapip/result.h>
42 1.1 christos #include <sys/time.h>
43 1.1 christos #include <omapip/omapip.h>
44 1.1 christos #include <omapip/isclib.h>
45 1.1 christos
46 1.1 christos int main (int argc, char **argv)
47 1.1 christos {
48 1.1 christos omapi_object_t *listener = (omapi_object_t*)0;
49 1.1 christos omapi_object_t *connection = (omapi_object_t*)0;
50 1.1 christos isc_result_t status;
51 1.1 christos
52 1.1 christos status = dhcp_context_create(DHCP_CONTEXT_PRE_DB | DHCP_CONTEXT_POST_DB,
53 1.1 christos NULL, NULL);
54 1.1 christos if (status != ISC_R_SUCCESS) {
55 1.1 christos fprintf(stderr, "Can't initialize context: %s\n",
56 1.1 christos isc_result_totext(status));
57 1.1 christos exit(1);
58 1.1 christos }
59 1.1 christos
60 1.1 christos status = omapi_init ();
61 1.1 christos if (status != ISC_R_SUCCESS) {
62 1.1 christos fprintf(stderr, "omapi_init failed: %s\n",
63 1.1 christos isc_result_totext(status));
64 1.1 christos exit(1);
65 1.1 christos }
66 1.1 christos
67 1.1 christos if (argc > 1 && !strcmp (argv [1], "listen")) {
68 1.1 christos if (argc < 3) {
69 1.1 christos fprintf (stderr, "Usage: test listen port\n");
70 1.1 christos exit (1);
71 1.1 christos }
72 1.1 christos status = omapi_generic_new (&listener, MDL);
73 1.1 christos if (status != ISC_R_SUCCESS) {
74 1.1 christos fprintf (stderr, "omapi_generic_new: %s\n",
75 1.1 christos isc_result_totext (status));
76 1.1 christos exit (1);
77 1.1 christos }
78 1.1 christos status = omapi_protocol_listen (listener,
79 1.1 christos (unsigned)atoi (argv [2]), 1);
80 1.1 christos if (status != ISC_R_SUCCESS) {
81 1.1 christos fprintf (stderr, "omapi_listen: %s\n",
82 1.1 christos isc_result_totext (status));
83 1.1 christos exit (1);
84 1.1 christos }
85 1.1 christos omapi_dispatch (0);
86 1.1 christos } else if (argc > 1 && !strcmp (argv [1], "connect")) {
87 1.1 christos if (argc < 4) {
88 1.1 christos fprintf (stderr, "Usage: test listen address port\n");
89 1.1 christos exit (1);
90 1.1 christos }
91 1.1 christos status = omapi_generic_new (&connection, MDL);
92 1.1 christos if (status != ISC_R_SUCCESS) {
93 1.1 christos fprintf (stderr, "omapi_generic_new: %s\n",
94 1.1 christos isc_result_totext (status));
95 1.1 christos exit (1);
96 1.1 christos }
97 1.1 christos status = omapi_protocol_connect (connection,
98 1.1 christos argv [2],
99 1.1 christos (unsigned)atoi (argv [3]), 0);
100 1.1 christos fprintf (stderr, "connect: %s\n", isc_result_totext (status));
101 1.1 christos if (status != ISC_R_SUCCESS)
102 1.1 christos exit (1);
103 1.1 christos status = omapi_wait_for_completion (connection, 0);
104 1.1 christos fprintf (stderr, "completion: %s\n",
105 1.1 christos isc_result_totext (status));
106 1.1 christos if (status != ISC_R_SUCCESS)
107 1.1 christos exit (1);
108 1.1 christos /* ... */
109 1.1 christos } else {
110 1.1 christos fprintf (stderr, "Usage: test [listen | connect] ...\n");
111 1.1 christos exit (1);
112 1.1 christos }
113 1.1 christos
114 1.1 christos return 0;
115 1.1 christos }
116