NetworkManager r3868 - in trunk: . src



Author: dcbw
Date: Mon Jul 28 14:38:34 2008
New Revision: 3868
URL: http://svn.gnome.org/viewvc/NetworkManager?rev=3868&view=rev

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

	Patch from Fabrice Bellet <fabrice bellet info>

	* src/NetworkManagerSystem.c
		- (route_in_same_subnet): mask addresses and compare them so that the
			function actually does what it says it's going to do (rh #456685)



Modified:
   trunk/ChangeLog
   trunk/src/NetworkManagerSystem.c

Modified: trunk/src/NetworkManagerSystem.c
==============================================================================
--- trunk/src/NetworkManagerSystem.c	(original)
+++ trunk/src/NetworkManagerSystem.c	Mon Jul 28 14:38:34 2008
@@ -62,7 +62,7 @@
 #include <netlink/route/link.h>
 
 static gboolean
-route_in_same_subnet (NMIP4Config *config, guint32 prefix)
+route_in_same_subnet (NMIP4Config *config, guint32 dest, guint32 prefix)
 {
 	int num;
 	int i;
@@ -72,8 +72,13 @@
 		const NMSettingIP4Address *addr;
 
 		addr = nm_ip4_config_get_address (config, i);
-		if (prefix == addr->prefix)
-			return TRUE;
+		if (prefix == addr->prefix) {
+			guint32 masked_addr = addr->address >> (32 - addr->prefix);
+			guint32 masked_dest = dest >> (32 - prefix);
+
+			if (masked_addr == masked_dest)
+				return TRUE;
+		}
 	}
 
 	return FALSE;
@@ -110,7 +115,7 @@
 	struct nl_addr *gw_addr = NULL;
 	int err, iface_idx;
 
-	if (iface_config && route_in_same_subnet (iface_config, ip4_prefix))
+	if (iface_config && route_in_same_subnet (iface_config, ip4_dest, ip4_prefix))
 		return;
 
 	nlh = nm_netlink_get_default_handle ();



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