static int __init init(void)
{
	int i, ret;

	/* If no port given, default to standard irc port */

	if (ports[0] == 0)
		ports[0] = 500;

	for (i = 0; (i < MAX_PORTS) && ports[i]; i++) {
		memset(&ipsec_helpers[i], 0,
		       sizeof(struct ip_conntrack_helper));
		ipsec_helpers[i].tuple.src.u.udp.port = htons(ports[i]);
		ipsec_helpers[i].tuple.dst.protonum = IPPROTO_UDP;
		ipsec_helpers[i].mask.src.u.udp.port = 0xFFFF;
		ipsec_helpers[i].mask.dst.protonum = 0xFFFF;
		ipsec_helpers[i].help = help;


		ret = ip_conntrack_helper_register(&ipsec_helpers[i]);

		if (ret) {
			printk("ip_conntrack_ipsec: ERROR registering port %d\n",
				ports[i]);
			fini();
			return -EBUSY;
		}
		ports_n_c++;
	}

	return 0;
}
static int __init init(void)
{
	int i, ret;

	if (ports[0] == 0)
		ports[0] = WMINITIAL;

	for (i = 0; (i < MAXWM_PORTS) && ports[i]; i++) {
		memset(&wm[i], 0, sizeof(struct ip_conntrack_helper));
		wm[i].tuple.src.u.tcp.port = htons(ports[i]);
		wm[i].tuple.dst.protonum = IPPROTO_TCP;
		wm[i].mask.src.u.tcp.port = 0xFFFF;
/*eshi*/
		wm[i].mask.dst.protonum = 0xFFFF;
		wm[i].max_expected = WMMAXEXPECTED;
                wm[i].timeout = 0;
                wm[i].flags = IP_CT_HELPER_F_REUSE_EXPECT;
                wm[i].me = ip_conntrack_wm;
		wm[i].help = help;

		DEBUGP("ip_conntrack_wm: registering helper for port %d\n", 
				ports[i]);
		ret = ip_conntrack_helper_register(&wm[i]);

		if (ret) {
		  fini();
	  printk("ip_conntrack_wm: registering helper for port FAILED  \n"); 
		  return ret;
		}
		ports_c++;
	}
	return 0;
}
static int __init init(void)
{
	int port, ret;
	char *tmpname;

	/* If no port given, default to standard RPC port */
	if (ports[0] == 0)
		ports[0] = RPC_PORT;

	for (port = 0; (port < MAX_PORTS) && ports[port]; port++) {
		memset(&rpc_helpers[port], 0, sizeof(struct ip_conntrack_helper));

		tmpname = &rpc_names[port][0];
		if (ports[port] == RPC_PORT)
			sprintf(tmpname, "rpc");
		else
			sprintf(tmpname, "rpc-%d", ports[port]);
		rpc_helpers[port].name = tmpname;

		rpc_helpers[port].me = THIS_MODULE;
		rpc_helpers[port].max_expected = 1;
		rpc_helpers[port].timeout = 5 * 60; /* stes */

		rpc_helpers[port].tuple.dst.protonum = IPPROTO_UDP;
		rpc_helpers[port].mask.dst.protonum = 0xff;

		/* RPC can come from ports 0:65535 to ports[port] (111) */
		rpc_helpers[port].tuple.src.u.udp.port = htons(ports[port]);
		rpc_helpers[port].mask.src.u.udp.port = htons(0xffff);
		rpc_helpers[port].mask.dst.u.udp.port = htons(0x0);

		rpc_helpers[port].help = help;

		PRINTK("registering helper for port #%d: %d/UDP\n", port, ports[port]);
		PRINTK("helper match ip   %u.%u.%u.%u:%u->%u.%u.%u.%u:%u\n",
			NIPQUAD(rpc_helpers[port].tuple.dst.ip),
			ntohs(rpc_helpers[port].tuple.dst.u.udp.port),
			NIPQUAD(rpc_helpers[port].tuple.src.ip),
			ntohs(rpc_helpers[port].tuple.src.u.udp.port));
		PRINTK("helper match mask %u.%u.%u.%u:%u->%u.%u.%u.%u:%u\n",
			NIPQUAD(rpc_helpers[port].mask.dst.ip),
			ntohs(rpc_helpers[port].mask.dst.u.udp.port),
			NIPQUAD(rpc_helpers[port].mask.src.ip),
			ntohs(rpc_helpers[port].mask.src.u.udp.port));

		ret = ip_conntrack_helper_register(&rpc_helpers[port]);

		if (ret) {
			printk("ERROR registering port %d\n",
				ports[port]);
			fini();
			return -EBUSY;
		}
		ports_n_c++;
	}
	return 0;
}
Beispiel #4
0
static int __init init(void)
{
	int err;
	DEBUGP("PPTP netfilter connection tracking: ");
	if((err = ip_conntrack_helper_register(&pptp_out)))
		printk("register failed!\n");
	else
		DEBUGP("registered\n");
	pptp_proc_create();
	return err;
}
Beispiel #5
0
/* ip_conntrack_pptp initialization */
static int __init init(void)
{
	int retcode;

	DEBUGP(__FILE__ ": registering helper\n");
	if ((retcode = ip_conntrack_helper_register(&pptp))) {
                printk(KERN_ERR "Unable to register conntrack application "
				"helper for pptp: %d\n", retcode);
		return -EIO;
	}

	printk("ip_conntrack_pptp version %s loaded\n", IP_CT_PPTP_VERSION);
	return 0;
}
static int __init init(void)
{
	int ret;

	amanda_buffer = kmalloc(65536, GFP_KERNEL);
	if (!amanda_buffer)
		return -ENOMEM;

	ret = ip_conntrack_helper_register(&amanda_helper);
	if (ret < 0) {
		kfree(amanda_buffer);
		return ret;
	}
	return 0;


}
Beispiel #7
0
static int __init init(void)
{
	int i, ret;
	char *tmpname;

	if (!ports[0])
		ports[0]=TFTP_PORT;

	for (i = 0 ; (i < MAX_PORTS) && ports[i] ; i++) {
		/* Create helper structure */
		memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));

		tftp[i].tuple.dst.protonum = IPPROTO_UDP;
		tftp[i].tuple.src.u.udp.port = htons(ports[i]);
		tftp[i].mask.dst.protonum = 0xFFFF;
		tftp[i].mask.src.u.udp.port = 0xFFFF;
		tftp[i].max_expected = 1;
		tftp[i].timeout = 0;
		tftp[i].flags = IP_CT_HELPER_F_REUSE_EXPECT;
		tftp[i].me = THIS_MODULE;
		tftp[i].help = tftp_help;

		tmpname = &tftp_names[i][0];
		if (ports[i] == TFTP_PORT)
			sprintf(tmpname, "tftp");
		else
			sprintf(tmpname, "tftp-%d", i);
		tftp[i].name = tmpname;

		DEBUGP("port #%d: %d\n", i, ports[i]);

		ret=ip_conntrack_helper_register(&tftp[i]);
		if (ret) {
			printk("ERROR registering helper for port %d\n",
				ports[i]);
			fini();
			return(ret);
		}
		ports_c++;
	}
	return(0);
}
static int __init init(void)
{
	int i, ret;
	char *tmpname;

	if(!ports[0])
		ports[0]=QUAKE3_MASTER_PORT;

	for(i = 0 ; (i < MAX_PORTS) && ports[i] ; i++) {
		/* Create helper structure */
		memset(&quake3[i], 0, sizeof(struct ip_conntrack_helper));

		quake3[i].tuple.dst.protonum = IPPROTO_UDP;
		quake3[i].tuple.src.u.udp.port = htons(ports[i]);
		quake3[i].mask.dst.protonum = 0xFF;
		quake3[i].mask.src.u.udp.port = 0xFFFF;
		quake3[i].help = quake3_help;
		quake3[i].me = THIS_MODULE;
		quake3[i].timeout = 120;

		tmpname = &quake3_names[i][0];
		if (ports[i] == QUAKE3_MASTER_PORT)
			sprintf(tmpname, "quake3");
		else
			sprintf(tmpname, "quake3-%d", i);
		quake3[i].name = tmpname;
		
		DEBUGP("ip_conntrack_quake3: registering helper for port %d\n",
		       ports[i]);

		ret=ip_conntrack_helper_register(&quake3[i]);
		if(ret) {
			fini();
			return(ret);
		}
		ports_c++;
	}

	return(0);
}
static int __init
init(void)
{
    int i, ret;
    char *tmpname;

    if (!ports[0])
        ports[0] = IPSEC_UDP_PORT;

    for (i = 0 ; (i < MAX_PORTS) && ports[i] ; i++) {
        /* Create helper structure */
        ipsec[i].tuple.dst.protonum   = IPPROTO_UDP;
        ipsec[i].tuple.src.u.udp.port = htons(ports[i]);
        ipsec[i].mask.dst.protonum    = 0xFFFF;
        ipsec[i].mask.src.u.udp.port  = 0xFFFF;
        ipsec[i].max_expected         = 1;
        ipsec[i].timeout              = 0;
        //ipsec[i].flags                = IP_CT_HELPER_F_REUSE_EXPECT;
        ipsec[i].me                   = THIS_MODULE;
        ipsec[i].help                 = ipsec_help;
        tmpname                     = &ipsec_names[i][0];
        if (ports[i] == IPSEC_UDP_PORT)
            sprintf(tmpname, "ipsec");
        else
            sprintf(tmpname, "ipsec-%d", i);
        ipsec[i].name   = tmpname;

        //printk( KERN_DEBUG "%s:%sport #%d: %d\n", __FILE__,
        //      __FUNCTION__, i, ports[i]);

        ret=ip_conntrack_helper_register(&ipsec[i]);
        if (ret) {
            //printk("ERROR registering helper for port %d\n", ports[i]);
            fini();
            return(ret);
        }
        ports_c++;
    }
    return(0);
}
static int __init ip_conntrack_tftp_init(void)
{
	int i, ret;
	char *tmpname;

	if (ports_c == 0)
		ports[ports_c++] = TFTP_PORT;

	for (i = 0; i < ports_c; i++) {
		/* Create helper structure */
		memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));

		tftp[i].tuple.dst.protonum = IPPROTO_UDP;
		tftp[i].tuple.src.u.udp.port = htons(ports[i]);
		tftp[i].mask.dst.protonum = 0xFF;
		tftp[i].mask.src.u.udp.port = 0xFFFF;
		tftp[i].max_expected = 1;
		tftp[i].timeout = 5 * 60; /* 5 minutes */
		tftp[i].me = THIS_MODULE;
		tftp[i].help = tftp_help;

		tmpname = &tftp_names[i][0];
		if (ports[i] == TFTP_PORT)
			sprintf(tmpname, "tftp");
		else
			sprintf(tmpname, "tftp-%d", i);
		tftp[i].name = tmpname;

		DEBUGP("port #%d: %d\n", i, ports[i]);

		ret=ip_conntrack_helper_register(&tftp[i]);
		if (ret) {
			printk("ERROR registering helper for port %d\n",
				ports[i]);
			ip_conntrack_tftp_fini();
			return(ret);
		}
	}
	return(0);
}
static int __init ip_conntrack_amanda_init(void)
{
	int ret, i;

	ret = -ENOMEM;
	for (i = 0; i < ARRAY_SIZE(search); i++) {
		search[i].ts = textsearch_prepare(ts_algo, search[i].string,
						  search[i].len,
						  GFP_KERNEL, TS_AUTOLOAD);
		if (search[i].ts == NULL)
			goto err;
	}
	ret = ip_conntrack_helper_register(&amanda_helper);
	if (ret < 0)
		goto err;
	return 0;

err:
	for (; i >= 0; i--) {
		if (search[i].ts)
			textsearch_destroy(search[i].ts);
	}
	return ret;
}
static int __init
init(void)
{
    int i, ret;
    struct ip_conntrack_helper *hlpr;
    char *tmpname;

    printk("ip_conntrack_rtsp v" IP_NF_RTSP_VERSION " loading\n");

    if (max_outstanding < 1)
    {
        printk("ip_conntrack_rtsp: max_outstanding must be a positive integer\n");
        return -EBUSY;
    }
    if (setup_timeout < 0)
    {
        printk("ip_conntrack_rtsp: setup_timeout must be a positive integer\n");
        return -EBUSY;
    }

    /* If no port given, default to standard rtsp port */
    if (ports[0] == 0)
    {
        ports[0] = RTSP_PORT;
    }

    for (i = 0; (i < MAX_PORTS) && ports[i]; i++)
    {
        hlpr = &rtsp_helpers[i];
        memset(hlpr, 0, sizeof(struct ip_conntrack_helper));
        hlpr->tuple.src.u.tcp.port = htons(ports[i]);
        hlpr->tuple.dst.protonum = IPPROTO_TCP;
        hlpr->mask.src.u.tcp.port = 0xFFFF;
        hlpr->mask.dst.protonum = 0xFF;
        hlpr->max_expected = max_outstanding;
        hlpr->timeout = setup_timeout;
        hlpr->me = THIS_MODULE;
        hlpr->help = help;

        tmpname = &rtsp_names[i][0];
        if (ports[i] == RTSP_PORT)
        {
            sprintf(tmpname, "rtsp");
        }
        else
        {
            sprintf(tmpname, "rtsp-%d", i);
        }
        hlpr->name = tmpname;

        DEBUGP("port #%d: %d\n", i, ports[i]);

        ret = ip_conntrack_helper_register(hlpr);

        if (ret)
        {
            printk("ip_conntrack_rtsp: ERROR registering port %d\n", ports[i]);
            fini();
            return -EBUSY;
        }
        num_ports++;
    }
    return 0;
}
Beispiel #13
0
static int __init init(void)
{
	int i, ret=0;
	u_int16_t port;

	/* nornamlize the input */
	normalize();

	for (i=0;i<MAXPT_PORTS;i++)
	     memset(&pt[i], 0, sizeof(struct ip_conntrack_helper));

	for (i = 0; i < entries && registered_port < MAXPT_PORTS; i++) {
	    for (port = pt_record[i].outport[0]; port <= pt_record[i].outport[1]; port++ ) {

	        pt[registered_port].max_expected = PTMAXEXPECTED;
 //               pt[registered_port].timeout = 0;
//                pt[registered_port].flags = IP_CT_HELPER_F_REUSE_EXPECT;
                //pt[registered_port].me = ip_conntrack_pt;
	        pt[registered_port].help = help;

		if ( pt_record[i].outproto == 1 ) {
		  pt[registered_port].tuple.src.u.tcp.port = htons(port);
		  pt[registered_port].tuple.dst.protonum = IPPROTO_TCP;
		  pt[registered_port].mask.src.u.tcp.port = 0xFFFF;
		  pt[registered_port].mask.dst.protonum = 0xFFFF;
		}
		else if ( pt_record[i].outproto == 2 ) {
		  pt[registered_port].tuple.src.u.udp.port = htons(port);
		  pt[registered_port].tuple.dst.protonum = IPPROTO_UDP;
		  pt[registered_port].mask.src.u.udp.port = 0xFFFF;
		  pt[registered_port].mask.dst.protonum = 0xFFFF;
		}
		else {
		  pt[registered_port].tuple.src.u.all = htons(port);
		  pt[registered_port].mask.src.u.all = 0xFFFF;
		  pt[registered_port].mask.dst.protonum = 0;
		}
	    	DEBUGP("ip_conntrack_pt: registering helper for port %d\n",port);
		if ( check_port(port) )
	    	    printk("ip_conntrack_pt: cannot register port %d (already registered by other module)\n",port);
		else
	    	    ret = ip_conntrack_helper_register(&pt[registered_port++]);

		if( registered_port >= MAXPT_PORTS ) {
			printk( "Conntrack port forwarding table is full.  Remaining entries are not processed.\n" );
			pt_record[i].outport[1] = port;
			entries = i + 1;
			break;
		}

	    	if (ret) {
		   failed_port = port;
	           printk("ip_conntrack_pt: port %d register FAILED,port already registered  \n",port); 
	           fini();
	           return ret;
	    	}
	    }
	}

	return 0;
}
static int __init init(void)
{
	int port, ret;
	char *tmpname;

	/* If no port given, default to standard RSH port */
	if (ports[0] == 0)
		ports[0] = RSH_PORT;

	/* the check on reserved port <1023 doesn't work with Legato */
        /* for Legato NetWorker, the check should be that port <= 9936 */ 

        if (range == 0) 
		range = 1023;

	/* Legato uses range [ 7937 : 9936 ] -> 7937 by default */

        rangemask = 0xffff ^ range; /* defaults to = 0xfc00 */

	for (port = 0; (port < MAX_PORTS) && ports[port]; port++) {
		memset(&rsh_helpers[port], 0, sizeof(struct ip_conntrack_helper));

		tmpname = &rsh_names[port][0];
		if (ports[port] == RSH_PORT)
			sprintf(tmpname, "rsh");
		else
			sprintf(tmpname, "rsh-%d", ports[port]);
		rsh_helpers[port].name = tmpname;

		rsh_helpers[port].me = THIS_MODULE;
		rsh_helpers[port].max_expected = 1;
		rsh_helpers[port].timeout = 5; /* stes bug timeout=0 */

		rsh_helpers[port].tuple.dst.protonum = IPPROTO_TCP;
		rsh_helpers[port].mask.dst.protonum = 0xff;

		/* RSH must come from ports 0:1023 to ports[port] (514) */
		rsh_helpers[port].tuple.src.u.tcp.port = htons(ports[port]);
		rsh_helpers[port].mask.src.u.tcp.port = htons(rangemask);
		rsh_helpers[port].mask.dst.u.tcp.port = htons(rangemask);

		rsh_helpers[port].help = help;

		PRINTK("registering helper for port #%d: %d/TCP\n", port, ports[port]);
		PRINTK("helper match ip   %u.%u.%u.%u:%u-%u.%u.%u.%u:%u\n",
			NIPQUAD(rsh_helpers[port].tuple.src.ip),
			ntohs(rsh_helpers[port].tuple.src.u.tcp.port),
			NIPQUAD(rsh_helpers[port].tuple.dst.ip),
			ntohs(rsh_helpers[port].tuple.dst.u.tcp.port));
		PRINTK("helper match mask %u.%u.%u.%u:%u-%u.%u.%u.%u:%u\n",
			NIPQUAD(rsh_helpers[port].mask.src.ip),
			ntohs(rsh_helpers[port].mask.src.u.tcp.port),
			NIPQUAD(rsh_helpers[port].mask.dst.ip),
			ntohs(rsh_helpers[port].mask.dst.u.tcp.port));

		ret = ip_conntrack_helper_register(&rsh_helpers[port]);

		if (ret) {
			printk("ERROR registering port %d\n",
				ports[port]);
			fini();
			return -EBUSY;
		}
		ports_n_c++;
	}
	return 0;
}
static int __init init(void)
{
	return ip_conntrack_helper_register(&amanda_helper);
}