1 /* $NetBSD: dhcpctl.h,v 1.3 2022/04/03 01:10:58 christos Exp $ */ 2 3 /* Id: dhcpctl.h,v 1.18 2009/11/24 02:06:56 sar Exp 4 5 Subroutines providing general support for objects. */ 6 7 /* 8 * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC") 9 * Copyright (c) 1999-2003 by Internet Software Consortium 10 * 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. 14 * 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. 22 * 23 * Internet Systems Consortium, Inc. 24 * PO Box 360 25 * Newmarket, NH 03857 USA 26 * <info@isc.org> 27 * https://www.isc.org/ 28 * 29 */ 30 31 #ifndef _DHCPCTL_H_ 32 #define _DHCPCTL_H_ 33 34 #include <omapip/omapip.h> 35 36 typedef isc_result_t dhcpctl_status; 37 typedef omapi_object_t *dhcpctl_handle; 38 typedef omapi_data_string_t *dhcpctl_data_string; 39 40 #define dhcpctl_null_handle ((dhcpctl_handle) 0) 41 42 #define DHCPCTL_CREATE OMAPI_CREATE 43 #define DHCPCTL_UPDATE OMAPI_UPDATE 44 #define DHCPCTL_EXCL OMAPI_EXCL 45 46 typedef struct { 47 OMAPI_OBJECT_PREAMBLE; 48 omapi_object_t *object; 49 void *data; 50 void (*callback) (dhcpctl_handle, dhcpctl_status, void *); 51 } dhcpctl_callback_object_t; 52 53 typedef struct { 54 OMAPI_OBJECT_PREAMBLE; 55 omapi_typed_data_t *rtype; 56 isc_result_t waitstatus; 57 omapi_typed_data_t *message; 58 omapi_handle_t remote_handle; 59 } dhcpctl_remote_object_t; 60 61 extern omapi_object_type_t *dhcpctl_callback_type; 62 extern omapi_object_type_t *dhcpctl_remote_type; 63 64 dhcpctl_status dhcpctl_initialize (void); 65 dhcpctl_status dhcpctl_connect (dhcpctl_handle *, 66 const char *, int, dhcpctl_handle); 67 68 dhcpctl_status dhcpctl_timed_connect (dhcpctl_handle *, const char *, 69 int, dhcpctl_handle, struct timeval *); 70 71 dhcpctl_status dhcpctl_wait_for_completion (dhcpctl_handle, dhcpctl_status *); 72 73 dhcpctl_status dhcpctl_timed_wait_for_completion (dhcpctl_handle h, 74 dhcpctl_status *s, 75 struct timeval *t); 76 77 dhcpctl_status dhcpctl_get_value (dhcpctl_data_string *, 78 dhcpctl_handle, const char *); 79 dhcpctl_status dhcpctl_get_boolean (int *, dhcpctl_handle, const char *); 80 dhcpctl_status dhcpctl_set_value (dhcpctl_handle, 81 dhcpctl_data_string, const char *); 82 dhcpctl_status dhcpctl_set_string_value (dhcpctl_handle, const char *, 83 const char *); 84 dhcpctl_status dhcpctl_set_data_value (dhcpctl_handle, 85 const char *, unsigned, const char *); 86 dhcpctl_status dhcpctl_set_null_value (dhcpctl_handle, const char *); 87 dhcpctl_status dhcpctl_set_boolean_value (dhcpctl_handle, int, const char *); 88 dhcpctl_status dhcpctl_set_int_value (dhcpctl_handle, int, const char *); 89 dhcpctl_status dhcpctl_object_update (dhcpctl_handle, dhcpctl_handle); 90 dhcpctl_status dhcpctl_object_refresh (dhcpctl_handle, dhcpctl_handle); 91 dhcpctl_status dhcpctl_object_remove (dhcpctl_handle, dhcpctl_handle); 92 93 dhcpctl_status dhcpctl_set_callback (dhcpctl_handle, void *, 94 void (*) (dhcpctl_handle, 95 dhcpctl_status, void *)); 96 isc_result_t dhcpctl_callback_set_value (omapi_object_t *, omapi_object_t *, 97 omapi_data_string_t *, 98 omapi_typed_data_t *); 99 isc_result_t dhcpctl_callback_get_value (omapi_object_t *, omapi_object_t *, 100 omapi_data_string_t *, 101 omapi_value_t **); 102 isc_result_t dhcpctl_callback_destroy (omapi_object_t *, const char *, int); 103 isc_result_t dhcpctl_callback_signal_handler (omapi_object_t *, 104 const char *, va_list); 105 isc_result_t dhcpctl_callback_stuff_values (omapi_object_t *, 106 omapi_object_t *, 107 omapi_object_t *); 108 109 dhcpctl_status dhcpctl_new_authenticator (dhcpctl_handle *, 110 const char *, const char *, 111 const unsigned char *, unsigned); 112 113 dhcpctl_status dhcpctl_open_object (dhcpctl_handle, dhcpctl_handle, int); 114 dhcpctl_status dhcpctl_new_object (dhcpctl_handle *, 115 dhcpctl_handle, const char *); 116 isc_result_t dhcpctl_remote_set_value (omapi_object_t *, omapi_object_t *, 117 omapi_data_string_t *, 118 omapi_typed_data_t *); 119 isc_result_t dhcpctl_remote_get_value (omapi_object_t *, omapi_object_t *, 120 omapi_data_string_t *, 121 omapi_value_t **); 122 isc_result_t dhcpctl_remote_destroy (omapi_object_t *, const char *, int); 123 isc_result_t dhcpctl_remote_signal_handler (omapi_object_t *, 124 const char *, va_list); 125 isc_result_t dhcpctl_remote_stuff_values (omapi_object_t *, 126 omapi_object_t *, 127 omapi_object_t *); 128 isc_result_t dhcpctl_data_string_dereference (dhcpctl_data_string *, 129 const char *, int); 130 131 dhcpctl_status dhcpctl_disconnect (dhcpctl_handle *, int); 132 133 #endif /* _DHCPCTL_H_ */ 134