summary refs log tree commit diff
path: root/src/settings/plugins/ifnet
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/plugins/ifnet')
-rw-r--r--src/settings/plugins/ifnet/Makefile.am2
-rw-r--r--src/settings/plugins/ifnet/Makefile.in14
-rw-r--r--src/settings/plugins/ifnet/net_parser.c46
-rw-r--r--src/settings/plugins/ifnet/net_utils.c10
-rw-r--r--src/settings/plugins/ifnet/tests/Makefile.am3
-rw-r--r--src/settings/plugins/ifnet/tests/Makefile.in17
-rw-r--r--src/settings/plugins/ifnet/tests/net2
-rw-r--r--src/settings/plugins/ifnet/tests/test_all.c3
8 files changed, 79 insertions, 18 deletions
diff --git a/src/settings/plugins/ifnet/Makefile.am b/src/settings/plugins/ifnet/Makefile.am
index 84deda5b..07a2fc88 100644
--- a/src/settings/plugins/ifnet/Makefile.am
+++ b/src/settings/plugins/ifnet/Makefile.am
@@ -1,5 +1,6 @@
 SUBDIRS = . tests
 INCLUDES = \
+	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -52,6 +53,7 @@ lib_ifnet_io_la_CPPFLAGS = \
 	-DSBINDIR=\"$(sbindir)\"
 
 lib_ifnet_io_la_LIBADD = \
+	 $(top_builddir)/src/wifi/libwifi-utils.la \
 	 $(top_builddir)/libnm-util/libnm-util.la \
 	 $(GLIB_LIBS)\
 	 $(GIO_LIBS)
diff --git a/src/settings/plugins/ifnet/Makefile.in b/src/settings/plugins/ifnet/Makefile.in
index 322adbf8..acf4e8bc 100644
--- a/src/settings/plugins/ifnet/Makefile.in
+++ b/src/settings/plugins/ifnet/Makefile.in
@@ -47,7 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -79,6 +79,7 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)"
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 lib_ifnet_io_la_DEPENDENCIES =  \
+	$(top_builddir)/src/wifi/libwifi-utils.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_lib_ifnet_io_la_OBJECTS = lib_ifnet_io_la-net_parser.lo \
@@ -245,6 +246,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -340,6 +345,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -378,6 +386,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -400,6 +410,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = . tests
 INCLUDES = \
+	-I$(top_srcdir)/src/wifi \
 	-I$(top_srcdir)/src/settings \
 	-I$(top_srcdir)/include \
 	-I$(top_srcdir)/libnm-glib \
@@ -449,6 +460,7 @@ lib_ifnet_io_la_CPPFLAGS = \
 	-DSBINDIR=\"$(sbindir)\"
 
 lib_ifnet_io_la_LIBADD = \
+	 $(top_builddir)/src/wifi/libwifi-utils.la \
 	 $(top_builddir)/libnm-util/libnm-util.la \
 	 $(GLIB_LIBS)\
 	 $(GIO_LIBS)
diff --git a/src/settings/plugins/ifnet/net_parser.c b/src/settings/plugins/ifnet/net_parser.c
index 38765f5f..2562e613 100644
--- a/src/settings/plugins/ifnet/net_parser.c
+++ b/src/settings/plugins/ifnet/net_parser.c
@@ -22,7 +22,14 @@
 #include <string.h>
 #include <nm-system-config-interface.h>
 #include <stdio.h>
+
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <unistd.h>
+
 #include "plugin.h"
+#include "wifi-utils.h"
+
 #include "net_parser.h"
 #include "net_utils.h"
 
@@ -122,6 +129,24 @@ is_global_setting (char *key)
 	return 0;
 }
 
+/* Find out whether the 'iface' is an interface */
+static gboolean
+name_is_interface (const char *iface)
+{
+	int fd;
+	struct ifreq ifr;
+	gboolean is_iface = FALSE;
+
+	fd = socket (PF_INET, SOCK_DGRAM, 0);
+	if (fd >= 0) {
+		strncpy (ifr.ifr_name, iface, IFNAMSIZ);
+		if (ioctl (fd, SIOCGIFHWADDR, &ifr) == 0)
+			is_iface = TRUE;
+		close (fd);
+	}
+	return is_iface;
+}
+
 /* Parse a complete line */
 /* Connection type is determined here */
 static void
