Skip to content

Commit

Permalink
datapath: Account for "genetlink: pass only network namespace to genl…
Browse files Browse the repository at this point in the history
…_has_listeners()"

Upstream commit:
    genetlink: pass only network namespace to genl_has_listeners()

    There's no point to force the caller to know about the internal
    genl_sock to use inside struct net, just have them pass the network
    namespace. This doesn't really change code generation since it's
    an inline, but makes the caller less magic - there's never any
    reason to pass another socket.

    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Upstream: f8403a2 ("genetlink: pass only network namespace to genl_has_listeners()")
Signed-off-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
  • Loading branch information
Thomas Graf committed Feb 3, 2015
1 parent ec959cd commit 6233a1b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
2 changes: 2 additions & 0 deletions acinclude.m4
Expand Up @@ -362,6 +362,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [mcgrp_offset])
OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [parallel_ops])
OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genlmsg_new_unicast])
OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [netlink_has_listeners(net->genl_sock],
[OVS_DEFINE([HAVE_GENL_HAS_LISTENERS_TAKES_NET])])
OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_cisco_register])
OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_handle_offloads])
OVS_GREP_IFELSE([$KSRC/include/net/ip_tunnels.h], [iptunnel_xmit.*net],
Expand Down
3 changes: 1 addition & 2 deletions datapath/datapath.c
Expand Up @@ -85,8 +85,7 @@ static bool ovs_must_notify(struct genl_family *family, struct genl_info *info,
unsigned int group)
{
return info->nlhdr->nlmsg_flags & NLM_F_ECHO ||
genl_has_listeners(family, genl_info_net(info)->genl_sock,
group);
genl_has_listeners(family, genl_info_net(info), group);
}

static void ovs_notify(struct genl_family *family, struct genl_multicast_group *grp,
Expand Down
18 changes: 14 additions & 4 deletions datapath/linux/compat/include/net/genetlink.h
Expand Up @@ -107,17 +107,27 @@ static inline struct sk_buff *genlmsg_new_unicast(size_t payload,

#ifndef HAVE_GENL_HAS_LISTENERS
static inline int genl_has_listeners(struct genl_family *family,
struct sock *sk, unsigned int group)
struct net *net, unsigned int group)
{
#ifdef HAVE_MCGRP_OFFSET
if (WARN_ON_ONCE(group >= family->n_mcgrps))
return -EINVAL;
group = family->mcgrp_offset + group;
return netlink_has_listeners(sk, group);
#else
return netlink_has_listeners(sk, group);
#endif
return netlink_has_listeners(net->genl_sock, group);
}
#else

#ifndef HAVE_GENL_HAS_LISTENERS_TAKES_NET
static inline int rpl_genl_has_listeners(struct genl_family *family,
struct net *net, unsigned int group)
{
return genl_has_listeners(family, net->genl_sock, group);
}

#define genl_has_listeners rpl_genl_has_listeners
#endif

#endif /* HAVE_GENL_HAS_LISTENERS */

#endif /* genetlink.h */

0 comments on commit 6233a1b

Please sign in to comment.