#define PCAP_IFNAME "ifname"
#define PCAP_NFLOG_GROUP "nflog_group"
+#define PCAP_DEV_NAME "dev"
+#define PCAP_DEV_DECS "decs"
+#define PCAP_DEV_NET "net"
+#define PCAP_DEV_MASK "mask"
//LCOV_EXCL_START
static GHashTable *g_pcap_tables = NULL;
return STC_ERROR_NONE;
}
-int stc_plugin_pcap_find_alldevs(void)
+int stc_plugin_pcap_find_all_devs(GVariantBuilder *builder)
{
char net[BUFF_SIZE_IP];
char mask[BUFF_SIZE_IP];
}
for (dev = alldevs; dev; dev = dev->next) {
+ GVariantBuilder sub_builder;
+
+ g_variant_builder_init(&sub_builder, G_VARIANT_TYPE("a{sv}"));
+
STC_LOGD("Dev [%s]", dev->name);
+ g_variant_builder_add(&sub_builder, "{sv}", PCAP_DEV_NAME,
+ g_variant_new_string(dev->name));
- if (dev->description)
+ if (dev->description) {
STC_LOGD("Decs [%s]", dev->description);
+ g_variant_builder_add(&sub_builder, "{sv}", PCAP_DEV_DECS,
+ g_variant_new_string(dev->description));
+ }
if (pcap_lookupnet(dev->name, &netp, &maskp, errbuf) == -1) {
STC_LOGE("Failed to look up net [%s]", errbuf);
+ g_variant_builder_add_value(builder, g_variant_builder_end(&sub_builder));
continue;
}
inet_ntop(AF_INET, &netp, net, BUFF_SIZE_IP);
STC_LOGD("Net [%s]", net);
+ g_variant_builder_add(&sub_builder, "{sv}", PCAP_DEV_NET,
+ g_variant_new_string(net));
inet_ntop(AF_INET, &maskp, mask, BUFF_SIZE_IP);
STC_LOGD("Mask [%s]", mask);
+ g_variant_builder_add(&sub_builder, "{sv}", PCAP_DEV_MASK,
+ g_variant_new_string(mask));
+
+ g_variant_builder_add_value(builder, g_variant_builder_end(&sub_builder));
}
pcap_freealldevs(alldevs);
stc_plugin_pcap_lookup_dev,
.lookup_net =
stc_plugin_pcap_lookup_net,
- .find_alldevs =
- stc_plugin_pcap_find_alldevs,
+ .find_all_devs =
+ stc_plugin_pcap_find_all_devs,
.register_loop =
stc_plugin_pcap_register_loop,
.unregister_loop =
__STC_LOG_FUNC_EXIT__;
return TRUE;
}
+
+gboolean handle_pcap_find_all_devs(StcPcap *object,
+ GDBusMethodInvocation *invocation,
+ void *user_data)
+{
+ __STC_LOG_FUNC_ENTER__;
+ GVariantBuilder *builder = NULL;
+ GVariant *return_parameters = NULL;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}"));
+
+ stc_plugin_pcap_find_all_devs(builder);
+
+ return_parameters = g_variant_new("(aa{sv})", builder);
+ g_variant_builder_unref(builder);
+
+ DEBUG_GDBUS_VARIANT("Return parameters: ", return_parameters);
+ STC_DBUS_REPLY(invocation, return_parameters);
+ __STC_LOG_FUNC_EXIT__;
+ return TRUE;
+}