Commit 1e9f12ec authored by Jiri Benc's avatar Jiri Benc Committed by David S. Miller

geneve: implement geneve_get_sk_family helper

Similarly to the existing vxlan_get_sk_family.
Signed-off-by: default avatarJiri Benc <jbenc@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7c25b16d
...@@ -110,6 +110,11 @@ static __be64 vni_to_tunnel_id(const __u8 *vni) ...@@ -110,6 +110,11 @@ static __be64 vni_to_tunnel_id(const __u8 *vni)
#endif #endif
} }
static sa_family_t geneve_get_sk_family(struct geneve_sock *gs)
{
return gs->sock->sk->sk_family;
}
static struct geneve_dev *geneve_lookup(struct geneve_sock *gs, static struct geneve_dev *geneve_lookup(struct geneve_sock *gs,
__be32 addr, u8 vni[]) __be32 addr, u8 vni[])
{ {
...@@ -165,16 +170,13 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb) ...@@ -165,16 +170,13 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb)
static u8 zero_vni[3]; static u8 zero_vni[3];
u8 *vni; u8 *vni;
int err = 0; int err = 0;
sa_family_t sa_family;
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
struct ipv6hdr *ip6h = NULL; struct ipv6hdr *ip6h = NULL;
struct in6_addr addr6; struct in6_addr addr6;
static struct in6_addr zero_addr6; static struct in6_addr zero_addr6;
#endif #endif
sa_family = gs->sock->sk->sk_family; if (geneve_get_sk_family(gs) == AF_INET) {
if (sa_family == AF_INET) {
iph = ip_hdr(skb); /* outer IP header... */ iph = ip_hdr(skb); /* outer IP header... */
if (gs->collect_md) { if (gs->collect_md) {
...@@ -188,7 +190,7 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb) ...@@ -188,7 +190,7 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb)
geneve = geneve_lookup(gs, addr, vni); geneve = geneve_lookup(gs, addr, vni);
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
} else if (sa_family == AF_INET6) { } else if (geneve_get_sk_family(gs) == AF_INET6) {
ip6h = ipv6_hdr(skb); /* outer IPv6 header... */ ip6h = ipv6_hdr(skb); /* outer IPv6 header... */
if (gs->collect_md) { if (gs->collect_md) {
...@@ -213,7 +215,7 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb) ...@@ -213,7 +215,7 @@ static void geneve_rx(struct geneve_sock *gs, struct sk_buff *skb)
(gnvh->oam ? TUNNEL_OAM : 0) | (gnvh->oam ? TUNNEL_OAM : 0) |
(gnvh->critical ? TUNNEL_CRIT_OPT : 0); (gnvh->critical ? TUNNEL_CRIT_OPT : 0);
tun_dst = udp_tun_rx_dst(skb, sa_family, flags, tun_dst = udp_tun_rx_dst(skb, geneve_get_sk_family(gs), flags,
vni_to_tunnel_id(gnvh->vni), vni_to_tunnel_id(gnvh->vni),
gnvh->opt_len * 4); gnvh->opt_len * 4);
if (!tun_dst) if (!tun_dst)
...@@ -392,7 +394,7 @@ static void geneve_notify_add_rx_port(struct geneve_sock *gs) ...@@ -392,7 +394,7 @@ static void geneve_notify_add_rx_port(struct geneve_sock *gs)
struct net_device *dev; struct net_device *dev;
struct sock *sk = gs->sock->sk; struct sock *sk = gs->sock->sk;
struct net *net = sock_net(sk); struct net *net = sock_net(sk);
sa_family_t sa_family = sk->sk_family; sa_family_t sa_family = geneve_get_sk_family(gs);
__be16 port = inet_sk(sk)->inet_sport; __be16 port = inet_sk(sk)->inet_sport;
int err; int err;
...@@ -553,7 +555,7 @@ static void geneve_notify_del_rx_port(struct geneve_sock *gs) ...@@ -553,7 +555,7 @@ static void geneve_notify_del_rx_port(struct geneve_sock *gs)
struct net_device *dev; struct net_device *dev;
struct sock *sk = gs->sock->sk; struct sock *sk = gs->sock->sk;
struct net *net = sock_net(sk); struct net *net = sock_net(sk);
sa_family_t sa_family = sk->sk_family; sa_family_t sa_family = geneve_get_sk_family(gs);
__be16 port = inet_sk(sk)->inet_sport; __be16 port = inet_sk(sk)->inet_sport;
rcu_read_lock(); rcu_read_lock();
...@@ -596,7 +598,7 @@ static struct geneve_sock *geneve_find_sock(struct geneve_net *gn, ...@@ -596,7 +598,7 @@ static struct geneve_sock *geneve_find_sock(struct geneve_net *gn,
list_for_each_entry(gs, &gn->sock_list, list) { list_for_each_entry(gs, &gn->sock_list, list) {
if (inet_sk(gs->sock->sk)->inet_sport == dst_port && if (inet_sk(gs->sock->sk)->inet_sport == dst_port &&
inet_sk(gs->sock->sk)->sk.sk_family == family) { geneve_get_sk_family(gs) == family) {
return gs; return gs;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment