-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net: prepare netlink code for netlink diag
Move a few declarations in a header. Acked-by: Pavel Emelyanov <xemul@parallels.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Eric Dumazet <edumazet@google.com> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Gao feng <gaofeng@cn.fujitsu.com> Cc: Thomas Graf <tgraf@suug.ch> Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Andrey Vagin
authored and
David S. Miller
committed
Mar 21, 2013
1 parent
953d276
commit 0f29c76
Showing
2 changed files
with
67 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#ifndef _AF_NETLINK_H | ||
#define _AF_NETLINK_H | ||
|
||
#include <net/sock.h> | ||
|
||
#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8) | ||
#define NLGRPLONGS(x) (NLGRPSZ(x)/sizeof(unsigned long)) | ||
|
||
struct netlink_sock { | ||
/* struct sock has to be the first member of netlink_sock */ | ||
struct sock sk; | ||
u32 portid; | ||
u32 dst_portid; | ||
u32 dst_group; | ||
u32 flags; | ||
u32 subscriptions; | ||
u32 ngroups; | ||
unsigned long *groups; | ||
unsigned long state; | ||
wait_queue_head_t wait; | ||
struct netlink_callback *cb; | ||
struct mutex *cb_mutex; | ||
struct mutex cb_def_mutex; | ||
void (*netlink_rcv)(struct sk_buff *skb); | ||
void (*netlink_bind)(int group); | ||
struct module *module; | ||
}; | ||
|
||
static inline struct netlink_sock *nlk_sk(struct sock *sk) | ||
{ | ||
return container_of(sk, struct netlink_sock, sk); | ||
} | ||
|
||
struct nl_portid_hash { | ||
struct hlist_head *table; | ||
unsigned long rehash_time; | ||
|
||
unsigned int mask; | ||
unsigned int shift; | ||
|
||
unsigned int entries; | ||
unsigned int max_shift; | ||
|
||
u32 rnd; | ||
}; | ||
|
||
struct netlink_table { | ||
struct nl_portid_hash hash; | ||
struct hlist_head mc_list; | ||
struct listeners __rcu *listeners; | ||
unsigned int flags; | ||
unsigned int groups; | ||
struct mutex *cb_mutex; | ||
struct module *module; | ||
void (*bind)(int group); | ||
int registered; | ||
}; | ||
|
||
extern struct netlink_table *nl_table; | ||
extern rwlock_t nl_table_lock; | ||
|
||
#endif |