@@ -143,12 +168,13 @@ init_block_by_line (gchar * buf)
 	pos = g_strrstr (key_value[0], "_");
 	if (pos == NULL || is_global_setting (key_value[0])) {
 		/* global data */
-		PLUGIN_PRINT (IFNET_PLUGIN_NAME, "global:%s-%s\n", key_value[0],
-			      key_value[1]);
-		g_hash_table_insert (global_settings_table,
-				     g_strdup (key_value[0]),
-				     g_strdup (key_value[1]));
+		data = g_strdup (key_value[1]);
+		tmp = strip_string (data, '"');
+		strip_string (tmp, '\'');
+		PLUGIN_PRINT (IFNET_PLUGIN_NAME, "global:%s-%s\n", key_value[0], tmp);
+		g_hash_table_insert (global_settings_table, g_strdup (key_value[0]), g_strdup (tmp));
 		g_strfreev (key_value);
+		g_free (data);
 		return;
 	}
 	*pos++ = '\0';
@@ -165,8 +191,12 @@ init_block_by_line (gchar * buf)
 			/* ignored connection */
 			conn = add_new_connection_config ("ignore", pos);
 		} else
-			/* wireless connection */
-			conn = add_new_connection_config ("wireless", pos);
+			if (name_is_interface (pos) && !wifi_utils_is_wifi (pos, NULL))
+				/* wired connection */
+				conn = add_new_connection_config ("wired", pos);
+			else
+				/* wireless connection */
+				conn = add_new_connection_config ("wireless", pos);
 	}
 	data = g_strdup (key_value[1]);
 	tmp = strip_string (data, '"');
