diff options
| author | David S. Miller <davem@davemloft.net> | 2014-04-16 15:05:39 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-04-16 15:05:39 -0400 |
| commit | bc383ea52278f1fafd7592ea7faf4b8f1edd8602 (patch) | |
| tree | f0e29586ba3af5fe02b569016bef1e596015fa3f /include | |
| parent | c98235cb8584a72e95786e17d695a8e5fafcd766 (diff) | |
| parent | 0d5edc68739f1c1e0519acbea1d3f0c1882a15d7 (diff) | |
Merge branch 'fib_validate_loopback'
Cong Wang says:
====================
ipv4: fix flowi4_iif for input routing
This patchset fixes ->flowi4_iif for input routing and rp filter,
based on suggestion from Julian. See per patch for details.
v1 -> v2:
* merge the first two patches into one
* fix fib_check_nh() too
* add this cover letter
====================
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Reviewed-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/flow.h | 10 | ||||
| -rw-r--r-- | include/net/net_namespace.h | 9 |
2 files changed, 10 insertions, 9 deletions
diff --git a/include/net/flow.h b/include/net/flow.h index 64fd24836650..8109a159d1b3 100644 --- a/include/net/flow.h +++ b/include/net/flow.h | |||
| @@ -11,6 +11,14 @@ | |||
| 11 | #include <linux/in6.h> | 11 | #include <linux/in6.h> |
| 12 | #include <linux/atomic.h> | 12 | #include <linux/atomic.h> |
| 13 | 13 | ||
| 14 | /* | ||
| 15 | * ifindex generation is per-net namespace, and loopback is | ||
| 16 | * always the 1st device in ns (see net_dev_init), thus any | ||
| 17 | * loopback device should get ifindex 1 | ||
| 18 | */ | ||
| 19 | |||
| 20 | #define LOOPBACK_IFINDEX 1 | ||
| 21 | |||
| 14 | struct flowi_common { | 22 | struct flowi_common { |
| 15 | int flowic_oif; | 23 | int flowic_oif; |
| 16 | int flowic_iif; | 24 | int flowic_iif; |
| @@ -80,7 +88,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif, | |||
| 80 | __be16 dport, __be16 sport) | 88 | __be16 dport, __be16 sport) |
| 81 | { | 89 | { |
| 82 | fl4->flowi4_oif = oif; | 90 | fl4->flowi4_oif = oif; |
| 83 | fl4->flowi4_iif = 0; | 91 | fl4->flowi4_iif = LOOPBACK_IFINDEX; |
| 84 | fl4->flowi4_mark = mark; | 92 | fl4->flowi4_mark = mark; |
| 85 | fl4->flowi4_tos = tos; | 93 | fl4->flowi4_tos = tos; |
| 86 | fl4->flowi4_scope = scope; | 94 | fl4->flowi4_scope = scope; |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 79387f73f875..5f9eb260990f 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include <linux/list.h> | 9 | #include <linux/list.h> |
| 10 | #include <linux/sysctl.h> | 10 | #include <linux/sysctl.h> |
| 11 | 11 | ||
| 12 | #include <net/flow.h> | ||
| 12 | #include <net/netns/core.h> | 13 | #include <net/netns/core.h> |
| 13 | #include <net/netns/mib.h> | 14 | #include <net/netns/mib.h> |
| 14 | #include <net/netns/unix.h> | 15 | #include <net/netns/unix.h> |
| @@ -131,14 +132,6 @@ struct net { | |||
| 131 | atomic_t fnhe_genid; | 132 | atomic_t fnhe_genid; |
| 132 | }; | 133 | }; |
| 133 | 134 | ||
| 134 | /* | ||
| 135 | * ifindex generation is per-net namespace, and loopback is | ||
| 136 | * always the 1st device in ns (see net_dev_init), thus any | ||
| 137 | * loopback device should get ifindex 1 | ||
| 138 | */ | ||
| 139 | |||
| 140 | #define LOOPBACK_IFINDEX 1 | ||
| 141 | |||
| 142 | #include <linux/seq_file_net.h> | 135 | #include <linux/seq_file_net.h> |
| 143 | 136 | ||
| 144 | /* Init's network namespace */ | 137 | /* Init's network namespace */ |
