diff options
author | Harald Welte <laforge@netfilter.org> | 2005-08-09 22:40:55 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-08-29 18:35:08 -0400 |
commit | 4fdb3bb723db469717c6d38fda667d8b0fa86ebd (patch) | |
tree | 43d82e717922e6319cf8a8f9dc5ee902c651b491 /include/linux | |
parent | 020b4c12dbe3868d792a01d7c1470cd837abe10f (diff) |
[NETLINK]: Add properly module refcounting for kernel netlink sockets.
- Remove bogus code for compiling netlink as module
- Add module refcounting support for modules implementing a netlink
protocol
- Add support for autoloading modules that implement a netlink protocol
as soon as someone opens a socket for that protocol
Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/net.h | 3 | ||||
-rw-r--r-- | include/linux/netlink.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/linux/net.h b/include/linux/net.h index 20cb226b2268..39906619b9d7 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
@@ -282,5 +282,8 @@ static struct proto_ops name##_ops = { \ | |||
282 | #define MODULE_ALIAS_NETPROTO(proto) \ | 282 | #define MODULE_ALIAS_NETPROTO(proto) \ |
283 | MODULE_ALIAS("net-pf-" __stringify(proto)) | 283 | MODULE_ALIAS("net-pf-" __stringify(proto)) |
284 | 284 | ||
285 | #define MODULE_ALIAS_NET_PF_PROTO(pf, proto) \ | ||
286 | MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto)) | ||
287 | |||
285 | #endif /* __KERNEL__ */ | 288 | #endif /* __KERNEL__ */ |
286 | #endif /* _LINUX_NET_H */ | 289 | #endif /* _LINUX_NET_H */ |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 6552b71bfa73..1c50fea8995b 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -117,7 +117,7 @@ struct netlink_skb_parms | |||
117 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) | 117 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) |
118 | 118 | ||
119 | 119 | ||
120 | extern struct sock *netlink_kernel_create(int unit, void (*input)(struct sock *sk, int len)); | 120 | extern struct sock *netlink_kernel_create(int unit, void (*input)(struct sock *sk, int len), struct module *module); |
121 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); | 121 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); |
122 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); | 122 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); |
123 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, | 123 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, |