diff options
Diffstat (limited to 'src/realmd/rdcp_util.h')
-rw-r--r-- | src/realmd/rdcp_util.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/realmd/rdcp_util.h b/src/realmd/rdcp_util.h new file mode 100644 index 0000000..aef255a --- /dev/null +++ b/src/realmd/rdcp_util.h @@ -0,0 +1,116 @@ +#ifndef __RDCP_UTIL_H__ +#define __RDCP_UTIL_H__ + +#include <stdarg.h> +#include <stdbool.h> + +#include <konkret/konkret.h> +#include <glib.h> + +#include "rdcp_error.h" + +#define ORGID "LMI_Realmd" +#define REALMD_SERVICE_NAME "OpenLMI Realmd Service" + + +#define G_VARIANT_FREE(variant) \ +{ \ + if (variant) { \ + g_variant_unref(variant); \ + variant = NULL; \ + } \ +} + +#define G_VARIANT_ITER_FREE(iter) \ +{ \ + if (iter) { \ + g_variant_iter_free(iter); \ + iter = NULL; \ + } \ +} + +/** + * octetstring_parse + * @octetstring Pointer to octetstring data + * @data_len_return Pointer to uint32 value which receives the number + * of octets in the octetstring buffer. + * + * Given an octetstring, extract it's length and set the pointer to + * the data. + * + * When specified on elements of type array of uint8, the OctetString + * qualifier indicates that the entire array represents a single octet + * string. The first four array entries shall represent a length + * field, and any subsequent entries shall represent the octets in the + * octet string. The four uint8 values in the length field shall be + * interpreted as a 32-bit unsigned number where the first array entry + * is the most significant byte. The number represented by the length + * field shall be the number of octets in the octet string plus + * four. For example, the empty octet string is represented as { 0x00, + * 0x00, 0x00, 0x04 }. + + * + */ + +KINLINE unsigned char *octetstring_parse(unsigned char *octetstring, CMPIUint32 *data_len) +{ + unsigned char *data = NULL; + *data_len = 0; + if (octetstring) { + *data_len = (octetstring[0] << 24) | + (octetstring[1] << 16) | + (octetstring[2] << 8) | + (octetstring[3]); + *data_len -= 4; + data = octetstring + 4; + } + return data; +} + +#define LMI_InitRealmdServiceKeys(klass, obj, name_space, host_name) \ +{ \ + klass##_Init(obj, _cb, name_space); \ + klass##_Set_Name(obj, REALMD_SERVICE_NAME); \ + klass##_Set_SystemCreationClassName(obj, \ + get_system_creation_class_name()); \ + klass##_Set_SystemName(obj, host_name); \ + klass##_Set_CreationClassName(obj, \ + LMI_RealmdService_ClassName); \ + \ +} + + +#define LMI_InitComputerSystemKeys(klass, obj, name_space, host_name) \ +{ \ + klass##_Init(obj, _cb, name_space); \ + klass##_Set_Name(obj, host_name); \ + klass##_Set_CreationClassName(obj, \ + get_system_creation_class_name()); \ +} + +void +print_properties (GVariant *properties, gchar *format, ...) +__attribute__ ((format (printf, 2, 3))); + +void +print_paths(gchar **paths, gchar *format, ...) +__attribute__ ((format (printf, 2, 3))); + +gboolean +build_g_variant_options_from_KStringA(const KStringA *keys, const KStringA *values, + GVariant **g_variant_return, GError **g_error); + +gboolean +build_g_variant_string_array_from_KStringA(const KStringA *values, + GVariant **g_variant_return, GError **g_error); + +gboolean +dbus_path_from_instance_id(const char *instance_id, gchar **dbus_path_return, GError **g_error); + +gchar * +instance_id_from_dbus_path(const char *dbus_path); + +gchar * +get_data_from_KUint8A(const KUint8A *ka, gsize *size_return); + +#endif /* __RDCP_UTIL_H__ */ |