genetlink: add auto module loading
authorStephen Hemminger <shemminger@vyatta.com>
Wed, 28 Dec 2011 18:48:55 +0000 (13:48 -0500)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Dec 2011 18:48:55 +0000 (13:48 -0500)
When testing L2TP support, I discovered that the l2tp module is not autoloaded
as are other netlink interfaces. There is because of lack of hook in genetlink to call
request_module and load the module.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/genetlink.c

index 21a82410ec7cf1c51507fe0e2406a69f97e75574..a403b618faa5b80e0ef06abb4e5dc648874f7d34 100644 (file)
@@ -792,6 +792,15 @@ static int ctrl_getfamily(struct sk_buff *skb, struct genl_info *info)
 
                name = nla_data(info->attrs[CTRL_ATTR_FAMILY_NAME]);
                res = genl_family_find_byname(name);
+#ifdef CONFIG_MODULES
+               if (res == NULL) {
+                       genl_unlock();
+                       request_module("net-pf-%d-proto-%d-type-%s",
+                                      PF_NETLINK, NETLINK_GENERIC, name);
+                       genl_lock();
+                       res = genl_family_find_byname(name);
+               }
+#endif
                err = -ENOENT;
        }