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 /net/ipv4 | |
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 'net/ipv4')
-rw-r--r-- | net/ipv4/fib_frontend.c | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_queue.c | 3 | ||||
-rw-r--r-- | net/ipv4/netfilter/ipt_ULOG.c | 3 | ||||
-rw-r--r-- | net/ipv4/tcp_diag.c | 3 |
4 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index e5722084239b..b5e2f1550c91 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -567,7 +567,7 @@ static void nl_fib_input(struct sock *sk, int len) | |||
567 | 567 | ||
568 | static void nl_fib_lookup_init(void) | 568 | static void nl_fib_lookup_init(void) |
569 | { | 569 | { |
570 | netlink_kernel_create(NETLINK_FIB_LOOKUP, nl_fib_input); | 570 | netlink_kernel_create(NETLINK_FIB_LOOKUP, nl_fib_input, THIS_MODULE); |
571 | } | 571 | } |
572 | 572 | ||
573 | static void fib_disable_ip(struct net_device *dev, int force) | 573 | static void fib_disable_ip(struct net_device *dev, int force) |
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c index ae975ac59c6a..b237f7fcad92 100644 --- a/net/ipv4/netfilter/ip_queue.c +++ b/net/ipv4/netfilter/ip_queue.c | |||
@@ -692,7 +692,8 @@ init_or_cleanup(int init) | |||
692 | goto cleanup; | 692 | goto cleanup; |
693 | 693 | ||
694 | netlink_register_notifier(&ipq_nl_notifier); | 694 | netlink_register_notifier(&ipq_nl_notifier); |
695 | ipqnl = netlink_kernel_create(NETLINK_FIREWALL, ipq_rcv_sk); | 695 | ipqnl = netlink_kernel_create(NETLINK_FIREWALL, ipq_rcv_sk, |
696 | THIS_MODULE); | ||
696 | if (ipqnl == NULL) { | 697 | if (ipqnl == NULL) { |
697 | printk(KERN_ERR "ip_queue: failed to create netlink socket\n"); | 698 | printk(KERN_ERR "ip_queue: failed to create netlink socket\n"); |
698 | goto cleanup_netlink_notifier; | 699 | goto cleanup_netlink_notifier; |
diff --git a/net/ipv4/netfilter/ipt_ULOG.c b/net/ipv4/netfilter/ipt_ULOG.c index 52a0076302a7..4ea8371ab270 100644 --- a/net/ipv4/netfilter/ipt_ULOG.c +++ b/net/ipv4/netfilter/ipt_ULOG.c | |||
@@ -62,6 +62,7 @@ | |||
62 | MODULE_LICENSE("GPL"); | 62 | MODULE_LICENSE("GPL"); |
63 | MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>"); | 63 | MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>"); |
64 | MODULE_DESCRIPTION("iptables userspace logging module"); | 64 | MODULE_DESCRIPTION("iptables userspace logging module"); |
65 | MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_NFLOG); | ||
65 | 66 | ||
66 | #define ULOG_NL_EVENT 111 /* Harald's favorite number */ | 67 | #define ULOG_NL_EVENT 111 /* Harald's favorite number */ |
67 | #define ULOG_MAXNLGROUPS 32 /* numer of nlgroups */ | 68 | #define ULOG_MAXNLGROUPS 32 /* numer of nlgroups */ |
@@ -372,7 +373,7 @@ static int __init init(void) | |||
372 | ulog_buffers[i].timer.data = i; | 373 | ulog_buffers[i].timer.data = i; |
373 | } | 374 | } |
374 | 375 | ||
375 | nflognl = netlink_kernel_create(NETLINK_NFLOG, NULL); | 376 | nflognl = netlink_kernel_create(NETLINK_NFLOG, NULL, THIS_MODULE); |
376 | if (!nflognl) | 377 | if (!nflognl) |
377 | return -ENOMEM; | 378 | return -ENOMEM; |
378 | 379 | ||
diff --git a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c index f66945cb158f..f79bd11a4701 100644 --- a/net/ipv4/tcp_diag.c +++ b/net/ipv4/tcp_diag.c | |||
@@ -774,7 +774,8 @@ static void tcpdiag_rcv(struct sock *sk, int len) | |||
774 | 774 | ||
775 | static int __init tcpdiag_init(void) | 775 | static int __init tcpdiag_init(void) |
776 | { | 776 | { |
777 | tcpnl = netlink_kernel_create(NETLINK_TCPDIAG, tcpdiag_rcv); | 777 | tcpnl = netlink_kernel_create(NETLINK_TCPDIAG, tcpdiag_rcv, |
778 | THIS_MODULE); | ||
778 | if (tcpnl == NULL) | 779 | if (tcpnl == NULL) |
779 | return -ENOMEM; | 780 | return -ENOMEM; |
780 | return 0; | 781 | return 0; |