-
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.
- Loading branch information
Andrey Vagin
authored and
David S. Miller
committed
Mar 21, 2013
1 parent
02651ad
commit b5cb0c6
Showing
3 changed files
with
68 additions
and
55 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 953d276847b92524b34df8598bdaf30c9002c2b4 | ||
refs/heads/master: 0f29c768646809264d603574b4a1b15d2ff7ad79 |
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 |