Exemple #1
0
_STATIC void socket_notify_remove(void)
{
#if defined(CONFIG_IPV6)
	sock_unregister(hooked_inet6_family_ops.family);
	reinstall_family("IPv6", &inet6_family_ops);
#endif
	sock_unregister(hooked_inet_family_ops.family);
	unregister_jprobe(&inet_sock_destruct_jprobe);
	reinstall_family("IPv4", &inet_family_ops);
	synchronize_net();
}
Exemple #2
0
static void __exit af_ieee802154_remove(void)
{
	dev_remove_pack(&ieee802154_packet_type);
	sock_unregister(PF_IEEE802154);
	proto_unregister(&ieee802154_dgram_prot);
	proto_unregister(&ieee802154_raw_prot);
}
void cleanup_module(void)
{
	/* First of all disallow new sockets creation. */
	sock_unregister(PF_INET6);
#ifdef CONFIG_PROC_FS
	proc_net_unregister(proc_net_raw6.low_ino);
	proc_net_unregister(proc_net_tcp6.low_ino);
	proc_net_unregister(proc_net_udp6.low_ino);
	proc_net_unregister(proc_net_sockstat6.low_ino);
	proc_net_unregister(proc_net_snmp6.low_ino);
#endif
	/* Cleanup code parts. */
	sit_cleanup();
	ipv6_netdev_notif_cleanup();
	ip6_flowlabel_cleanup();
	addrconf_cleanup();
	ip6_route_cleanup();
	ipv6_packet_cleanup();
	igmp6_cleanup();
	ndisc_cleanup();
	icmpv6_cleanup();
#ifdef CONFIG_SYSCTL
	ipv6_sysctl_unregister();	
#endif
}
/* Module registration */
static int __init phonet_init(void)
{
    int err;

    err = phonet_device_init();
    if (err)
        return err;

    err = sock_register(&phonet_proto_family);
    if (err) {
        printk(KERN_ALERT
               "phonet protocol family initialization failed\n");
        goto err_sock;
    }

    dev_add_pack(&phonet_packet_type);
    phonet_sysctl_init();

    err = isi_register();
    if (err)
        goto err;
    return 0;

err:
    phonet_sysctl_exit();
    sock_unregister(PF_PHONET);
    dev_remove_pack(&phonet_packet_type);
err_sock:
    phonet_device_exit();
    return err;
}
Exemple #5
0
static void inet6_exit(void)
{
	/* First of all disallow new sockets creation. */
	sock_unregister(PF_INET6);
#ifdef CONFIG_PROC_FS
	proc_net_remove("raw6");
	proc_net_remove("tcp6");
	proc_net_remove("udp6");
	proc_net_remove("sockstat6");
	proc_net_remove("snmp6");
#endif
	/* Cleanup code parts. */
	sit_cleanup();
	ipv6_netdev_notif_cleanup();
	ip6_flowlabel_cleanup();
	addrconf_cleanup();
	ip6_route_cleanup();
	ipv6_packet_cleanup();
	igmp6_cleanup();
	ndisc_cleanup();
	icmpv6_cleanup();
#ifdef CONFIG_SYSCTL
	ipv6_sysctl_unregister();	
#endif
}
static void __exit llc2_exit(void)
{
	llc_station_exit();
	llc_remove_pack(LLC_DEST_SAP);
	llc_remove_pack(LLC_DEST_CONN);
	sock_unregister(PF_LLC);
	llc_proc_exit();
}
static void __exit phonet_exit(void)
{
    isi_unregister();
    phonet_sysctl_exit();
    sock_unregister(PF_PHONET);
    dev_remove_pack(&phonet_packet_type);
    phonet_device_exit();
}
void tipc_socket_stop(void)
{
	if (!sockets_enabled)
		return;

	sockets_enabled = 0;
	sock_unregister(tipc_family_ops.family);
	proto_unregister(&tipc_proto);
}
Exemple #9
0
static void __exit vrr_exit(void)
{
	sock_unregister(AF_VRR);
	dev_remove_pack(&vrr_packet_type);
	del_timer(&vrr_timer);
	/* Cleanup routing/sysfs stuff here */
	kobject_put(vrr_obj);

	proto_unregister(&vrr_proto);
}
Exemple #10
0
void bluez_cleanup(void)
{
	/* Release socket */
	hci_sock_cleanup();

	/* Release core */
	hci_core_cleanup();

	sock_unregister(PF_BLUETOOTH);

	remove_proc_entry("bluetooth", NULL);
}
Exemple #11
0
_STATIC int __init socket_notify_init(void)
{
	int err;

	if ((err = install_hook("IPv4", &inet_family_ops, &hooked_inet_family_ops)))
		return err;
	if ((err = register_jprobe(&inet_sock_destruct_jprobe)) < 0) {
		printk(KERN_ERR "error registering inet_sock_destruct_jprobe\n");
		sock_unregister(hooked_inet_family_ops.family);
		reinstall_family("IPv4", &inet_family_ops);		
		return err;
	}
#if defined(CONFIG_IPV6)
	if ((err = install_hook("IPv6", &inet6_family_ops, &hooked_inet6_family_ops))) {
		unregister_jprobe(&inet_sock_destruct_jprobe);
		sock_unregister(hooked_inet_family_ops.family);
		reinstall_family("IPv4", &inet_family_ops);
		return err;
	}
#endif
	return 0;
}
Exemple #12
0
void vsock_core_exit(void)
{
	mutex_lock(&vsock_register_mutex);

	misc_deregister(&vsock_device);
	sock_unregister(AF_VSOCK);
	proto_unregister(&vsock_proto);

	/* We do not want the assignment below re-ordered. */
	mb();
	transport = NULL;

	mutex_unlock(&vsock_register_mutex);
}
Exemple #13
0
void cleanup_module(void)
{
	/* 
	 * Added by MSEVILLA (12-9-2012)
	 *  Cleanup my character device
	 */
	device_destroy(my_class, MKDEV(major_no, 0));
	class_unregister(my_class);
	class_destroy(my_class);
	unregister_chrdev(major_no, DEVICE_NAME);
	printk(KERN_INFO "removing mobile_host module\n");
    
    proto_unregister(&udpmhost_prot);
    sock_unregister(AF_MHOST);
    dev_remove_pack(&mhost_ptype);
}
/* Module registration */
static int __init phonet_init(void)
{
	int err;

#ifdef ACTIVATE_PHONET_DEBUG
	err = sysfs_create_file(kernel_kobj, &phonet_attr.attr);
	if (err)
		printk(KERN_DEBUG "phonet sysfs_create_file failed: %d\n", err);
#endif

	err = phonet_device_init();
	if (err)
		return err;

	pn_sock_init();
	err = sock_register(&phonet_proto_family);
	if (err) {
		printk(KERN_ALERT
			"phonet protocol family initialization failed\n");
		goto err_sock;
	}

	dev_add_pack(&phonet_packet_type);
	phonet_sysctl_init();

	err = isi_register();
	if (err)
		goto err;
	return 0;

err:
	phonet_sysctl_exit();
	sock_unregister(PF_PHONET);
	dev_remove_pack(&phonet_packet_type);
err_sock:
	phonet_device_exit();
	return err;
}
Exemple #15
0
static int install_hook(const char *name,
		const struct net_proto_family *family_ops,
		const struct net_proto_family *hooked_ops)
{
	int err;

	if (family_ops->family != hooked_ops->family)
		return -EINVAL;
	if (try_module_get(family_ops->owner)) {
		sock_unregister(family_ops->family);
		if ((err = sock_register(hooked_ops))) {
			printk(KERN_ERR "%s: %s hook registration failed (error %d)\n",
					THIS_MODULE->name, name, err);
			reinstall_family(name, family_ops);
			return err;
		}
	} else {
		printk(KERN_ERR "%s: failed to get reference to %s family ops\n",
				THIS_MODULE->name, name);
		return -ENOENT;
	}
	return 0;
}
Exemple #16
0
/*
 * unregister the RxRPC protocol
 */
