aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/ppp/patches/340-populate_default_gateway.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-10-10 12:32:29 +0000
committerFelix Fietkau <nbd@openwrt.org>2012-10-10 12:32:29 +0000
commitabe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5 (patch)
tree46b83031a0da1b4458317413c00d13c252c72afa /package/network/services/ppp/patches/340-populate_default_gateway.patch
parent41d09b7d7880b83b0e544574296b2b3673792c7f (diff)
downloadmaster-187ad058-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.tar.gz
master-187ad058-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.tar.bz2
master-187ad058-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.zip
packages: sort network related packages into package/network/
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33688 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/services/ppp/patches/340-populate_default_gateway.patch')
-rw-r--r--package/network/services/ppp/patches/340-populate_default_gateway.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/package/network/services/ppp/patches/340-populate_default_gateway.patch b/package/network/services/ppp/patches/340-populate_default_gateway.patch
new file mode 100644
index 0000000000..9a0284eb23
--- /dev/null
+++ b/package/network/services/ppp/patches/340-populate_default_gateway.patch
@@ -0,0 +1,34 @@
+pppd: Fill in default gateway on Linux
+
+On Linux, when pppd creates the default route, it does not set the peer
+address as gateway, leading to a default route without gateway address.
+
+This behaviour breaks various downstream programs which attempt to infer
+the default gateway IP address from the system default route entry.
+
+This patch addresses the issue by filling in the peer address as gateway
+when generating the default route entry.
+
+Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
+
+--- a/pppd/sys-linux.c
++++ b/pppd/sys-linux.c
+@@ -1697,6 +1697,9 @@ int sifdefaultroute (int unit, u_int32_t
+ memset (&rt, 0, sizeof (rt));
+ SET_SA_FAMILY (rt.rt_dst, AF_INET);
+
++ SET_SA_FAMILY(rt.rt_gateway, AF_INET);
++ SIN_ADDR(rt.rt_gateway) = gateway;
++
+ rt.rt_dev = ifname;
+
+ if (kernel_version > KVERSION(2,1,0)) {
+@@ -1704,7 +1707,7 @@ int sifdefaultroute (int unit, u_int32_t
+ SIN_ADDR(rt.rt_genmask) = 0L;
+ }
+
+- rt.rt_flags = RTF_UP;
++ rt.rt_flags = RTF_UP | RTF_GATEWAY;
+ if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
+ if (!ok_error(errno))
+ error("default route ioctl(SIOCADDRT): %m");