network-manager-applet r781 - in trunk: . src src/connection-editor



Author: dcbw
Date: Mon Jul  7 19:09:03 2008
New Revision: 781
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=781&view=rev

Log:
2008-07-07  Dan Williams  <dcbw redhat com>

	* src/connection-editor/page-ip4.c
	  src/applet-dialogs.c
		- Update for change from netmask -> prefix (requires NM svn3812 or later)



Modified:
   trunk/ChangeLog
   trunk/src/applet-dialogs.c
   trunk/src/connection-editor/page-ip4.c

Modified: trunk/src/applet-dialogs.c
==============================================================================
--- trunk/src/applet-dialogs.c	(original)
+++ trunk/src/applet-dialogs.c	Mon Jul  7 19:09:03 2008
@@ -35,6 +35,7 @@
 #include <nm-setting-wired.h>
 #include <nm-setting-8021x.h>
 #include <nm-setting-ip4-config.h>
+#include <nm-utils.h>
 
 #include <gtk/gtk.h>
 #include <gtk/gtkwidget.h>
@@ -237,7 +238,7 @@
 	NMIP4Config *ip4_config;
 	const GArray *dns;
 	NMSettingIP4Address *def_addr;
-	guint32 hostmask, network, bcast;
+	guint32 hostmask, network, bcast, netmask;
 	int row = 0;
 
 	table = GTK_TABLE (gtk_table_new (12, 2, FALSE));
@@ -347,8 +348,9 @@
 	row++;
 
 	/* Broadcast */
-	network = ntohl (def_addr->address) & ntohl (def_addr->netmask);
-	hostmask = ~ntohl (def_addr->netmask);
+	netmask = nm_utils_ip4_prefix_to_netmask (def_addr->prefix);
+	network = ntohl (def_addr->address) & ntohl (netmask);
+	hostmask = ~ntohl (netmask);
 	bcast = htonl (network | hostmask);
 
 	gtk_table_attach_defaults (table,
@@ -359,12 +361,12 @@
 							   1, 2, row, row + 1);
 	row++;
 
-	/* Netmask */
+	/* Prefix */
 	gtk_table_attach_defaults (table,
 							   create_info_label (_("Subnet Mask:")),
 							   0, 1, row, row + 1);
 	gtk_table_attach_defaults (table,
-							   create_info_label (ip4_address_as_string (def_addr->netmask)),
+							   create_info_label (ip4_address_as_string (netmask)),
 							   1, 2, row, row + 1);
 	row++;
 

Modified: trunk/src/connection-editor/page-ip4.c
==============================================================================
--- trunk/src/connection-editor/page-ip4.c	(original)
+++ trunk/src/connection-editor/page-ip4.c	Mon Jul  7 19:09:03 2008
@@ -21,6 +21,8 @@
  */
 
 #include <string.h>
+#include <errno.h>
+#include <stdlib.h>
 
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
@@ -67,7 +69,7 @@
 #define IP4_METHOD_SHARED          4
 
 #define COL_ADDRESS 0
-#define COL_NETMASK 1
+#define COL_PREFIX 1
 #define COL_GATEWAY 2
 
 static void
@@ -174,9 +176,7 @@
 		ip_string = inet_ntoa (tmp_addr);
 		gtk_list_store_set (store, &model_iter, COL_ADDRESS, g_strdup (ip_string), -1);
 
-		tmp_addr.s_addr = addr->netmask;
-		ip_string = inet_ntoa (tmp_addr);
-		gtk_list_store_set (store, &model_iter, COL_NETMASK, g_strdup (ip_string), -1);
+		gtk_list_store_set (store, &model_iter, COL_PREFIX, g_strdup_printf ("%d", addr->prefix), -1);
 
 		tmp_addr.s_addr = addr->gateway;
 		ip_string = inet_ntoa (tmp_addr);
@@ -488,16 +488,16 @@
 	gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
 	gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
 
-	/* Netmask column */
+	/* Prefix column */
 	renderer = gtk_cell_renderer_text_new ();
 	g_object_set (renderer, "editable", TRUE, NULL);
 	g_signal_connect (renderer, "edited", G_CALLBACK (cell_edited), self);
-	g_object_set_data (G_OBJECT (renderer), "column", GUINT_TO_POINTER (COL_NETMASK));
+	g_object_set_data (G_OBJECT (renderer), "column", GUINT_TO_POINTER (COL_PREFIX));
 	g_signal_connect (renderer, "editing-started", G_CALLBACK (cell_editing_started), store);
 
 	offset = gtk_tree_view_insert_column_with_attributes (priv->addr_list,
-	                                                      -1, _("Netmask"), renderer,
-	                                                      "text", COL_NETMASK,
+	                                                      -1, _("Prefix"), renderer,
+	                                                      "text", COL_PREFIX,
 	                                                      NULL);
 	column = gtk_tree_view_get_column (GTK_TREE_VIEW (priv->addr_list), offset - 1);
 	gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
@@ -585,14 +585,15 @@
 	addresses = g_ptr_array_sized_new (1);
 	while (valid) {
 		char *str_address = NULL;
-		char *str_netmask = NULL;
+		char *str_prefix = NULL;
 		char *str_gateway = NULL;
-		struct in_addr tmp_addr, tmp_netmask, tmp_gateway = { 0 };
+		struct in_addr tmp_addr, tmp_gateway = { 0 };
 		GArray *addr;
-		guint32 empty_val = 0;
+		guint32 empty_val = 0, prefix;
+		long int tmp_prefix;
 		
 		gtk_tree_model_get (model, &tree_iter, COL_ADDRESS, &str_address, -1);
-		gtk_tree_model_get (model, &tree_iter, COL_NETMASK, &str_netmask, -1);
+		gtk_tree_model_get (model, &tree_iter, COL_PREFIX, &str_prefix, -1);
 		gtk_tree_model_get (model, &tree_iter, COL_GATEWAY, &str_gateway, -1);
 
 		if (!str_address || !inet_aton (str_address, &tmp_addr)) {
@@ -601,11 +602,20 @@
 			goto next;
 		}
 
-		if (!str_netmask || !inet_aton (str_netmask, &tmp_netmask)) {
-			g_warning ("%s: IPv4 netmask '%s' missing or invalid!",
-			           __func__, str_netmask ? str_netmask : "<none>");
+		if (!str_prefix) {
+			g_warning ("%s: IPv4 prefix '%s' missing!",
+			           __func__, str_prefix ? str_prefix : "<none>");
+			goto next;
+		}
+
+		errno = 0;
+		tmp_prefix = strtol (str_prefix, NULL, 10);
+		if (errno || tmp_prefix < 0 || tmp_prefix > 32) {
+			g_warning ("%s: IPv4 prefix '%s' invalid!",
+			           __func__, str_prefix ? str_prefix : "<none>");
 			goto next;
 		}
+		prefix = (guint32) tmp_prefix;
 
 		/* Gateway is optional... */
 		if (str_gateway && !inet_aton (str_gateway, &tmp_gateway)) {
@@ -616,7 +626,7 @@
 
 		addr = g_array_sized_new (FALSE, TRUE, sizeof (guint32), 3);
 		g_array_append_val (addr, tmp_addr.s_addr);
-		g_array_append_val (addr, tmp_netmask.s_addr);
+		g_array_append_val (addr, prefix);
 		if (tmp_gateway.s_addr)
 			g_array_append_val (addr, tmp_gateway.s_addr);
 		else



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]