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; }
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; }
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; }
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; }