diff --git a/debian/usb_moded.conf b/debian/usb_moded.conf
index 99b5dea..0aff517 100644
--- a/debian/usb_moded.conf
+++ b/debian/usb_moded.conf
@@ -16,9 +16,15 @@
-
+
+
+
+
diff --git a/src/usb_moded-config-private.h b/src/usb_moded-config-private.h
index fdb82d1..672de7b 100644
--- a/src/usb_moded-config-private.h
+++ b/src/usb_moded-config-private.h
@@ -18,7 +18,7 @@
02110-1301 USA
*/
/*
- * Gets information from Gconf/ini file for the usb modes
+ * Gets/sets information for the usb modes from dbus
*/
/*============================================================================= */
@@ -26,3 +26,4 @@
const char * get_mode_setting(void);
int set_mode_setting(const char *mode);
int set_network_setting(const char *config, const char *setting);
+const char *get_network_setting(const char *config);
diff --git a/src/usb_moded-config.c b/src/usb_moded-config.c
index b80fafe..fed81c5 100644
--- a/src/usb_moded-config.c
+++ b/src/usb_moded-config.c
@@ -383,6 +383,31 @@ int set_network_setting(const char *config, const char *setting)
return(!ret);
}
+const char * get_network_setting(const char *config)
+{
+ const char * ret = 0;
+
+ if(!strcmp(config, NETWORK_IP_KEY))
+ {
+ ret = get_network_ip();
+ if(!ret)
+ ret = strdup("192.168.2.15");
+ }
+ else if(!strcmp(config, NETWORK_INTERFACE_KEY))
+ {
+
+ ret = get_network_interface();
+ if(!ret)
+ ret = strdup("usb0");
+ }
+ else if(!strcmp(config, NETWORK_GATEWAY_KEY))
+ return(get_network_gateway());
+ else
+ /* no matching keys, return error */
+ return(NULL);
+ return(ret);
+}
+
int conf_file_merge(void)
{
GDir *confdir;
diff --git a/src/usb_moded-dbus.c b/src/usb_moded-dbus.c
index 26d77be..27db43e 100644
--- a/src/usb_moded-dbus.c
+++ b/src/usb_moded-dbus.c
@@ -137,7 +137,7 @@ static DBusHandlerResult msg_handler(DBusConnection *const connection, DBusMessa
reply = dbus_message_new_error(msg, DBUS_ERROR_INVALID_ARGS, member);
else
{
- /* error checking is done when setting the GConf key */
+ /* error checking is done when setting configuration */
if(!set_network_setting(config, setting))
{
if((reply = dbus_message_new_method_return(msg)))
@@ -148,6 +148,29 @@ static DBusHandlerResult msg_handler(DBusConnection *const connection, DBusMessa
}
dbus_error_free(&err);
}
+ else if(!strcmp(member, USB_MODE_NETWORK_GET))
+ {
+ char *config = 0;
+ const char *setting = 0;
+ DBusError err = DBUS_ERROR_INIT;
+
+ if(!dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &config, DBUS_TYPE_INVALID))
+ {
+ reply = dbus_message_new_error(msg, DBUS_ERROR_INVALID_ARGS, member);
+ }
+ else
+ {
+ setting = get_network_setting(config);
+ if(setting)
+ {
+ if((reply = dbus_message_new_method_return(msg)))
+ dbus_message_append_args (reply, DBUS_TYPE_STRING, &config, DBUS_TYPE_STRING, &setting, DBUS_TYPE_INVALID);
+ free((void *)setting);
+ }
+ else
+ reply = dbus_message_new_error(msg, DBUS_ERROR_INVALID_ARGS, config);
+ }
+ }
else if(!strcmp(member, USB_MODE_CONFIG_GET))
{
const char *config = get_mode_setting();
diff --git a/src/usb_moded-dbus.h b/src/usb_moded-dbus.h
index 028d7f9..018a28c 100644
--- a/src/usb_moded-dbus.h
+++ b/src/usb_moded-dbus.h
@@ -40,6 +40,7 @@
#define USB_MODE_STATE_SET "set_mode" /* set a mode (only works when connected) */
#define USB_MODE_CONFIG_SET "set_config" /* set the mode that needs to be activated in the config file */
#define USB_MODE_NETWORK_SET "net_config" /* set the network config in the config file */
+#define USB_MODE_NETWORK_GET "get_net_config" /* get the network config from the config file */
/* state definitions for signals and method parameters */
#define USB_CONNECTED "USB connected"