summaryrefslogtreecommitdiff
path: root/interface-ip.c
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2015-09-09 15:45:49 +0200
committerFelix Fietkau <nbd@openwrt.org>2015-09-10 22:50:11 +0200
commita02462c6845051ec531026a998670ebd01fd7108 (patch)
treead9c207c21bb8140b047acca50625c776de90a8e /interface-ip.c
parent1b36fc7ee0dfe4c5796a61d7dcbcbbd47641d4e2 (diff)
downloadnetifd-a02462c6845051ec531026a998670ebd01fd7108.tar.gz
interface-ip: Remove ip loop policy rules as kernel issue is fixed
Remove ip loop policy rules as workaround for the kernel using unspecified address to lookup locally originating traffic is fixed by http://lkml.iu.edu/hypermail/linux/kernel/1505.0/03094.html Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'interface-ip.c')
-rw-r--r--interface-ip.c23
1 files changed, 1 insertions, 22 deletions
diff --git a/interface-ip.c b/interface-ip.c
index 7f8a451..6c152b6 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -133,23 +133,6 @@ static int set_ip_source_policy(bool add, bool v6, unsigned int priority,
return (add) ? system_add_iprule(&rule) : system_del_iprule(&rule);
}
-static int set_ip_lo_policy(bool add, bool v6, struct interface *iface)
-{
- struct iprule rule = {
- .flags = IPRULE_IN | IPRULE_LOOKUP | IPRULE_PRIORITY,
- .priority = IPRULE_PRIORITY_NW + iface->l3_dev.dev->ifindex,
- .lookup = (v6) ? iface->ip6table : iface->ip4table,
- .in_dev = "lo"
- };
-
- if (!rule.lookup)
- return 0;
-
- rule.flags |= (v6) ? IPRULE_INET6 : IPRULE_INET4;
-
- return (add) ? system_add_iprule(&rule) : system_del_iprule(&rule);
-}
-
static bool
__find_ip_addr_target(struct interface_ip_settings *ip, union if_addr *a, bool v6)
{
@@ -1258,13 +1241,9 @@ void interface_ip_set_enabled(struct interface_ip_settings *ip, bool enabled)
if (!strcmp(a->name, ip->iface->name))
interface_set_prefix_address(a, c, ip->iface, enabled);
- if (ip->iface && ip->iface->l3_dev.dev) {
- set_ip_lo_policy(enabled, true, ip->iface);
- set_ip_lo_policy(enabled, false, ip->iface);
-
+ if (ip->iface && ip->iface->l3_dev.dev)
set_ip_source_policy(enabled, true, IPRULE_PRIORITY_REJECT + ip->iface->l3_dev.dev->ifindex,
NULL, 0, 0, ip->iface, "failed_policy");
- }
}
void