예제 #1
0
static int __init dn_rtmsg_init(void)
{
	int rv = 0;
	struct netlink_kernel_cfg cfg = {
		.groups	= DNRNG_NLGRP_MAX,
		.input	= dnrmg_receive_user_skb,
	};

	dnrmg = netlink_kernel_create(&init_net, NETLINK_DNRTMSG, &cfg);
	if (dnrmg == NULL) {
		printk(KERN_ERR "dn_rtmsg: Cannot create netlink socket");
		return -ENOMEM;
	}

	rv = nf_register_net_hook(&init_net, &dnrmg_ops);
	if (rv) {
		netlink_kernel_release(dnrmg);
	}

	return rv;
}
예제 #2
0
파일: mkm_netlink_if.c 프로젝트: qfong/mkm
/*
* 初始化init-function for netlink
*/
void mkm_nl_init(void)
{

    mkm_userspace_pid = -1;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
    nl_sock = netlink_kernel_create( NETLINK_MKM, 0, recv_msg, THIS_MODULE);
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
    nl_sock = netlink_kernel_create( NETLINK_MKM, 0, recv_msg, NULL, THIS_MODULE);
#elif(LINUX_VERSION_CODE  < KERNEL_VERSION(3,6,0))
    nl_sock = netlink_kernel_create(&init_net, NETLINK_MKM, 0, recv_msg, NULL, THIS_MODULE);
#else
    {
        struct netlink_kernel_cfg cfg = {
            .input = recv_msg,
            .groups = 1,
        };

#if(LINUX_VERSION_CODE  < KERNEL_VERSION(3,7,0))
        nl_sock = netlink_kernel_create(&init_net, NETLINK_MKM,THIS_MODULE, &cfg);
#else
        nl_sock = netlink_kernel_create(&init_net, NETLINK_MKM, &cfg);

#endif
    }
#endif
    if(!nl_sock) {
        printk(KERN_WARNING "%s,failed to create netlink socket\n",__FUNCTION__);
    }
    printk(KERN_INFO "MKM (monitor kernel module) Create socket\n");
}


void mkm_nl_close(void)
{
    mutex_lock(&mkm_nl_mutex);
    netlink_kernel_release(nl_sock);
    mutex_unlock(&mkm_nl_mutex);
}
예제 #3
0
static void __exit netlinkuser_exit(void)
{
    printk(KERN_INFO "Exiting netlinkuser module\n");
    netlink_kernel_release(nl_sk);
}
예제 #4
0
파일: nl.c 프로젝트: mike-kang/devicedriver
static void __exit hello_exit(void){
    printk(KERN_INFO "exiting hello module\n");
    netlink_kernel_release(nl_sk);
}
예제 #5
0
static void __exit my_module_exit(void)
{
    netlink_kernel_release(nl_sk);
    printk(KERN_INFO "Goodbye\n");
}
예제 #6
0
파일: dn_rtmsg.c 프로젝트: rldleblanc/linux
static void __exit dn_rtmsg_fini(void)
{
	nf_unregister_net_hook(&init_net, &dnrmg_ops);
	netlink_kernel_release(dnrmg);
}
예제 #7
0
파일: user_comm.c 프로젝트: caisan/l2filter
void user_comm_exit(void) {
    if (_sock) netlink_kernel_release(_sock);
}
static int __init pkt_mangle_init(void)
{   
    printk(KERN_ALERT "\npkt_mangle output module started ...\n");
    
    //pre_routing
    pre_routing.pf = NFPROTO_IPV4;
    pre_routing.priority =  NF_IP_PRI_NAT_SRC;
    pre_routing.hooknum = NF_IP_PRE_ROUTING;
    pre_routing.hook = incoming_change_begin;
    nf_register_hook(& pre_routing);


    //out put does to localout and mangle the hdr

    local_out.pf = NFPROTO_IPV4;
    local_out.priority = NF_IP_PRI_NAT_DST;
    local_out.hooknum = NF_IP_POST_ROUTING;
    local_out.hook =  outgoing_change_begin;
    nf_register_hook(&  local_out);


    //net link also initilizaed here
    printk(KERN_ALERT "Entering: %s\n", __FUNCTION__);
    struct netlink_kernel_cfg cfg = {
                .groups = 1,
                .input = hello_nl_recv_msg,
        };
    nl_sk = netlink_kernel_create(&init_net, NETLINK_USER, &cfg);

    if (!nl_sk)
    {

        printk(KERN_ALERT "Error creating socket.\n");
        return -10;

    }

	struct timespec ts_start,ts_end,test_of_time;

    //create a hash table
    //getnstimeofday(&ts_start);
    record_t l, *p, *r;


    //add hash entry in the hash table
        
    r = (record_t*)kmalloc( sizeof(record_t) , GFP_KERNEL);
	memset(r, 0, sizeof(record_t));
	r->key.src = in_aton("128.112.93.107");
	r->key.dport =5001;
    r->src = in_aton("128.112.93.106");
    r->dst = in_aton("128.112.93.108");
    //r->dport = 5001;

    HASH_ADD(hh, records, key, sizeof(record_key_t), r);

    r = (record_t*)kmalloc( sizeof(record_t) , GFP_KERNEL);
    memset(r, 0, sizeof(record_t));

    r->key.src = in_aton("128.112.93.108");
    r->key.sport =5001;
    r->dst = in_aton("128.112.93.107");
    r->src = in_aton("128.112.93.106");
	
    HASH_ADD(hh, records, key, sizeof(record_key_t), r);

    return 0;

}