static void __exit af_rxrpc_exit(void)
{
	_enter("");
	rxrpc_sysctl_exit();
	unregister_key_type(&key_type_rxrpc_s);
	unregister_key_type(&key_type_rxrpc);
	sock_unregister(PF_RXRPC);
	proto_unregister(&rxrpc_proto);
	unregister_pernet_subsys(&rxrpc_net_ops);
	ASSERTCMP(atomic_read(&rxrpc_n_tx_skbs), ==, 0);
	ASSERTCMP(atomic_read(&rxrpc_n_rx_skbs), ==, 0);

	/* Make sure the local and peer records pinned by any dying connections
	 * are released.
	 */
	rcu_barrier();
	rxrpc_destroy_client_conn_ids();

	destroy_workqueue(rxrpc_workqueue);
	rxrpc_exit_security();
	kmem_cache_destroy(rxrpc_call_jar);
	_leave("");
}
void atmpvc_exit(void)
{
	sock_unregister(PF_ATMPVC);
}
Exemple #18
0
/*
 * initialise and register the RxRPC protocol
 */
static int __init af_rxrpc_init(void)
{
	int ret = -1;
	unsigned int tmp;

	BUILD_BUG_ON(sizeof(struct rxrpc_skb_priv) > FIELD_SIZEOF(struct sk_buff, cb));

	get_random_bytes(&tmp, sizeof(tmp));
	tmp &= 0x3fffffff;
	if (tmp == 0)
		tmp = 1;
	idr_set_cursor(&rxrpc_client_conn_ids, tmp);

	ret = -ENOMEM;
	rxrpc_call_jar = kmem_cache_create(
		"rxrpc_call_jar", sizeof(struct rxrpc_call), 0,
		SLAB_HWCACHE_ALIGN, NULL);
	if (!rxrpc_call_jar) {
		pr_notice("Failed to allocate call jar\n");
		goto error_call_jar;
	}

	rxrpc_workqueue = alloc_workqueue("krxrpcd", 0, 1);
	if (!rxrpc_workqueue) {
		pr_notice("Failed to allocate work queue\n");
		goto error_work_queue;
	}

	ret = rxrpc_init_security();
	if (ret < 0) {
		pr_crit("Cannot initialise security\n");
		goto error_security;
	}

	ret = register_pernet_subsys(&rxrpc_net_ops);
	if (ret)
		goto error_pernet;

	ret = proto_register(&rxrpc_proto, 1);
	if (ret < 0) {
		pr_crit("Cannot register protocol\n");
		goto error_proto;
	}

	ret = sock_register(&rxrpc_family_ops);
	if (ret < 0) {
		pr_crit("Cannot register socket family\n");
		goto error_sock;
	}

	ret = register_key_type(&key_type_rxrpc);
	if (ret < 0) {
		pr_crit("Cannot register client key type\n");
		goto error_key_type;
	}

	ret = register_key_type(&key_type_rxrpc_s);
	if (ret < 0) {
		pr_crit("Cannot register server key type\n");
		goto error_key_type_s;
	}

	ret = rxrpc_sysctl_init();
	if (ret < 0) {
		pr_crit("Cannot register sysctls\n");
		goto error_sysctls;
	}

	return 0;

error_sysctls:
	unregister_key_type(&key_type_rxrpc_s);
error_key_type_s:
	unregister_key_type(&key_type_rxrpc);
error_key_type:
	sock_unregister(PF_RXRPC);
error_sock:
	proto_unregister(&rxrpc_proto);
error_proto:
	unregister_pernet_subsys(&rxrpc_net_ops);
error_pernet:
	rxrpc_exit_security();
error_security:
	destroy_workqueue(rxrpc_workqueue);
error_work_queue:
	kmem_cache_destroy(rxrpc_call_jar);
error_call_jar:
	return ret;
}
Exemple #19
0
void __exit mpls_sock_exit(void)
{
	sock_unregister(AF_MPLS);
	proto_unregister(&mpls_proto);
}
void
Mksck_Exit(void)
{
	sock_unregister(mksckFamilyOps.family);
	proto_unregister(&mksckProto);
}
Exemple #21
0
void af_nfc_exit(void)
{
	sock_unregister(PF_NFC);
}
Exemple #22
0
static void __exit skraw_exit(void)
{
	sock_unregister(raw_family_ops.family);
	printk(KERN_ALERT "exit\n");
}
Exemple #23
0
static void __exit pppox_exit(void)
{
	sock_unregister(PF_PPPOX);
}
Exemple #24
0
void atmsvc_exit(void)
{
	sock_unregister(PF_ATMSVC);
}
Exemple #25
0
static void __exit netlink_proto_exit(void)
{
       sock_unregister(PF_NETLINK);
       remove_proc_entry("net/netlink", NULL);
}