diff --git a/SOURCES/0025-rh1149996-ifcfg-rh-GATEWAY.patch b/SOURCES/0025-rh1149996-ifcfg-rh-GATEWAY.patch
new file mode 100644
index 0000000..657f049
--- /dev/null
+++ b/SOURCES/0025-rh1149996-ifcfg-rh-GATEWAY.patch
@@ -0,0 +1,228 @@
+From e554ef606f0dfd5ab07057824bb3d3dd52170228 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes@redhat.com>
+Date: Thu, 19 Jun 2014 15:43:51 +0200
+Subject: [PATCH] ifcfg-rh: write GATEWAY instead of GATEWAY0 to be
+ ifup-compatible (rh #771673)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+https://bugzilla.redhat.com/show_bug.cgi?id=771673
+https://bugzilla.redhat.com/show_bug.cgi?id=1105770
+
+Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
+---
+ .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c         | 147 +++++++++++++++++++++
+ src/settings/plugins/ifcfg-rh/writer.c             |  25 +++-
+ 2 files changed, 168 insertions(+), 4 deletions(-)
+
+diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+index 0e5be5d..ff45550 100644
+--- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
++++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+@@ -8284,6 +8284,151 @@ test_write_wired_aliases (void)
+ }
+ 
+ static void
++test_write_gateway (void)
++{
++	NMConnection *connection, *reread;
++	NMSettingConnection *s_con;
++	NMSettingWired *s_wired;
++	NMSettingIP4Config *s_ip4;
++	char *uuid, *testfile = NULL, *val;
++	gboolean success;
++	GError *error = NULL;
++	shvarFile *f;
++	NMIP4Address *addr;
++	const char *ip1_str = "1.1.1.3";
++	const char *ip2_str = "2.2.2.5";
++	const char *gw1_str = "1.1.1.254";
++	const char *gw2_str = "2.2.2.254";
++	struct in_addr ip1, ip2, gw1, gw2;
++	const guint32 prefix = 24;
++
++	connection = nm_connection_new ();
++
++	/* Connection setting */
++	s_con = (NMSettingConnection *) nm_setting_connection_new ();
++	nm_connection_add_setting (connection, NM_SETTING (s_con));
++
++	uuid = nm_utils_uuid_generate ();
++	g_object_set (s_con,
++	              NM_SETTING_CONNECTION_ID, "Test Write Static Addresses Gateway",
++	              NM_SETTING_CONNECTION_UUID, uuid,
++	              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
++	              NULL);
++	g_free (uuid);
++
++	/* Wired setting */
++	s_wired = (NMSettingWired *) nm_setting_wired_new ();
++	nm_connection_add_setting (connection, NM_SETTING (s_wired));
++
++	/* IP4 setting */
++	s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
++	nm_connection_add_setting (connection, NM_SETTING (s_ip4));
++
++	g_object_set (s_ip4,
++	              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
++	              NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE,
++	              NULL);
++
++	inet_pton (AF_INET, ip1_str, &ip1);
++	inet_pton (AF_INET, ip2_str, &ip2);
++	inet_pton (AF_INET, gw1_str, &gw1);
++	inet_pton (AF_INET, gw2_str, &gw2);
++
++	addr = nm_ip4_address_new ();
++	nm_ip4_address_set_address (addr, ip1.s_addr);
++	nm_ip4_address_set_prefix (addr, prefix);
++	nm_ip4_address_set_gateway (addr, gw1.s_addr);
++	nm_setting_ip4_config_add_address (s_ip4, addr);
++	nm_ip4_address_unref (addr);
++
++	addr = nm_ip4_address_new ();
++	nm_ip4_address_set_address (addr, ip2.s_addr);
++	nm_ip4_address_set_prefix (addr, prefix);
++	nm_ip4_address_set_gateway (addr, gw2.s_addr);
++	nm_setting_ip4_config_add_address (s_ip4, addr);
++	nm_ip4_address_unref (addr);
++
++	success = nm_connection_verify (connection, &error);
++	g_assert_no_error (error);
++	g_assert (success);
++
++	/* Save the ifcfg */
++	success = writer_new_connection (connection,
++	                                 TEST_SCRATCH_DIR "/network-scripts/",
++	                                 &testfile,
++	                                 &error);
++	g_assert_no_error (error);
++	g_assert (success);
++
++	f = svNewFile (testfile);
++	g_assert (f);
++
++	/* re-read the file to check that the keys was written as IPADDR, GATEWAY and IPADDR1, GATEWAY1 */
++	val = svGetValue (f, "IPADDR", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, ip1_str);
++	g_free (val);
++
++	val = svGetValue (f, "IPADDR1", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, ip2_str);
++	g_free (val);
++
++	val = svGetValue (f, "IPADDR0", FALSE);
++	g_assert (val == NULL);
++
++	val = svGetValue (f, "PREFIX", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, "24");
++	g_free (val);
++
++	val = svGetValue (f, "PREFIX1", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, "24");
++	g_free (val);
++
++	val = svGetValue (f, "PREFIX0", FALSE);
++	g_assert (val == NULL);
++
++	val = svGetValue (f, "GATEWAY", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, gw1_str);
++	g_free (val);
++
++	val = svGetValue (f, "GATEWAY1", FALSE);
++	g_assert (val);
++	g_assert_cmpstr (val, ==, gw2_str);
++	g_free (val);
++
++	val = svGetValue (f, "GATEWAY0", FALSE);
++	g_assert (val == NULL);
++
++
++	svCloseFile (f);
++
++	/* reread will be normalized, so we must normalize connection too. */
++	nm_utils_normalize_connection (connection, TRUE);
++
++	/* re-read the connection for comparison */
++	reread = connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL,
++	                               NULL, NULL, NULL, NULL, &error, NULL);
++	unlink (testfile);
++	g_assert_no_error (error);
++	g_assert (reread);
++
++	success = nm_connection_verify (reread, &error);
++	g_assert_no_error (error);
++	g_assert (success);
++
++	g_assert (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT));
++
++	g_free (testfile);
++	g_object_unref (connection);
++	g_object_unref (reread);
++}
++
++
++static void
+ test_write_wifi_open (void)
+ {
+ 	NMConnection *connection;
+@@ -14459,6 +14605,7 @@ int main (int argc, char **argv)
+ 	test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_PATH, NM_SETTING_SECRET_FLAG_AGENT_OWNED | NM_SETTING_SECRET_FLAG_NOT_SAVED);
+ 	test_write_wired_8021x_tls (NM_SETTING_802_1X_CK_SCHEME_BLOB, NM_SETTING_SECRET_FLAG_NONE);
+ 	test_write_wired_aliases ();
++	g_test_add_func (TPATH "ipv4/write-static-addresses-GATEWAY", test_write_gateway);
+ 	test_write_wifi_open ();
+ 	test_write_wifi_open_hex_ssid ();
+ 	test_write_wifi_wep ();
+diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c
+index f583366..b9c108c 100644
+--- a/src/settings/plugins/ifcfg-rh/writer.c
++++ b/src/settings/plugins/ifcfg-rh/writer.c
+@@ -1913,6 +1913,11 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
+ 	svSetValue (ifcfg, "PREFIX", NULL, FALSE);
+ 	svSetValue (ifcfg, "NETMASK", NULL, FALSE);
+ 	svSetValue (ifcfg, "GATEWAY", NULL, FALSE);
++	/* Clear out zero-indexed IP address fields */
++	svSetValue (ifcfg, "IPADDR0", NULL, FALSE);
++	svSetValue (ifcfg, "PREFIX0", NULL, FALSE);
++	svSetValue (ifcfg, "NETMASK0", NULL, FALSE);
++	svSetValue (ifcfg, "GATEWAY0", NULL, FALSE);
+ 
+ 	/* Write out IPADDR<n>, PREFIX<n>, GATEWAY<n> for current IP addresses
+ 	 * without labels. Unset obsolete NETMASK<n>.
+@@ -1926,10 +1931,22 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
+ 		if (i > 0 && NM_UTIL_PRIVATE_CALL (nm_setting_ip4_config_get_address_label (s_ip4, i)))
+ 			continue;
+ 
+-		addr_key = g_strdup_printf ("IPADDR%d", n);
+-		prefix_key = g_strdup_printf ("PREFIX%d", n);
+-		netmask_key = g_strdup_printf ("NETMASK%d", n);
+-		gw_key = g_strdup_printf ("GATEWAY%d", n);
++		if (n == 0) {
++			/* Instead of index 0 use un-numbered variables.
++			 * It's needed for compatibility with ifup that only recognizes 'GATEAWAY'
++			 * See https://bugzilla.redhat.com/show_bug.cgi?id=771673
++			 * and https://bugzilla.redhat.com/show_bug.cgi?id=1105770
++			 */
++			addr_key = g_strdup ("IPADDR");
++			prefix_key = g_strdup ("PREFIX");
++			netmask_key = g_strdup ("NETMASK");
++			gw_key = g_strdup ("GATEWAY");
++		} else {
++			addr_key = g_strdup_printf ("IPADDR%d", n);
++			prefix_key = g_strdup_printf ("PREFIX%d", n);
++			netmask_key = g_strdup_printf ("NETMASK%d", n);
++			gw_key = g_strdup_printf ("GATEWAY%d", n);
++		}
+ 
+ 		addr = nm_setting_ip4_config_get_address (s_ip4, i);
+ 
+-- 
+1.7.11.7
+
diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec
index 72d9cd2..8f651b9 100644
--- a/SPECS/NetworkManager.spec
+++ b/SPECS/NetworkManager.spec
@@ -28,7 +28,7 @@ Name: NetworkManager
 Summary: Network connection manager and user applications
 Epoch: 1
 Version: %{realversion}
