Kea  2.3.2-git
pointer_converter.h
Go to the documentation of this file.
1 // Copyright (C) 2013-2020 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #ifndef POINTER_CONVERTER_H
8 #define POINTER_CONVERTER_H
9 
10 #include <hooks/hooks.h>
11 
12 namespace isc {
13 namespace hooks {
14 
24 
26 public:
34  memset(&pointers_, 0, sizeof(pointers_));
35  pointers_.dlsym_ptr = dlsym_ptr;
36  }
37 
47  memset(&pointers_, 0, sizeof(pointers_));
48  pointers_.callout_ptr = callout_ptr;
49  }
50 
57 
63  void* dlsymPtr() const {
64  return (pointers_.dlsym_ptr);
65  }
66 
71  return (pointers_.callout_ptr);
72  }
73 
77  load_function_ptr loadPtr() const {
78  return (pointers_.load_ptr);
79  }
80 
84  unload_function_ptr unloadPtr() const {
85  return (pointers_.unload_ptr);
86  }
87 
91  version_function_ptr versionPtr() const {
92  return (pointers_.version_ptr);
93  }
94 
98  multi_threading_compatible_function_ptr multiThreadingCompatiblePtr() const {
99  return (pointers_.multi_threading_compatible_ptr);
100  }
101 
103 
104 private:
105 
107  union {
108  void* dlsym_ptr; // void* returned by dlsym
109  CalloutPtr callout_ptr; // Pointer to callout
110  load_function_ptr load_ptr; // Pointer to load function
111  unload_function_ptr unload_ptr; // Pointer to unload function
112  version_function_ptr version_ptr; // Pointer to version function
113  multi_threading_compatible_function_ptr multi_threading_compatible_ptr;
114  // Pointer to multi_threading_compatible function
115  } pointers_;
116 };
117 
118 } // namespace hooks
119 } // namespace isc
120 
121 
122 #endif // POINTER_CONVERTER_H
int(* CalloutPtr)(CalloutHandle &)
Typedef for a callout pointer. (Callouts must have "C" linkage.)
multi_threading_compatible_function_ptr multiThreadingCompatiblePtr() const
Return pointer to multi_threading_compatible function.
version_function_ptr versionPtr() const
Return pointer to version function.
void * dlsymPtr() const
Return pointer returned by dlsym call.
Local class for conversion of void pointers to function pointers.
PointerConverter(void *dlsym_ptr)
Constructor.
load_function_ptr loadPtr() const
Return pointer to load function.
Defines the logger used by the top-level component of kea-lfc.
PointerConverter(CalloutPtr callout_ptr)
Constructor.
unload_function_ptr unload_ptr
multi_threading_compatible_function_ptr multi_threading_compatible_ptr
unload_function_ptr unloadPtr() const
Return pointer to unload function.
CalloutPtr calloutPtr() const
Return pointer to callout function.
version_function_ptr version_ptr