summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/adapter.c48
-rw-r--r--src/near.h3
2 files changed, 50 insertions, 1 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 6f10679..eac1900 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -23,6 +23,10 @@
#include <config.h>
#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
#include <glib.h>
#include "near.h"
@@ -31,6 +35,10 @@ static GSList *adapter_list = NULL;
struct near_adapter {
char *path;
+
+ char *name;
+ guint32 idx;
+ guint32 protocols;
};
static void append_path(gpointer value, gpointer user_data)
@@ -38,11 +46,14 @@ static void append_path(gpointer value, gpointer user_data)
struct near_adapter *adapter = value;
DBusMessageIter *iter = user_data;
+ DBG("%s", adapter->path);
+
if (adapter->path == NULL)
return;
dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH,
&adapter->path);
+
}
void __near_adapter_list(DBusMessageIter *iter, void *user_data)
@@ -50,6 +61,31 @@ void __near_adapter_list(DBusMessageIter *iter, void *user_data)
g_slist_foreach(adapter_list, append_path, iter);
}
+int __near_adapter_create(const char *name, guint32 idx, guint32 protocols)
+{
+ struct near_adapter *adapter;
+
+ DBG("name %s idx %d", name, idx);
+
+ adapter = g_try_malloc0(sizeof(struct near_adapter));
+ if (adapter == NULL)
+ return -ENOMEM;
+
+ adapter->name = g_strdup(name);
+ if (adapter->name == NULL) {
+ g_free(adapter);
+ return -ENOMEM;
+ }
+ adapter->idx = idx;
+ adapter->protocols = protocols;
+
+ adapter->path = g_strdup_printf("%s_%d", name, idx);
+
+ adapter_list = g_slist_append(adapter_list, adapter);
+
+ return 0;
+}
+
int __near_adapter_init(void)
{
DBG("");
@@ -59,4 +95,16 @@ int __near_adapter_init(void)
void __near_adapter_cleanup(void)
{
+ GSList *list;
+ struct near_adapter *adapter;
+
+ for (list = adapter_list; list; list = list->next) {
+ adapter = list->data;
+
+ g_free(adapter->name);
+ g_free(adapter->path);
+ g_free(adapter);
+ }
+
+ g_slist_free(adapter_list);
}
diff --git a/src/near.h b/src/near.h
index 45acb6c..30dff74 100644
--- a/src/near.h
+++ b/src/near.h
@@ -55,9 +55,10 @@ DBusMessage *__near_error_invalid_property(DBusMessage *msg);
int __near_manager_init(DBusConnection *conn);
void __near_manager_cleanup(void);
+int __near_adapter_create(const char *name, guint32 idx, guint32 protocols);
+void __near_adapter_list(DBusMessageIter *iter, void *user_data);
int __near_adapter_init(void);
void __near_adapter_cleanup(void);
-void __near_adapter_list(DBusMessageIter *iter, void *user_data);
int __near_netlink_init(void);
void __near_netlink_cleanup(void);