GNUnet 0.22.2
reclaim_attribute.c File Reference
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_reclaim_plugin.h"
#include "reclaim_attribute.h"
Include dependency graph for reclaim_attribute.c:

Go to the source code of this file.

Data Structures

struct  Plugin
 Handle for a plugin. More...
 

Functions

static void add_plugin (void *cls, const char *library_name, void *lib_ret)
 Add a plugin. More...
 
static void init ()
 Load plugins. More...
 
void RECLAIM_ATTRIBUTE_fini (void)
 
void __attribute__ ((destructor))
 Dual function to init(). More...
 
uint32_t GNUNET_RECLAIM_attribute_typename_to_number (const char *typename)
 Convert a type name to the corresponding number. More...
 
const char * GNUNET_RECLAIM_attribute_number_to_typename (uint32_t type)
 Convert a type number to the corresponding type string. More...
 
int GNUNET_RECLAIM_attribute_string_to_value (uint32_t type, const char *s, void **data, size_t *data_size)
 Convert human-readable version of a 'claim' of an attribute to the binary representation. More...
 
char * GNUNET_RECLAIM_attribute_value_to_string (uint32_t type, const void *data, size_t data_size)
 Convert the 'claim' of an attribute to a string. More...
 
struct GNUNET_RECLAIM_AttributeGNUNET_RECLAIM_attribute_new (const char *attr_name, const struct GNUNET_RECLAIM_Identifier *credential, uint32_t type, const void *data, size_t data_size)
 Create a new attribute claim. More...
 
void GNUNET_RECLAIM_attribute_list_add (struct GNUNET_RECLAIM_AttributeList *al, const char *attr_name, const struct GNUNET_RECLAIM_Identifier *credential, uint32_t type, const void *data, size_t data_size)
 Add a new attribute to a claim list. More...
 
size_t GNUNET_RECLAIM_attribute_list_serialize_get_size (const struct GNUNET_RECLAIM_AttributeList *al)
 Get required size for serialization buffer. More...
 
size_t GNUNET_RECLAIM_attribute_list_serialize (const struct GNUNET_RECLAIM_AttributeList *attrs, char *result)
 Serialize an attribute list. More...
 
struct GNUNET_RECLAIM_AttributeListGNUNET_RECLAIM_attribute_list_deserialize (const char *data, size_t data_size)
 Deserialize an attribute list. More...
 
struct GNUNET_RECLAIM_AttributeListGNUNET_RECLAIM_attribute_list_dup (const struct GNUNET_RECLAIM_AttributeList *attrs)
 Make a (deep) copy of a claim list. More...
 
void GNUNET_RECLAIM_attribute_list_destroy (struct GNUNET_RECLAIM_AttributeList *al)
 Destroy claim list. More...
 
size_t GNUNET_RECLAIM_attribute_serialize_get_size (const struct GNUNET_RECLAIM_Attribute *attr)
 Get required size for serialization buffer. More...
 
size_t GNUNET_RECLAIM_attribute_serialize (const struct GNUNET_RECLAIM_Attribute *attr, char *result)
 Serialize an attribute. More...
 
ssize_t GNUNET_RECLAIM_attribute_deserialize (const char *data, size_t data_size, struct GNUNET_RECLAIM_Attribute **attr)
 Deserialize an attribute. More...
 

Variables

static struct Plugin ** attr_plugins
 Plugins. More...
 
static unsigned int num_plugins
 Number of plugins. More...
 
static int initialized
 Init canary. More...
 

Function Documentation

◆ add_plugin()

static void add_plugin ( void *  cls,
const char *  library_name,
void *  lib_ret 
)
static

Add a plugin.

Parameters
clsclosure
library_namename of the API library
lib_retthe plugin API pointer

Definition at line 75 of file reclaim_attribute.c.

76{
77 struct GNUNET_RECLAIM_AttributePluginFunctions *api = lib_ret;
78 struct Plugin *plugin;
79
81 "Loading attribute plugin `%s'\n",
83 plugin = GNUNET_new (struct Plugin);
84 plugin->api = api;
85 plugin->library_name = GNUNET_strdup (library_name);
87}
static struct GNUNET_TESTING_PluginFunctions * plugin
Plugin to dynamically load a test case.
#define GNUNET_log(kind,...)
@ GNUNET_ERROR_TYPE_DEBUG
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_array_append(arr, len, element)
Append an element to an array (growing the array by one).
static struct Plugin ** attr_plugins
Plugins.
static unsigned int num_plugins
Number of plugins.
Each plugin is required to return a pointer to a struct of this type as the return value from its ent...
Handle for a plugin.
Definition: block.c:38
struct GNUNET_BLOCK_PluginFunctions * api
Plugin API.
Definition: block.c:47
char * library_name
Name of the shared library.
Definition: block.c:42

References Plugin::api, attr_plugins, GNUNET_array_append, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_new, GNUNET_strdup, Plugin::library_name, num_plugins, and plugin.

Referenced by init().

Here is the caller graph for this function:

◆ init()

static void init ( )
static

Load plugins.

Definition at line 94 of file reclaim_attribute.c.

95{
97 return;
100 "libgnunet_plugin_reclaim_attribute_",
101 NULL,
102 &add_plugin,
103 NULL);
104}
@ GNUNET_YES
const struct GNUNET_OS_ProjectData * GNUNET_OS_project_data_gnunet(void)
Return default project data used by 'libgnunetutil' for GNUnet.
void GNUNET_PLUGIN_load_all(const struct GNUNET_OS_ProjectData *pd, const char *basename, void *arg, GNUNET_PLUGIN_LoaderCallback cb, void *cb_cls)
Load all compatible plugins with the given base name.
Definition: plugin.c:401
static void add_plugin(void *cls, const char *library_name, void *lib_ret)
Add a plugin.
static int initialized
Init canary.

References add_plugin(), GNUNET_OS_project_data_gnunet(), GNUNET_PLUGIN_load_all(), GNUNET_YES, and initialized.

Referenced by GNUNET_RECLAIM_attribute_number_to_typename(), GNUNET_RECLAIM_attribute_string_to_value(), GNUNET_RECLAIM_attribute_typename_to_number(), and GNUNET_RECLAIM_attribute_value_to_string().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RECLAIM_ATTRIBUTE_fini()

void RECLAIM_ATTRIBUTE_fini ( void  )

◆ __attribute__()

void __attribute__ ( (destructor)  )

Dual function to init().

Definition at line 112 of file reclaim_attribute.c.

114{
115 struct Plugin *plugin;
116
117 for (unsigned int i = 0; i < num_plugins; i++)
118 {
119 plugin = attr_plugins[i];
120 GNUNET_break (NULL ==
121 GNUNET_PLUGIN_unload (plugin->library_name,
122 plugin->api));
123 GNUNET_free (plugin->library_name);
125 }
127 attr_plugins = NULL;
128}
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.
#define GNUNET_free(ptr)
Wrapper around free.
void * GNUNET_PLUGIN_unload(const char *library_name, void *arg)
Unload plugin (runs the "done" callback and returns whatever "done" returned).
Definition: plugin.c:277

References attr_plugins, GNUNET_break, GNUNET_free, GNUNET_PLUGIN_unload(), num_plugins, and plugin.

Here is the call graph for this function:

Variable Documentation

◆ attr_plugins

◆ num_plugins

◆ initialized

int initialized
static

Init canary.

Definition at line 64 of file reclaim_attribute.c.

Referenced by init().