@@ -593,7 +623,7 @@ ifnet_flush_to_file (const char *config_file)
 	/* Writing global data */
 	while (g_hash_table_iter_next (&iter, &key, &value)) {
 		out_line =
-		    g_strdup_printf ("%s=%s\n", (gchar *) key, (gchar *) value);
+		    g_strdup_printf ("%s=\"%s\"\n", (gchar *) key, (gchar *) value);
 		g_io_channel_write_chars (channel, out_line, -1,
 					  &bytes_written, error);
 		if (bytes_written == 0 || (error && *error))
diff --git a/src/settings/plugins/ifnet/net_utils.c b/src/settings/plugins/ifnet/net_utils.c
index f1687479..d613db6a 100644
--- a/src/settings/plugins/ifnet/net_utils.c
+++ b/src/settings/plugins/ifnet/net_utils.c
@@ -404,7 +404,7 @@ has_ip6_address (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, FALSE);
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		if (!is_ip6_address (ipset[i]))
 			continue;
@@ -618,7 +618,7 @@ convert_ip4_config_block (const char *conn_name)
 	g_return_val_if_fail (conn_name != NULL, NULL);
 
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 
 	routes = ifnet_get_data (conn_name, "routes");
 	if (routes)
@@ -654,7 +654,7 @@ convert_ip6_config_block (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, NULL);
 	ipset = split_addresses (ifnet_get_data (conn_name, "config"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		ip = strip_string (ip, '"');
@@ -684,7 +684,7 @@ convert_ip4_routes_block (const char *conn_name)
 	g_return_val_if_fail (conn_name != NULL, NULL);
 
 	ipset = split_routes (ifnet_get_data (conn_name, "routes"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		if (find_default_gateway_str (ip) || strstr (ip, "::")
@@ -718,7 +718,7 @@ convert_ip6_routes_block (const char *conn_name)
 
 	g_return_val_if_fail (conn_name != NULL, NULL);
 	ipset = split_routes (ifnet_get_data (conn_name, "routes"));
-	length = g_strv_length (ipset);
+	length = ipset ? g_strv_length (ipset) : 0;
 	for (i = 0; i < length; i++) {
 		ip = ipset[i];
 		ip = strip_string (ip, '"');
diff --git a/src/settings/plugins/ifnet/tests/Makefile.am b/src/settings/plugins/ifnet/tests/Makefile.am
index 20a26805..85d42388 100644
--- a/src/settings/plugins/ifnet/tests/Makefile.am
+++ b/src/settings/plugins/ifnet/tests/Makefile.am
@@ -10,7 +10,8 @@ check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS)
 check_ifnet_LDADD = $(top_builddir)/libnm-util/libnm-util.la \
 		    $(builddir)/../lib-ifnet-io.la \
 		    $(CHECK_LIBS) \
-		    $(GLIB_LIBS)
+		    $(GLIB_LIBS) \
+		    $(LIBM)
 EXTRA_DIST = hostname \
 			 net \
 			 net.all \
diff --git a/src/settings/plugins/ifnet/tests/Makefile.in b/src/settings/plugins/ifnet/tests/Makefile.in
index 02ee121f..743e547c 100644
--- a/src/settings/plugins/ifnet/tests/Makefile.in
+++ b/src/settings/plugins/ifnet/tests/Makefile.in
@@ -48,7 +48,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
 	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -59,7 +59,8 @@ am_check_ifnet_OBJECTS = check_ifnet-test_all.$(OBJEXT)
 check_ifnet_OBJECTS = $(am_check_ifnet_OBJECTS)
 am__DEPENDENCIES_1 =
 check_ifnet_DEPENDENCIES = $(top_builddir)/libnm-util/libnm-util.la \
-	$(builddir)/../lib-ifnet-io.la $(am__DEPENDENCIES_1)
+	$(builddir)/../lib-ifnet-io.la $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_$(V))
 am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
 am__v_lt_0 = --silent
@@ -168,6 +169,10 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
 INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
@@ -263,6 +268,9 @@ UDEV_BASE_DIR = @UDEV_BASE_DIR@
 USE_NLS = @USE_NLS@
 UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
+VAPIGEN = @VAPIGEN@
+VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@
+VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
 XGETTEXT_015 = @XGETTEXT_015@
@@ -301,6 +309,8 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -332,7 +342,8 @@ check_ifnet_CPPFLAGS = $(CHECK_CFLAGS) $(GLIB_CFLAGS)
 check_ifnet_LDADD = $(top_builddir)/libnm-util/libnm-util.la \
 		    $(builddir)/../lib-ifnet-io.la \
 		    $(CHECK_LIBS) \
-		    $(GLIB_LIBS)
+		    $(GLIB_LIBS) \
+		    $(LIBM)
 
 EXTRA_DIST = hostname \
 			 net \
diff --git a/src/settings/plugins/ifnet/tests/net b/src/settings/plugins/ifnet/tests/net
index 27d39f44..a5ac9ca2 100644
--- a/src/settings/plugins/ifnet/tests/net
+++ b/src/settings/plugins/ifnet/tests/net
@@ -3,6 +3,8 @@
 # please review /etc/conf.d/net.example and save your configuration
 # in /etc/conf.d/net (this file :]!).
 
+modules="!wpa_supplicant"
+
 config_eth0=(
 "202.117.16.121    netmask    255.255.255.0 brd 202.117.16.255"
 "192.168.4.121/24"
diff --git a/src/settings/plugins/ifnet/tests/test_all.c b/src/settings/plugins/ifnet/tests/test_all.c
index 50441d4e..974258b9 100644
--- a/src/settings/plugins/ifnet/tests/test_all.c
+++ b/src/settings/plugins/ifnet/tests/test_all.c
@@ -56,6 +56,9 @@ test_getdata ()
 		&& strcmp (ifnet_get_data ("ppp0", "password"),
 			   "password") == 0, "get data",
 		"config_ppp0 password is not correctly read");
+	ASSERT (ifnet_get_global_data ("modules")
+		&& strcmp ("!wpa_supplicant", ifnet_get_global_data ("modules")) == 0,
+		"get data", "config_eth1 is not correct");
 }
 
 static void