diff options
author | David Ahern <dsahern@gmail.com> | 2019-04-06 01:30:40 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-04-09 00:22:41 +0200 |
commit | d15662682db232da77136cd348f4c9df312ca6f9 (patch) | |
tree | dfa79b49c8771ca89225749eae14bf422829793a /include | |
parent | ipv4: Flag fib_info with a fib_nh using IPv6 gateway (diff) | |
download | linux-d15662682db232da77136cd348f4c9df312ca6f9.tar.xz linux-d15662682db232da77136cd348f4c9df312ca6f9.zip |
ipv4: Allow ipv6 gateway with ipv4 routes
Add support for RTA_VIA and allow an IPv6 nexthop for v4 routes:
$ ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0
$ ip ro ls
...
172.16.1.0/24 via inet6 2001:db8::1 dev eth0
For convenience and simplicity, userspace can use RTA_VIA to specify
AF_INET or AF_INET6 gateway.
The common fib_nexthop_info dump function compares the gateway address
family to the nh_common family to know if the gateway should be encoded
as RTA_VIA or RTA_GATEWAY.
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/ip_fib.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index 337106469ec5..d8195c77e247 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h @@ -401,6 +401,8 @@ static inline bool fib4_rules_early_flow_dissect(struct net *net, /* Exported by fib_frontend.c */ extern const struct nla_policy rtm_ipv4_policy[]; void ip_fib_init(void); +int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla, + struct netlink_ext_ack *extack); __be32 fib_compute_spec_dst(struct sk_buff *skb); bool fib_info_nh_uses_dev(struct fib_info *fi, const struct net_device *dev); int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, |