diff options
| -rw-r--r-- | include/linux/net.h | 4 | ||||
| -rw-r--r-- | net/dccp/diag.c | 1 | ||||
| -rw-r--r-- | net/ipv4/inet_diag.c | 7 | ||||
| -rw-r--r-- | net/ipv4/tcp_diag.c | 1 | 
4 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/net.h b/include/linux/net.h index c136abce7ef..dd79cdb8c4c 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -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[]; diff --git a/net/dccp/diag.c b/net/dccp/diag.c index 0f3745585a9..d8a3509b26f 100644 --- a/net/dccp/diag.c +++ b/net/dccp/diag.c @@ -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); diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c index 7eb83ebed2e..dc429b6b0ba 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c @@ -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); diff --git a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c index 3904d2158a9..2fbcc7d1b1a 100644 --- a/net/ipv4/tcp_diag.c +++ b/net/ipv4/tcp_diag.c @@ -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);  |