summaryrefslogtreecommitdiffstats
path: root/network/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'network/main.c')
-rw-r--r--network/main.c117
1 files changed, 117 insertions, 0 deletions
diff --git a/network/main.c b/network/main.c
index 2d9d44b6..5d1f5013 100644
--- a/network/main.c
+++ b/network/main.c
@@ -41,13 +41,128 @@
#include "manager.h"
#include "hal.h"
+#define IFACE_PREFIX "bnep%d"
+#define PANU_IFACE "pan0"
+#define GN_IFACE "pan1"
+#define NAP_IFACE "pan2"
+
static GMainLoop *main_loop;
+static struct network_conf conf = {
+ .connection_enabled = TRUE,
+ .server_enabled = TRUE,
+ .iface_prefix = NULL,
+ .conn.panu_script = NULL,
+ .conn.gn_script = NULL,
+ .conn.nap_script = NULL,
+ .server.panu_iface = NULL,
+ .server.gn_iface = NULL,
+ .server.nap_iface = NULL,
+ .server.disable_security = FALSE
+};
+
static void sig_term(int sig)
{
g_main_loop_quit(main_loop);
}
+static void read_config(const char *file)
+{
+ GKeyFile *keyfile;
+ GError *err = NULL;
+
+ keyfile = g_key_file_new();
+
+ if (!g_key_file_load_from_file(keyfile, file, 0, &err)) {
+ error("Parsing %s failed: %s", file, err->message);
+ g_error_free(err);
+ g_key_file_free(keyfile);
+ return;
+ }
+
+ conf.iface_prefix = g_key_file_get_string(keyfile, "Connection",
+ "InterfacePrefix", &err);
+ if (!conf.iface_prefix)
+ conf.iface_prefix = g_strdup(IFACE_PREFIX);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.conn.panu_script = g_key_file_get_string(keyfile, "Connection",
+ "PANUScript", &err);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.conn.gn_script = g_key_file_get_string(keyfile, "Connection",
+ "GNScript", &err);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.conn.nap_script = g_key_file_get_string(keyfile, "Connection",
+ "NAPScript", &err);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.server.panu_iface = g_key_file_get_string(keyfile, "Server",
+ "PANUInterface", &err);
+ if (!conf.server.panu_iface)
+ conf.server.panu_iface = g_strdup(PANU_IFACE);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.server.gn_iface = g_key_file_get_string(keyfile, "Server",
+ "GNInterface", &err);
+ if (!conf.server.gn_iface)
+ conf.server.gn_iface = g_strdup(GN_IFACE);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.server.nap_iface = g_key_file_get_string(keyfile, "Server",
+ "NAPInterface", &err);
+ if (!conf.server.nap_iface)
+ conf.server.nap_iface = g_strdup(NAP_IFACE);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ conf.server.disable_security = g_key_file_get_boolean(keyfile, "Server",
+ "DisableSecurity", &err);
+ if (err) {
+ debug("%s: %s", file, err->message);
+ g_error_free(err);
+ err = NULL;
+ }
+
+ debug("Config options: InterfacePrefix=%s, PANUScript=%s, GNScript=%s, "
+ "NAPScript=%s, PANUInterface=%s, GNInterface=%s, "
+ "NAPInterface=%s, DisableSecurity=%s", conf.iface_prefix,
+ conf.conn.panu_script, conf.conn.gn_script, conf.conn.nap_script,
+ conf.server.panu_iface, conf.server.gn_iface,
+ conf.server.nap_iface,
+ conf.server.disable_security ? "true" : "false");
+
+ g_key_file_free(keyfile);
+}
+
int main(int argc, char *argv[])
{
DBusConnection *conn;
@@ -67,6 +182,8 @@ int main(int argc, char *argv[])
enable_debug();
+ read_config(CONFIGDIR "/network.conf");
+
main_loop = g_main_loop_new(NULL, FALSE);
conn = dbus_bus_system_setup_with_main_loop(NULL, NULL, NULL);