Exemplo n.º 1
0
static int __init selnl_init(void)
{
	selnl = netlink_kernel_create(&init_net, NETLINK_SELINUX,
				      SELNLGRP_MAX, NULL, NULL, THIS_MODULE);
	if (selnl == NULL)
		panic("SELinux:  Cannot create netlink socket.");
	netlink_set_nonroot(NETLINK_SELINUX, NL_NONROOT_RECV);
	return 0;
}
Exemplo n.º 2
0
int ks_netlink_modinit(void)
{
	int err;

	skb_queue_head_init(&ks_backlog);

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
	ks_netlink_rcv_wq = create_singlethread_workqueue("ksnl");
	if (!ks_netlink_rcv_wq) {
		err = -ENOMEM;
		goto err_create_workqueue;
	}
#endif

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
	ksnl = netlink_kernel_create(NETLINK_KSTREAMER, ks_netlink_rcv);
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
	ksnl = netlink_kernel_create(NETLINK_KSTREAMER, 0,
					ks_netlink_rcv, THIS_MODULE);
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
	ksnl = netlink_kernel_create(NETLINK_KSTREAMER, 0, ks_netlink_rcv,
							NULL, THIS_MODULE);
#else
	ksnl = netlink_kernel_create(&init_net, NETLINK_KSTREAMER, 0,
					ks_netlink_rcv, NULL, THIS_MODULE);
#endif
	if (!ksnl) {
		err = -ENOMEM;
		goto err_netlink_kernel_create;
	}

	netlink_set_nonroot(NETLINK_KSTREAMER, NL_NONROOT_RECV);

	ks_netlink_state.mcast_seqnum = 0xBEEF;

	init_rwsem(&ks_netlink_state.topology_lock);
	init_timer(&ks_netlink_state.lock_timer);
	ks_netlink_state.lock_timer.function = ks_lock_timeout;
	ks_netlink_state.lock_timer.data = (unsigned long)&ks_netlink_state;

	init_waitqueue_head(&ks_netlink_state.lock_sleep);

	skb_queue_head_init(&ks_netlink_state.mcast_queue);

	return 0;

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
	destroy_workqueue(ks_netlink_rcv_wq);
err_create_workqueue:
#endif
	sock_release(ksnl->sk_socket);
err_netlink_kernel_create:

	return err;
}
Exemplo n.º 3
0
static int __init kobject_uevent_init(void)
{
	uevent_sock = netlink_kernel_create(&init_net, NETLINK_KOBJECT_UEVENT,
					    1, NULL, NULL, THIS_MODULE);
	if (!uevent_sock) {
		printk(KERN_ERR
		       "kobject_uevent: unable to create netlink socket!\n");
		return -ENODEV;
	}
	netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV);
	return 0;
}
Exemplo n.º 4
0
int __init psb_kobject_uevent_init(void)
{
	/* This should be the 15, but 3 seems to work better.  Why? WHY!? */
	/* uevent_sock = netlink_kernel_create(&init_net,
					    NETLINK_PSB_KOBJECT_UEVENT,
					    DRM_GFX_SOCKET_GROUPS,
					    NULL, NULL, THIS_MODULE); */
	uevent_sock = netlink_kernel_create(&init_net,
					    NETLINK_PSB_KOBJECT_UEVENT,
					    0x3, /* 3 is for hotplug & dpst */
					    NULL, NULL, THIS_MODULE);

	if (!uevent_sock) {
		printk(KERN_ERR "psb_kobject_uevent: failed create socket!\n");
		return -ENODEV;
	}
	netlink_set_nonroot(NETLINK_PSB_KOBJECT_UEVENT, NL_NONROOT_RECV);

	return 0;
}