-Release: 26%{snapshot}%{?git_sha}%{?dist}
+Release: 28%{snapshot}%{?git_sha}%{?dist}.2
 Group: System Environment/Base
 License: GPLv2+
 URL: http://www.gnome.org/projects/NetworkManager/
@@ -60,6 +60,8 @@ Patch20: 0020-rh1103782-firewall-zone-conflict.patch
 Patch21: 0021-rh1108167-nm-crash-on-device-removal.patch
 Patch22: 0022-rh1112020-crash-reading-bridge-sysctl.patch
 Patch23: 0023-rh1093231-mtu-fix.patch
+#Patch24: 0024-rh1083133-rh1098319-nm-ipv6ll.patch
+Patch25: 0025-rh1149996-ifcfg-rh-GATEWAY.patch
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -232,6 +234,8 @@ by nm-connection-editor and nm-applet in a non-graphical environment.
 %patch21 -p1 -b .0021-rh1108167-nm-crash-on-device-removal.orig
 %patch22 -p1 -b .0022-rh1112020-crash-reading-bridge-sysctl.orig
 %patch23 -p1 -b .0023-rh1093231-mtu-fix.orig
+#%patch24 -p1 -b .0024-rh1083133-rh1098319-nm-ipv6ll.orig
+%patch25 -p1 -b .0025-rh1149996-ifcfg-rh-GATEWAY.orig
 
 %build
 
@@ -241,8 +245,9 @@ by nm-connection-editor and nm-applet in a non-graphical environment.
 %{__cp} -R docs ORIG-docs
 %endif
 
-#autopoint --force
-#intltoolize --force
+autoreconf -i --force
+autopoint --force
+intltoolize --force
 %configure \
 	--disable-static \
 	--with-dhclient=yes \
@@ -452,6 +457,9 @@ fi
 %endif
 
 %changelog
+* Wed Oct  8 2014 Jiří Klimeš <jklimes@redhat.com> - 1:0.9.9.1-28.git20140326.2
+- ifcfg-rh: write GATEWAY instead of GATEWAY0 to be ifup-compatible (rh #1149996)
+
 * Wed Jul 30 2014 Dan Williams <dcbw@redhat.com> - 1:0.9.9.1-26.git20140326
 - build: fix issues with multilib upgrades (rh #1112367)