static void __exit pkt_mangle_exit(void)
{
    //nf_unregister_hook(&post_routing);
   
    nf_unregister_hook(&local_out);
    nf_unregister_hook(&pre_routing);
   
    netlink_kernel_release(nl_sk);
    
    //this is hash table 
    struct timespec ts_start,ts_end,test_of_time;
    getnstimeofday(&ts_start);
     record_t  *p,  *tmp;
     int counter;
     counter = 0;
     HASH_ITER(hh, records, p, tmp) {
     HASH_DEL(records, p);
     counter ++;
      kfree(p);
    }
예제 #9
0
파일: netlinkserver.c 프로젝트: tianqiu/c
static void __exit netlinktest_exit(void)
{
    printk(KERN_INFO"Leave netlink test module.\n");
    netlink_kernel_release(nltest_sock);
}
/*
 * Deinit the netlink service.
 * Netlink service is unusable after this.
 */
void nl_srv_exit(void)
{
   netlink_kernel_release(nl_srv_sock);
   nl_srv_sock = NULL;
}
예제 #11
0
파일: cba-ecc.c 프로젝트: winstard/GmSSL
void __exit ecc_exit(void) {
	// netlink clean up
	if(sock_fd != NULL)
		netlink_kernel_release(sock_fd);	
}
예제 #12
0
void nlhandler_destroy(void)
{
	error_pool_destroy();
	if (nl_socket)
		netlink_kernel_release(nl_socket);
}
예제 #13
0
파일: kexp.c 프로젝트: 0xAX/kernel-modules
static void __exit kexp_mod_cleanup(void)
{
        printk(KERN_INFO "kexp module exiting...\n");
        netlink_kernel_release(socket);
}
예제 #14
0
파일: deth.c 프로젝트: carriercomm/dropgit
static void deth_exit_net(struct net* net)
{
    struct deth_net* dn = net_generic(net, deth_net_id);
    netlink_kernel_release(dn->nl_sk);
}
예제 #15
0
static void __exit spi_exit(void) {
    printk(KERN_INFO "exiting SPI module\n");
    spi_release();
    gpio_free(gpio_pin_chipselect);
    netlink_kernel_release(nl_sk);
}
예제 #16
0
void nlhandler_destroy(void)
{
	netlink_kernel_release(nl_socket);
}
예제 #17
0
파일: netlink_k.c 프로젝트: AllenWeb/linux
void netlink_exit(struct sock *sock)
{
	netlink_kernel_release(sock);
}
예제 #18
0
파일: nf_nat64_config.c 프로젝트: tbe/NAT64
void nat64_config_destroy(void)
{
	/* Netlink sockets. */
	if (my_nl_sock)
		netlink_kernel_release(my_nl_sock);
}
예제 #19
0
void pna_alert_cleanup(void)
{
    netlink_kernel_release(pna_alert_sock);
}
/**
 * rmnet_config_exit() - Cleans up all netlink related resources
 */
void rmnet_config_exit(void)
{
	netlink_kernel_release(nl_socket_handle);
}
예제 #21
0
static void __exit kudp_exit(void)
{
	//sock_release(netlink_sock->sk_socket);
	netlink_kernel_release(netlink_sock);
	printk("netlink driver remove successfully\n");
}
예제 #22
0
static void __exit dummyflt_exit(void)
{
	netlink_kernel_release(nl_sk);
	redirfs_delete_filter(dummyflt);
}
void cleanup_module(void)
{         
        unregister_jprobe(&my_jprobe_udp);
        netlink_kernel_release(nl_sk_udp);
        printk("jprobe unregistered\n");
 }
예제 #24
0
static void dispmgr_nl_exit(void)
{
	printk(KERN_INFO "kdispmgr: exiting hello module\n");
	netlink_kernel_release(nl_sk);
	g_pid = 0;
}
예제 #25
0
static void __exit netsession_nl_exit(void)
{
	printk("Removing netsession_nl NETLINK layer.\n");
	netlink_kernel_release(netsession_nl);
	return;
}
예제 #26
0
static void __exit nfnetlink_exit(void)
{
	printk("Removing netfilter NETLINK layer.\n");
	netlink_kernel_release(nfnl);
	return;
}
예제 #27
0
int dest_Broadcast(){
    netlink_kernel_release(netlink_broadcast_socket);
    return 200;
}
예제 #28
0
/**
 * ecryptfs_release_netlink
 *
 * Frees all memory used by the netlink context array and releases the
 * netlink socket.
 */
void ecryptfs_release_netlink(void)
{
	netlink_kernel_release(ecryptfs_nl_sock);
	ecryptfs_nl_sock = NULL;
}
예제 #29
0
void nl_halt(void){
	netlink_kernel_release(nl_sk);

	kthread_stop(nl_thread), nl_thread = NULL;
}