[INET]: Let inet_diag and friends autoload
By adding module aliases to inet_diag, tcp_diag and dccp_diag, we let them load automatically as needed. This makes tools like "ss" run faster. Signed-off-by: Jean Delvare <jdelvare@suse.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
81429973cf
commit
305e1e9691
4 changed files with 13 additions and 0 deletions
|
@ -313,6 +313,10 @@ static const struct proto_ops name##_ops = { \
|
|||
#define MODULE_ALIAS_NET_PF_PROTO(pf, proto) \
|
||||
MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto))
|
||||
|
||||
#define MODULE_ALIAS_NET_PF_PROTO_TYPE(pf, proto, type) \
|
||||
MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto) \
|
||||
"-type-" __stringify(type))
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
#include <linux/sysctl.h>
|
||||
extern ctl_table net_table[];
|
||||
|
|
|
@ -68,3 +68,4 @@ module_exit(dccp_diag_fini);
|
|||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Arnaldo Carvalho de Melo <acme@mandriva.com>");
|
||||
MODULE_DESCRIPTION("DCCP inet_diag handler");
|
||||
MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_INET_DIAG, DCCPDIAG_GETSOCK);
|
||||
|
|
|
@ -815,6 +815,12 @@ static int inet_diag_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
|
|||
nlmsg_len(nlh) < hdrlen)
|
||||
return -EINVAL;
|
||||
|
||||
#ifdef CONFIG_KMOD
|
||||
if (inet_diag_table[nlh->nlmsg_type] == NULL)
|
||||
request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
|
||||
NETLINK_INET_DIAG, nlh->nlmsg_type);
|
||||
#endif
|
||||
|
||||
if (inet_diag_table[nlh->nlmsg_type] == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
|
@ -914,3 +920,4 @@ static void __exit inet_diag_exit(void)
|
|||
module_init(inet_diag_init);
|
||||
module_exit(inet_diag_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_INET_DIAG);
|
||||
|
|
|
@ -56,3 +56,4 @@ static void __exit tcp_diag_exit(void)
|
|||
module_init(tcp_diag_init);
|
||||
module_exit(tcp_diag_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_INET_DIAG, TCPDIAG_GETSOCK);
|
||||
|
|
Loading…
Reference in a new issue