diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2014-05-13 13:17:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-13 18:35:08 -0400 |
commit | e110861f86094cd78cc85593b873970092deb43a (patch) | |
tree | 535ecba8f65cefb68da0846ff54801bb32bf3c9e /include/net/netns | |
parent | 87e067cda6df60b55cea0239c2f3cee81e9f46df (diff) |
net: add a sysctl to reflect the fwmark on replies
Kernel-originated IP packets that have no user socket associated
with them (e.g., ICMP errors and echo replies, TCP RSTs, etc.)
are emitted with a mark of zero. Add a sysctl to make them have
the same mark as the packet they are replying to.
This allows an administrator that wishes to do so to use
mark-based routing, firewalling, etc. for these replies by
marking the original packets inbound.
Tested using user-mode linux:
- ICMP/ICMPv6 echo replies and errors.
- TCP RST packets (IPv4 and IPv6).
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/netns')
-rw-r--r-- | include/net/netns/ipv4.h | 2 | ||||
-rw-r--r-- | include/net/netns/ipv6.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index b2704fd0ec80..a32fc4d705da 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -77,6 +77,8 @@ struct netns_ipv4 { | |||
77 | int sysctl_ip_no_pmtu_disc; | 77 | int sysctl_ip_no_pmtu_disc; |
78 | int sysctl_ip_fwd_use_pmtu; | 78 | int sysctl_ip_fwd_use_pmtu; |
79 | 79 | ||
80 | int sysctl_fwmark_reflect; | ||
81 | |||
80 | struct ping_group_range ping_group_range; | 82 | struct ping_group_range ping_group_range; |
81 | 83 | ||
82 | atomic_t dev_addr_genid; | 84 | atomic_t dev_addr_genid; |
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index 21edaf1f7916..19d3446e59d2 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h | |||
@@ -30,6 +30,7 @@ struct netns_sysctl_ipv6 { | |||
30 | int flowlabel_consistency; | 30 | int flowlabel_consistency; |
31 | int icmpv6_time; | 31 | int icmpv6_time; |
32 | int anycast_src_echo_reply; | 32 | int anycast_src_echo_reply; |
33 | int fwmark_reflect; | ||
33 | }; | 34 | }; |
34 | 35 | ||
35 | struct netns_ipv6 { | 36 | struct netns_ipv6 { |