1 /* $NetBSD: omapip_p.h,v 1.1.1.4 2014/07/12 11:57:57 spz Exp $ */
4 Private master include file for the OMAPI library. */
7 * Copyright (c) 2009-2010,2014 by Internet Systems Consortium, Inc. ("ISC")
8 * Copyright (c) 2004,2007 by Internet Systems Consortium, Inc. ("ISC")
9 * Copyright (c) 1996-2003 by Internet Software Consortium
11 * Permission to use, copy, modify, and distribute this software for any
12 * purpose with or without fee is hereby granted, provided that the above
13 * copyright notice and this permission notice appear in all copies.
15 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
16 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
18 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 * Internet Systems Consortium, Inc.
25 * Redwood City, CA 94063
27 * https://www.isc.org/
31 #ifndef __OMAPIP_OMAPIP_P_H__
32 #define __OMAPIP_OMAPIP_P_H__
35 #include <sys/types.h>
36 #include <netinet/in.h>
37 #include <sys/socket.h>
39 #include <arpa/inet.h>
43 #define fd_set cygwin_fd_set
44 #include <sys/types.h>
57 * XXX: I'm not sure why these were here.
65 #include <omapip/convert.h>
66 #include <omapip/hash.h>
67 #include <omapip/omapip.h>
68 #include <omapip/trace.h>
70 /* DST_API control flags */
71 /* These are used in functions dst_sign_data and dst_verify_data */
72 #define SIG_MODE_INIT 1 /* initalize digest */
73 #define SIG_MODE_UPDATE 2 /* add data to digest */
74 #define SIG_MODE_FINAL 4 /* generate/verify signature */
75 #define SIG_MODE_ALL (SIG_MODE_INIT|SIG_MODE_UPDATE|SIG_MODE_FINAL)
77 /* OMAPI protocol header, version 1.00 */
79 u_int32_t authlen
; /* Length of authenticator. */
80 u_int32_t authid
; /* Authenticator object ID. */
81 u_int32_t op
; /* Opcode. */
82 omapi_handle_t handle
; /* Handle of object being operated on,
84 u_int32_t id
; /* Transaction ID. */
85 u_int32_t rid
; /* ID of transaction to which this is a response. */
86 } omapi_protocol_header_t
;
88 #define OMAPI_PROTOCOL_VERSION 100
90 #define OMAPI_OP_OPEN 1
91 #define OMAPI_OP_REFRESH 2
92 #define OMAPI_OP_UPDATE 3
93 #define OMAPI_OP_NOTIFY 4
94 #define OMAPI_OP_STATUS 5
95 #define OMAPI_OP_DELETE 6
98 omapi_connection_unconnected
,
99 omapi_connection_connecting
,
100 omapi_connection_connected
,
101 omapi_connection_disconnecting
,
102 omapi_connection_closed
103 } omapi_connection_state_t
;
106 omapi_protocol_intro_wait
,
107 omapi_protocol_header_wait
,
108 omapi_protocol_signature_wait
,
109 omapi_protocol_name_wait
,
110 omapi_protocol_name_length_wait
,
111 omapi_protocol_value_wait
,
112 omapi_protocol_value_length_wait
113 } omapi_protocol_state_t
;
115 typedef struct __omapi_message_object
{
116 OMAPI_OBJECT_PREAMBLE
;
117 struct __omapi_message_object
*next
, *prev
;
118 omapi_object_t
*object
;
119 omapi_object_t
*notify_object
;
120 struct __omapi_protocol_object
*protocol_object
;
122 omapi_typed_data_t
*authenticator
;
124 omapi_object_t
*id_object
;
129 } omapi_message_object_t
;
131 typedef struct __omapi_remote_auth
{
132 struct __omapi_remote_auth
*next
;
133 omapi_handle_t remote_handle
;
135 } omapi_remote_auth_t
;
137 typedef struct __omapi_protocol_object
{
138 OMAPI_OBJECT_PREAMBLE
;
139 u_int32_t header_size
;
140 u_int32_t protocol_version
;
143 omapi_protocol_state_t state
; /* Input state. */
144 int reading_message_values
; /* True if reading message-specific
146 omapi_message_object_t
*message
; /* Incoming message. */
147 omapi_data_string_t
*name
; /* Incoming name. */
148 omapi_typed_data_t
*value
; /* Incoming value. */
149 isc_result_t verify_result
;
150 omapi_remote_auth_t
*default_auth
; /* Default authinfo to use. */
151 omapi_remote_auth_t
*remote_auth_list
; /* Authenticators active on
154 isc_boolean_t insecure
; /* Set to allow unauthenticated
157 isc_result_t (*verify_auth
) (omapi_object_t
*, omapi_auth_key_t
*);
158 } omapi_protocol_object_t
;
161 OMAPI_OBJECT_PREAMBLE
;
163 isc_boolean_t insecure
; /* Set to allow unauthenticated
166 isc_result_t (*verify_auth
) (omapi_object_t
*, omapi_auth_key_t
*);
167 } omapi_protocol_listener_object_t
;
169 #include <omapip/buffer.h>
171 typedef struct __omapi_listener_object
{
172 OMAPI_OBJECT_PREAMBLE
;
173 int socket
; /* Connection socket. */
175 struct sockaddr_in address
;
176 isc_result_t (*verify_addr
) (omapi_object_t
*, omapi_addr_t
*);
177 } omapi_listener_object_t
;
179 typedef struct __omapi_connection_object
{
180 OMAPI_OBJECT_PREAMBLE
;
181 int socket
; /* Connection socket. */
183 omapi_connection_state_t state
;
184 struct sockaddr_in remote_addr
;
185 struct sockaddr_in local_addr
;
186 omapi_addr_list_t
*connect_list
; /* List of addresses to which
188 int cptr
; /* Current element we are connecting to. */
189 u_int32_t bytes_needed
; /* Bytes of input needed before wakeup. */
190 u_int32_t in_bytes
; /* Bytes of input already buffered. */
191 omapi_buffer_t
*inbufs
;
192 u_int32_t out_bytes
; /* Bytes of output in buffers. */
193 omapi_buffer_t
*outbufs
;
194 omapi_listener_object_t
*listener
; /* Listener that accepted this
195 connection, if any. */
196 dst_key_t
*in_key
; /* Authenticator signing incoming
198 void *in_context
; /* Input hash context. */
199 dst_key_t
*out_key
; /* Authenticator signing outgoing
201 void *out_context
; /* Output hash context. */
202 } omapi_connection_object_t
;
204 typedef struct __omapi_io_object
{
205 OMAPI_OBJECT_PREAMBLE
;
206 struct __omapi_io_object
*next
;
207 int (*readfd
) (omapi_object_t
*);
208 int (*writefd
) (omapi_object_t
*);
209 isc_result_t (*reader
) (omapi_object_t
*);
210 isc_result_t (*writer
) (omapi_object_t
*);
211 isc_result_t (*reaper
) (omapi_object_t
*);
213 isc_boolean_t closed
; /* ISC_TRUE = closed, do not use */
216 typedef struct __omapi_generic_object
{
217 OMAPI_OBJECT_PREAMBLE
;
218 omapi_value_t
**values
;
221 } omapi_generic_object_t
;
223 typedef struct __omapi_waiter_object
{
224 OMAPI_OBJECT_PREAMBLE
;
226 isc_result_t waitstatus
;
227 struct __omapi_waiter_object
*next
;
228 } omapi_waiter_object_t
;
230 #define OMAPI_HANDLE_TABLE_SIZE 120
232 typedef struct __omapi_handle_table
{
233 omapi_handle_t first
, limit
;
237 omapi_object_t
*object
;
238 struct __omapi_handle_table
*table
;
239 } children
[OMAPI_HANDLE_TABLE_SIZE
];
240 } omapi_handle_table_t
;
242 #include <omapip/alloc.h>
244 OMAPI_OBJECT_ALLOC_DECL (omapi_protocol
, omapi_protocol_object_t
,
246 OMAPI_OBJECT_ALLOC_DECL (omapi_protocol_listener
,
247 omapi_protocol_listener_object_t
,
248 omapi_type_protocol_listener
)
249 OMAPI_OBJECT_ALLOC_DECL (omapi_connection
,
250 omapi_connection_object_t
, omapi_type_connection
)
251 OMAPI_OBJECT_ALLOC_DECL (omapi_listener
,
252 omapi_listener_object_t
, omapi_type_listener
)
253 OMAPI_OBJECT_ALLOC_DECL (omapi_io
,
254 omapi_io_object_t
, omapi_type_io_object
)
255 OMAPI_OBJECT_ALLOC_DECL (omapi_waiter
,
256 omapi_waiter_object_t
, omapi_type_waiter
)
257 OMAPI_OBJECT_ALLOC_DECL (omapi_generic
,
258 omapi_generic_object_t
, omapi_type_generic
)
259 OMAPI_OBJECT_ALLOC_DECL (omapi_message
,
260 omapi_message_object_t
, omapi_type_message
)
262 isc_result_t
omapi_connection_sign_data (int mode
,
265 const unsigned char *data
,
267 omapi_typed_data_t
**result
);
268 isc_result_t
omapi_listener_connect (omapi_connection_object_t
**obj
,
269 omapi_listener_object_t
*listener
,
271 struct sockaddr_in
*remote_addr
);
272 void omapi_listener_trace_setup (void);
273 void omapi_connection_trace_setup (void);
274 void omapi_buffer_trace_setup (void);
275 void omapi_connection_register (omapi_connection_object_t
*,
277 OMAPI_ARRAY_TYPE_DECL(omapi_listener
, omapi_listener_object_t
);
278 OMAPI_ARRAY_TYPE_DECL(omapi_connection
, omapi_connection_object_t
);
280 isc_result_t
omapi_handle_clear(omapi_handle_t
);
282 extern int log_priority
;
283 extern int log_perror
;
284 extern void (*log_cleanup
) (void);
286 void log_fatal (const char *, ...)
287 __attribute__((__format__(__printf__
,1,2))) ISC_DHCP_NORETURN
;
288 int log_error (const char *, ...)
289 __attribute__((__format__(__printf__
,1,2)));
290 int log_info (const char *, ...)
291 __attribute__((__format__(__printf__
,1,2)));
292 int log_debug (const char *, ...)
293 __attribute__((__format__(__printf__
,1,2)));
294 void do_percentm (char *obuf
, const char *ibuf
);
296 isc_result_t
uerr2isc (int);
297 isc_result_t
ns_rcode_to_isc (int);
299 extern omapi_message_object_t
*omapi_registered_messages
;
301 #endif /* __OMAPIP_OMAPIP_P_H__ */