return ret;
}
+static GVariant *__inm_rtnl_addr_get_address(inm_rtnl_addr_s *p_addr)
+{
+ GVariant *ret = NULL;
+
+ ret = g_variant_new_string(p_addr->address);
+
+ return ret;
+}
+
+static GVariant *__inm_rtnl_addr_get_ifidx(inm_rtnl_addr_s *p_addr)
+{
+ GVariant *ret = NULL;
+
+ ret = g_variant_new_int32(p_addr->if_idx);
+
+ return ret;
+}
+
+static GVariant *__inm_rtnl_addr_get_family(inm_rtnl_addr_s *p_addr)
+{
+ GVariant *ret = NULL;
+
+ ret = g_variant_new_int32(p_addr->family);
+
+ return ret;
+}
+
+static GVariant *__inm_rtnl_addr_get_prefix_length(inm_rtnl_addr_s *p_addr)
+{
+ GVariant *ret = NULL;
+
+ ret = g_variant_new_int32(p_addr->prefix_length);
+
+ return ret;
+}
+
+static GVariant *__inm_rtnl_addr_get_scope(inm_rtnl_addr_s *p_addr)
+{
+ GVariant *ret = NULL;
+
+ ret = g_variant_new_int32(p_addr->scope);
+
+ return ret;
+}
+
+static void __inm_rtnl_get_address_variant(gpointer data, gpointer user_data)
+{
+ GVariantBuilder *outer = NULL;
+ GVariantBuilder *inner = NULL;
+ inm_rtnl_addr_s *p_addr = NULL;
+
+ outer = (GVariantBuilder *)user_data;
+ p_addr = (inm_rtnl_addr_s *)data;
+
+ inner = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+
+ if (p_addr->address)
+ g_variant_builder_add(inner,
+ "{sv}",
+ "Address",
+ __inm_rtnl_addr_get_address(p_addr));
+ g_variant_builder_add(inner,
+ "{sv}",
+ "IfIdx",
+ __inm_rtnl_addr_get_ifidx(p_addr));
+ g_variant_builder_add(inner,
+ "{sv}",
+ "Family",
+ __inm_rtnl_addr_get_family(p_addr));
+ g_variant_builder_add(inner,
+ "{sv}",
+ "PrefixLength",
+ __inm_rtnl_addr_get_prefix_length(p_addr));
+ g_variant_builder_add(inner,
+ "{sv}",
+ "Scope",
+ __inm_rtnl_addr_get_scope(p_addr));
+
+ g_variant_builder_add(outer,
+ "(a{sv})",
+ inner);
+
+ g_variant_builder_unref(inner);
+}
+
+static GVariant *__inm_rtnl_link_get_addresses(inm_rtnl_link_s *p_link)
+{
+ GVariantBuilder *builder = NULL;
+ GVariant *gvar_addresses = NULL;
+
+ __INM_FUNC_ENTER__;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a(a{sv})"));
+ g_list_foreach(p_link->list_addr,
+ __inm_rtnl_get_address_variant,
+ builder);
+
+ gvar_addresses = g_variant_new("(a(a{sv}))", builder);
+ g_variant_builder_unref(builder);
+
+ __INM_FUNC_EXIT__;
+ return gvar_addresses;
+}
+
static void __inm_rtnl_link_build(inm_rtnl_link_s *p_link, GVariantBuilder *gb_link)
{
if (p_link->iface_name)
"{sv}",
"SentBytes",
__inm_rtnl_link_get_sent_bytes(p_link));
+ g_variant_builder_add(gb_link,
+ "{sv}",
+ "Addresses",
+ __inm_rtnl_link_get_addresses(p_link));
}
static void __inm_rtnl_get_link_variant(gpointer data, gpointer user_data)