1 /* $Id: dhcpctl.h,v 1.18 2009/11/24 02:06:56 sar Exp $
2 
3    Subroutines providing general support for objects. */
4 
5 /*
6  * Copyright (c) 2004,2009,2014 by Internet Systems Consortium, Inc. ("ISC")
7  * Copyright (c) 1999-2003 by Internet Software Consortium
8  *
9  * Permission to use, copy, modify, and distribute this software for any
10  * purpose with or without fee is hereby granted, provided that the above
11  * copyright notice and this permission notice appear in all copies.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
14  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
16  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
19  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  *
21  *   Internet Systems Consortium, Inc.
22  *   950 Charter Street
23  *   Redwood City, CA 94063
24  *   <info@isc.org>
25  *   https://www.isc.org/
26  *
27  */
28 
29 #ifndef _DHCPCTL_H_
30 #define _DHCPCTL_H_
31 
32 #include <omapip/omapip.h>
33 
34 typedef isc_result_t dhcpctl_status;
35 typedef omapi_object_t *dhcpctl_handle;
36 typedef omapi_data_string_t *dhcpctl_data_string;
37 
38 #define dhcpctl_null_handle ((dhcpctl_handle) 0)
39 
40 #define DHCPCTL_CREATE		OMAPI_CREATE
41 #define DHCPCTL_UPDATE		OMAPI_UPDATE
42 #define DHCPCTL_EXCL		OMAPI_EXCL
43 
44 typedef struct {
45 	OMAPI_OBJECT_PREAMBLE;
46 	omapi_object_t *object;
47 	void *data;
48 	void (*callback) (dhcpctl_handle, dhcpctl_status, void *);
49 } dhcpctl_callback_object_t;
50 
51 typedef struct {
52 	OMAPI_OBJECT_PREAMBLE;
53 	omapi_typed_data_t *rtype;
54 	isc_result_t waitstatus;
55 	omapi_typed_data_t *message;
56 	omapi_handle_t remote_handle;
57 } dhcpctl_remote_object_t;
58 
59 extern omapi_object_type_t *dhcpctl_callback_type;
60 extern omapi_object_type_t *dhcpctl_remote_type;
61 
62 dhcpctl_status dhcpctl_initialize (void);
63 dhcpctl_status dhcpctl_connect (dhcpctl_handle *,
64 				const char *, int, dhcpctl_handle);
65 dhcpctl_status dhcpctl_wait_for_completion (dhcpctl_handle, dhcpctl_status *);
66 dhcpctl_status dhcpctl_get_value (dhcpctl_data_string *,
67 				  dhcpctl_handle, const char *);
68 dhcpctl_status dhcpctl_get_boolean (int *, dhcpctl_handle, const char *);
69 dhcpctl_status dhcpctl_set_value (dhcpctl_handle,
70 				  dhcpctl_data_string, const char *);
71 dhcpctl_status dhcpctl_set_string_value (dhcpctl_handle, const char *,
72 					 const char *);
73 dhcpctl_status dhcpctl_set_data_value (dhcpctl_handle,
74 				       const char *, unsigned, const char *);
75 dhcpctl_status dhcpctl_set_null_value (dhcpctl_handle, const char *);
76 dhcpctl_status dhcpctl_set_boolean_value (dhcpctl_handle, int, const char *);
77 dhcpctl_status dhcpctl_set_int_value (dhcpctl_handle, int, const char *);
78 dhcpctl_status dhcpctl_object_update (dhcpctl_handle, dhcpctl_handle);
79 dhcpctl_status dhcpctl_object_refresh (dhcpctl_handle, dhcpctl_handle);
80 dhcpctl_status dhcpctl_object_remove (dhcpctl_handle, dhcpctl_handle);
81 
82 dhcpctl_status dhcpctl_set_callback (dhcpctl_handle, void *,
83 				     void (*) (dhcpctl_handle,
84 					       dhcpctl_status, void *));
85 isc_result_t dhcpctl_callback_set_value  (omapi_object_t *, omapi_object_t *,
86 					  omapi_data_string_t *,
87 					  omapi_typed_data_t *);
88 isc_result_t dhcpctl_callback_get_value (omapi_object_t *, omapi_object_t *,
89 					 omapi_data_string_t *,
90 					 omapi_value_t **);
91 isc_result_t dhcpctl_callback_destroy (omapi_object_t *, const char *, int);
92 isc_result_t dhcpctl_callback_signal_handler (omapi_object_t *,
93 					      const char *, va_list);
94 isc_result_t dhcpctl_callback_stuff_values (omapi_object_t *,
95 					    omapi_object_t *,
96 					    omapi_object_t *);
97 
98 dhcpctl_status dhcpctl_new_authenticator (dhcpctl_handle *,
99 					  const char *, const char *,
100 					  const unsigned char *, unsigned);
101 
102 dhcpctl_status dhcpctl_open_object (dhcpctl_handle, dhcpctl_handle, int);
103 dhcpctl_status dhcpctl_new_object (dhcpctl_handle *,
104 				   dhcpctl_handle, const char *);
105 isc_result_t dhcpctl_remote_set_value  (omapi_object_t *, omapi_object_t *,
106 					omapi_data_string_t *,
107 					omapi_typed_data_t *);
108 isc_result_t dhcpctl_remote_get_value (omapi_object_t *, omapi_object_t *,
109 				       omapi_data_string_t *,
110 				       omapi_value_t **);
111 isc_result_t dhcpctl_remote_destroy (omapi_object_t *, const char *, int);
112 isc_result_t dhcpctl_remote_signal_handler (omapi_object_t *,
113 					    const char *, va_list);
114 isc_result_t dhcpctl_remote_stuff_values (omapi_object_t *,
115 					  omapi_object_t *,
116 					  omapi_object_t *);
117 isc_result_t dhcpctl_data_string_dereference (dhcpctl_data_string *,
118 					      const char *, int);
119 #endif /* _DHCPCTL_H_ */
120