summaryrefslogtreecommitdiffstats
path: root/main/busybox/0001-ifupdown-pass-interface-device-name-for-ipv6-route-c.patch
blob: 14086269b3b6be8116d60c4e7dcf8b552b0a8b29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From 3809536eb8286e972fc7170493fffed35c301f29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Mon, 20 Aug 2012 13:50:46 +0300
Subject: [PATCH] ifupdown: pass interface device name for ipv6 route commands
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

IPv6 routes need the device argument for link-local routes, or they
cannot be used at all. E.g. "gateway fe80::def" seems to be used in
some places, but kernel refuses to insert the route unless device
name is explicitly specified in the route addition.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
---
 networking/ifupdown.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 9b34986..11a8cec 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -401,11 +401,11 @@ static int FAST_FUNC static_up6(struct interface_defn_t *ifd, execfn *exec)
 	result = execute("ip addr add %address%/%netmask% dev %iface%[[ label %label%]]", ifd, exec);
 	result += execute("ip link set[[ mtu %mtu%]][[ addr %hwaddress%]] %iface% up", ifd, exec);
 	/* Was: "[[ ip ....%gateway% ]]". Removed extra spaces w/o checking */
-	result += execute("[[ip route add ::/0 via %gateway%]][[ prio %metric%]]", ifd, exec);
+	result += execute("[[ip route add ::/0 via %gateway% dev %iface%]][[ prio %metric%]]", ifd, exec);
 # else
 	result = execute("ifconfig %iface%[[ media %media%]][[ hw %hwaddress%]][[ mtu %mtu%]] up", ifd, exec);
 	result += execute("ifconfig %iface% add %address%/%netmask%", ifd, exec);
-	result += execute("[[route -A inet6 add ::/0 gw %gateway%[[ metric %metric%]]]]", ifd, exec);
+	result += execute("[[route -A inet6 add ::/0 gw %gateway% dev %iface%[[ metric %metric%]]]]", ifd, exec);
 # endif
 	return ((result == 3) ? 3 : 0);
 }
@@ -427,7 +427,7 @@ static int FAST_FUNC v4tunnel_up(struct interface_defn_t *ifd, execfn *exec)
 			"%endpoint%[[ local %local%]][[ ttl %ttl%]]", ifd, exec);
 	result += execute("ip link set %iface% up", ifd, exec);
 	result += execute("ip addr add %address%/%netmask% dev %iface%", ifd, exec);
-	result += execute("[[ip route add ::/0 via %gateway%]]", ifd, exec);
+	result += execute("[[ip route add ::/0 via %gateway% dev %iface%]]", ifd, exec);
 	return ((result == 4) ? 4 : 0);
 }
 
-- 
1.7.12