summaryrefslogtreecommitdiffstats
path: root/package/ppp/patches/330-retain_foreign_default_routes.patch
blob: 0d7fff9b4bf3d1f473b8df8eceda9ea51f295b4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pppd: Retain foreign default routes on Linux

On Linux, when pppd attempts to delete its default route it does not fill
the rt_dev field of the struct rtentry used to match the system default route.
As a consequence, pppd happily deletes any default route even if it belongs
to another interface.

This patch makes pppd fill out the rt_dev field so that only own default
routes are ever matched.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -1743,6 +1743,7 @@ int cifdefaultroute (int unit, u_int32_t
 	SIN_ADDR(rt.rt_genmask) = 0L;
     }
 
+    rt.rt_dev = ifname;
     rt.rt_flags = RTF_UP;
     if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
 	if (still_ppp()) {