Phonet: modules auto-loading support
authorRémi Denis-Courmont <remi.denis-courmont@nokia.com>
Sun, 5 Oct 2008 18:14:27 +0000 (11:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 5 Oct 2008 18:14:27 +0000 (11:14 -0700)
Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/phonet/af_phonet.c

index 1d8df6b7e3df2cd0e4ebee1fef6e9ab2ac713b62..0a74aeaf5adf502cd972d7f65b8dda541dd45412 100644 (file)
@@ -64,6 +64,11 @@ static int pn_socket_create(struct net *net, struct socket *sock, int protocol)
        }
 
        pnp = phonet_proto_get(protocol);
+#ifdef CONFIG_KMOD
+       if (pnp == NULL &&
+           request_module("net-pf-%d-proto-%d", PF_PHONET, protocol) == 0)
+               pnp = phonet_proto_get(protocol);
+#endif
        if (pnp == NULL)
                return -EPROTONOSUPPORT;
        if (sock->type != pnp->sock_type) {
@@ -94,7 +99,7 @@ out:
 }
 
 static struct net_proto_family phonet_proto_family = {
-       .family = AF_PHONET,
+       .family = PF_PHONET,
        .create = pn_socket_create,
        .owner = THIS_MODULE,
 };
@@ -447,7 +452,7 @@ static int __init phonet_init(void)
 
 err:
        phonet_sysctl_exit();
-       sock_unregister(AF_PHONET);
+       sock_unregister(PF_PHONET);
        dev_remove_pack(&phonet_packet_type);
        phonet_device_exit();
        return err;
@@ -457,7 +462,7 @@ static void __exit phonet_exit(void)
 {
        isi_unregister();
        phonet_sysctl_exit();
-       sock_unregister(AF_PHONET);
+       sock_unregister(PF_PHONET);
        dev_remove_pack(&phonet_packet_type);
        phonet_device_exit();
 }
@@ -466,3 +471,4 @@ module_init(phonet_init);
 module_exit(phonet_exit);
 MODULE_DESCRIPTION("Phonet protocol stack for Linux");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS_NETPROTO(PF_PHONET);