This email list is read-only. Emails sent to this list will be discarded
----------------------------------
.gitignore | 1 +
doc/Makefile.am | 2 +-
include/element.h | 16 +-
include/property.h | 22 ++-
plugins/Makefile.am | 4 +-
plugins/bluetooth.c | 2 +-
plugins/dhclient.c | 13 +-
plugins/ethernet.c | 62 ++++++---
plugins/hal.c | 19 ++-
plugins/inet.c | 59 ++++++++
plugins/inet.h | 22 +++
plugins/ipv4.c | 13 +-
plugins/resolvconf.c | 29 +++-
plugins/resolvfile.c | 4 +-
plugins/supplicant.c | 13 +-
plugins/wifi.c | 17 +--
src/element.c | 402 +++++++++++++++++++++++++++++++++++++++++++++----
17 files changed, 581 insertions(+), 119 deletions(-)
New commits:
commit f5621af4d484694ad91ba9a78e7b89b2f8cf31e6
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 21:19:13 2008 +0200
Remove backup files at cleanup stage
commit a977d2f3861ad3344238326c744974009545c591
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 21:14:09 2008 +0200
Use INET helpers for setting the interface name
commit 7f30feb2513f6a1609f291e4e9c647a08434d2c2
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 21:12:59 2008 +0200
Fixup resolver plugins to use INET helpers
commit 85f79afa2392e6ef108812685b8a1901448c4ebb
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 21:11:44 2008 +0200
Fixup breakage due to new property constants
commit 135f8ccd37f76068bc75e21f23fb68e74be57c0e
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 21:11:01 2008 +0200
Add INET helper functions
commit 29fdbe87a8f2e0f13dcc027ba78eefe85263907d
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 20:09:10 2008 +0200
Use element->index and element->name variables
commit 7f4054b0b2d6c43c59caef670b4330895337d992
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Sep 1 20:07:39 2008 +0200
Fixup due to element API changes
commit 074d489a01de3dfb1fa2b8e9ad48bf42fff1302b
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Aug 25 11:19:06 2008 +0200
Add more advanced properties implementation
commit 910534c6b94fa23ade84f402e4aca9a9575e390a
Author: Marcel Holtmann <[EMAIL PROTECTED]>
Date: Mon Aug 25 11:14:14 2008 +0200
Add auto-generated doc/dbus directory
Diff in this email is a maximum of 400 lines.
diff --git a/.gitignore b/.gitignore
index f4b0834..dd020ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,4 +36,5 @@ doc/connman-*.txt
doc/*.sgml
doc/version.xml
doc/xml
+doc/dbus
doc/html
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b9ade0f..92d9540 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -29,7 +29,7 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/gdbus \
GTKDOC_LIBS = $(DBUS_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(GTHREAD_LIBS)
MAINTAINERCLEANFILES = Makefile.in \
- $(DOC_MODULE).types $(DOC_MODULE)-*.txt *.sgml
+ $(DOC_MODULE).types $(DOC_MODULE)-*.txt *.sgml *.bak
if ENABLE_GTK_DOC
include $(top_srcdir)/doc/gtk-doc.make
diff --git a/include/element.h b/include/element.h
index e2d7ea8..57103d3 100644
--- a/include/element.h
+++ b/include/element.h
@@ -73,6 +73,7 @@ struct connman_driver;
struct connman_element {
gint refcount;
GStaticMutex mutex;
+ gint index;
gchar *name;
gchar *path;
enum connman_element_type type;
@@ -89,12 +90,6 @@ struct connman_element {
GSList *properties;
struct {
- int index;
- short flags;
- gchar *name;
- } netdev;
-
- struct {
gchar *identifier;
} network;
@@ -111,16 +106,19 @@ struct connman_element {
#define connman_element_lock(element) g_static_mutex_lock(&(element)->mutex)
#define connman_element_unlock(element)
g_static_mutex_unlock(&(element)->mutex)
-extern struct connman_element *connman_element_create(void);
+extern struct connman_element *connman_element_create(const char *name);
extern struct connman_element *connman_element_ref(struct connman_element
*element);
extern void connman_element_unref(struct connman_element *element);
extern int connman_element_add_static_property(struct connman_element *element,
const char *name, int type, const void *value);
+extern int connman_element_define_properties(struct connman_element *element,
...);
+extern int connman_element_create_property(struct connman_element *element,
+ const char *name, int type);
extern int connman_element_set_property(struct connman_element *element,
- enum connman_property_type type, const void *value);
+ enum connman_property_id id, const void *value);
extern int connman_element_get_value(struct connman_element *element,
- enum connman_property_type type, void *value);
+ enum connman_property_id id, void *value);
extern int connman_element_register(struct connman_element *element,
struct connman_element *parent);
diff --git a/include/property.h b/include/property.h
index d343948..14198be 100644
--- a/include/property.h
+++ b/include/property.h
@@ -32,21 +32,29 @@ extern "C" {
* @short_description: Functions for handling properties
*/
-enum connman_property_type {
- CONNMAN_PROPERTY_TYPE_INVALID = 0,
+enum connman_property_id {
+ CONNMAN_PROPERTY_ID_INVALID = 0,
- CONNMAN_PROPERTY_TYPE_IPV4_ADDRESS,
- CONNMAN_PROPERTY_TYPE_IPV4_NETMASK,
- CONNMAN_PROPERTY_TYPE_IPV4_GATEWAY,
- CONNMAN_PROPERTY_TYPE_IPV4_NAMESERVER,
+ CONNMAN_PROPERTY_ID_IPV4_METHOD,
+ CONNMAN_PROPERTY_ID_IPV4_ADDRESS,
+ CONNMAN_PROPERTY_ID_IPV4_NETMASK,
+ CONNMAN_PROPERTY_ID_IPV4_GATEWAY,
+ CONNMAN_PROPERTY_ID_IPV4_NAMESERVER,
};
+/**
+ * connman_property_flags:
+ * @CONNMAN_PROPERTY_FLAG_STATIC: read-only property
+ * @CONNMAN_PROPERTY_FLAG_REFERENCE: inheritated value (reference only)
+ */
enum connman_property_flags {
- CONNMAN_PROPERTY_FLAG_STATIC = (1 << 0),
+ CONNMAN_PROPERTY_FLAG_STATIC = (1 << 0),
+ CONNMAN_PROPERTY_FLAG_REFERENCE = (1 << 1),
};
struct connman_property {
enum connman_property_flags flags;
+ enum connman_property_id id;
char *name;
int type;
void *value;
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index d210f46..b4e9805 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -8,7 +8,7 @@ rtnllink_la_SOURCES = rtnllink.c
ethernet_la_SOURCES = ethernet.c
-wifi_la_SOURCES = wifi.c supplicant.h supplicant.c
+wifi_la_SOURCES = wifi.c inet.h inet.c supplicant.h supplicant.c
bluetooth_la_SOURCES = bluetooth.c
bluetooth_la_LIBADD = @GDBUS_LIBS@
@@ -19,7 +19,7 @@ dhclient_la_CFLAGS = @GLIB_CFLAGS@ @GDBUS_CFLAGS@
-DDHCLIENT=\"@[EMAIL PROTECTED]" \
ipv4_la_SOURCES = ipv4.c
-resolvconf_la_SOURCES = resolvconf.c
+resolvconf_la_SOURCES = resolvconf.c inet.h inet.c
resolvfile_la_SOURCES = resolvfile.c
diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
index 6d41fb2..2d0d7ad 100644
--- a/plugins/bluetooth.c
+++ b/plugins/bluetooth.c
@@ -43,7 +43,7 @@ static void create_element(DBusConnection *conn, const char
*path)
DBG("conn %p path %s", conn, path);
- element = connman_element_create();
+ element = connman_element_create(NULL);
element->name = g_path_get_basename(path);
element->type = CONNMAN_ELEMENT_TYPE_DEVICE;
diff --git a/plugins/dhclient.c b/plugins/dhclient.c
index ee8a3a5..342e6d7 100644
--- a/plugins/dhclient.c
+++ b/plugins/dhclient.c
@@ -31,6 +31,8 @@
#include <connman/dbus.h>
#include <connman/log.h>
+#include "inet.h"
+
#define DHCLIENT_INTF "org.isc.dhclient"
#define DHCLIENT_PATH "/org/isc/dhclient"
@@ -140,8 +142,8 @@ static int dhclient_probe(struct connman_element *element)
if (task == NULL)
return -ENOMEM;
- task->ifindex = element->netdev.index;
- task->ifname = g_strdup(element->netdev.name);
+ task->ifindex = element->index;
+ task->ifname = inet_index2name(element->index);
task->element = element;
if (task->ifname == NULL) {
@@ -203,7 +205,7 @@ static void dhclient_remove(struct connman_element *element)
g_static_mutex_lock(&task_mutex);
- task = find_task_by_index(element->netdev.index);
+ task = find_task_by_index(element->index);
if (task != NULL)
task_list = g_slist_remove(task_list, task);
@@ -301,10 +303,9 @@ static DBusHandlerResult dhclient_filter(DBusConnection
*conn,
} else if (g_ascii_strcasecmp(text, "BOUND") == 0 ||
g_ascii_strcasecmp(text, "REBOOT") == 0) {
struct connman_element *element;
- element = connman_element_create();
+ element = connman_element_create(NULL);
element->type = CONNMAN_ELEMENT_TYPE_IPV4;
- element->netdev.index = task->ifindex;
- element->netdev.name = g_strdup(task->ifname);
+ element->index = task->ifindex;
connman_element_update(task->element);
connman_element_register(element, task->element);
} else if (g_ascii_strcasecmp(text, "RENEW") == 0 ||
diff --git a/plugins/ethernet.c b/plugins/ethernet.c
index 0f248bc..697149b 100644
--- a/plugins/ethernet.c
+++ b/plugins/ethernet.c
@@ -35,6 +35,11 @@
#include <connman/driver.h>
#include <connman/log.h>
+struct ethernet_data {
+ int index;
+ short flags;
+};
+
static GStaticMutex ethernet_mutex = G_STATIC_MUTEX_INIT;
static GSList *ethernet_list = NULL;
@@ -45,11 +50,12 @@ static void create_element(struct connman_element *parent,
DBG("parent %p name %s", parent, parent->name);
- element = connman_element_create();
+ element = connman_element_create(NULL);
+ if (element == NULL)
+ return;
element->type = type;
- element->netdev.index = parent->netdev.index;
- element->netdev.name = g_strdup(parent->netdev.name);
+ element->index = parent->index;
connman_element_register(element, parent);
}
@@ -70,20 +76,22 @@ static void rtnl_link(struct nlmsghdr *hdr, const char
*type)
for (list = ethernet_list; list; list = list->next) {
struct connman_element *element = list->data;
+ struct ethernet_data *ethernet;
- if (element->type != CONNMAN_ELEMENT_TYPE_DEVICE)
+ ethernet = connman_element_get_data(element);
+ if (ethernet == NULL)
continue;
- if (element->netdev.index != msg->ifi_index)
+ if (ethernet->index != msg->ifi_index)
continue;
- if ((element->netdev.flags & IFF_RUNNING) ==
- (msg->ifi_flags & IFF_RUNNING))
+ if ((ethernet->flags & IFF_RUNNING) ==
+ (msg->ifi_flags & IFF_RUNNING))
continue;
- element->netdev.flags = msg->ifi_flags;
+ ethernet->flags = msg->ifi_flags;
- if (msg->ifi_flags & IFF_RUNNING) {
+ if (ethernet->flags & IFF_RUNNING) {
DBG("carrier on");
create_element(element, CONNMAN_ELEMENT_TYPE_DHCP);
@@ -153,7 +161,7 @@ static gboolean rtnl_event(GIOChannel *chan, GIOCondition
cond, gpointer data)
return TRUE;
}
-static GIOChannel *channel = NULL;
+static GIOChannel *channel;
static int rtnl_request(void)
{
@@ -184,19 +192,19 @@ static int rtnl_request(void)
(struct sockaddr *) &addr, sizeof(addr));
}
-static int iface_up(struct connman_element *element)
+static int iface_up(struct ethernet_data *ethernet)
{
struct ifreq ifr;
int sk, err;
- DBG("element %p", element);
+ DBG("index %d flags %d", ethernet->index, ethernet->flags);
sk = socket(PF_INET, SOCK_DGRAM, 0);
if (sk < 0)
return -errno;
memset(&ifr, 0, sizeof(ifr));
- ifr.ifr_ifindex = element->netdev.index;
+ ifr.ifr_ifindex = ethernet->index;
if (ioctl(sk, SIOCGIFNAME, &ifr) < 0) {
err = -errno;
@@ -228,19 +236,19 @@ done:
return err;
}
-static int iface_down(struct connman_element *element)
+static int iface_down(struct ethernet_data *ethernet)
{
struct ifreq ifr;
int sk, err;
- DBG("element %p", element);
+ DBG("index %d flags %d", ethernet->index, ethernet->flags);
sk = socket(PF_INET, SOCK_DGRAM, 0);
if (sk < 0)
return -errno;
memset(&ifr, 0, sizeof(ifr));
- ifr.ifr_ifindex = element->netdev.index;
+ ifr.ifr_ifindex = ethernet->index;
if (ioctl(sk, SIOCGIFNAME, &ifr) < 0) {
err = -errno;
@@ -272,13 +280,23 @@ done:
static int ethernet_probe(struct connman_element *element)
{
+ struct ethernet_data *ethernet;
+
DBG("element %p name %s", element, element->name);
+ ethernet = g_try_new0(struct ethernet_data, 1);
+ if (ethernet == NULL)
+ return -ENOMEM;
+
g_static_mutex_lock(ðernet_mutex);
ethernet_list = g_slist_append(ethernet_list, element);
g_static_mutex_unlock(ðernet_mutex);
- iface_up(element);
+ connman_element_set_data(element, ethernet);
+
+ ethernet->index = element->index;
+
+ iface_up(ethernet);
rtnl_request();
@@ -287,13 +305,19 @@ static int ethernet_probe(struct connman_element *element)
static void ethernet_remove(struct connman_element *element)
{
+ struct ethernet_data *ethernet = connman_element_get_data(element);
+
DBG("element %p name %s", element, element->name);
- iface_down(element);
+ connman_element_set_data(element, NULL);
+
+ iface_down(ethernet);
g_static_mutex_lock(ðernet_mutex);
ethernet_list = g_slist_remove(ethernet_list, element);
g_static_mutex_unlock(ðernet_mutex);
+
+ g_free(ethernet);
}
static struct connman_driver ethernet_driver = {
@@ -340,8 +364,6 @@ static void rtnl_cleanup(void)
g_io_channel_shutdown(channel, TRUE, NULL);
g_io_channel_unref(channel);
-
- channel = NULL;
}
static int ethernet_init(void)
diff --git a/plugins/hal.c b/plugins/hal.c
index 2afe856..942faaf 100644
--- a/plugins/hal.c
+++ b/plugins/hal.c
@@ -85,18 +85,18 @@ static void device_netdev(LibHalContext *ctx, const char
*udi,
{
if (element->subtype == CONNMAN_ELEMENT_SUBTYPE_ETHERNET ||
element->subtype == CONNMAN_ELEMENT_SUBTYPE_WIFI) {
- element->netdev.index = libhal_device_get_property_int(ctx,
+ element->index = libhal_device_get_property_int(ctx,
udi, "net.linux.ifindex", NULL);
- element->netdev.name = libhal_device_get_property_string(ctx,
+ element->name = libhal_device_get_property_string(ctx,
udi, "net.interface", NULL);
}
if (element->subtype == CONNMAN_ELEMENT_SUBTYPE_MODEM) {
- element->netdev.index = libhal_device_get_property_int(ctx,
+ element->index = libhal_device_get_property_int(ctx,
udi, "serial.port", NULL);
- element->netdev.name = libhal_device_get_property_string(ctx,
+ element->name = libhal_device_get_property_string(ctx,
udi, "serial.device", NULL);
}
}
@@ -108,15 +108,22 @@ static void create_element(LibHalContext *ctx, const char
*udi,
DBG("ctx %p udi %s", ctx, udi);
- element = connman_element_create();
+ element = connman_element_create(NULL);
- element->name = g_path_get_basename(udi);
element->type = CONNMAN_ELEMENT_TYPE_DEVICE;
_______________________________________________
Commits mailing list
[email protected]
https://www.moblin.org/mailman/listinfo/commits