Ejemplo n.º 1
0
static status_t
ipv6_std_ops(int32 op, ...)
{
	switch (op) {
		case B_MODULE_INIT:
			return init_ipv6();
		case B_MODULE_UNINIT:
			return uninit_ipv6();
		default:
			return B_ERROR;
	}
}
Ejemplo n.º 2
0
int ne_sock_init(void)
{
#ifdef WIN32
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
#endif

    if (init_state > 0) {
        init_state++;
	return 0;
    } 
    else if (init_state < 0) {
	return -1;
    }

#ifdef WIN32    
    wVersionRequested = MAKEWORD(2, 2);
    
    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0) {
	return init_state = -1;
    }
#ifdef HAVE_SSPI
    if (ne_sspi_init() < 0) {
        return init_state = -1;
    }
#endif
#endif

#ifdef NE_HAVE_SOCKS
    SOCKSinit("neon");
#endif

#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
    (void) signal(SIGPIPE, SIG_IGN);
#endif

#ifdef USE_CHECK_IPV6
    init_ipv6();
#endif

#ifdef NE_HAVE_SSL
    if (ne__ssl_init()) {
        return init_state = -1;
    }
#endif

    init_state = 1;
    return 0;
}
Ejemplo n.º 3
0
int ne_sock_init(void)
{
#ifdef WIN32
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
#endif

    if (init_result > 0) 
	return 0;
    else if (init_result < 0)
	return -1;

#ifdef WIN32    
    wVersionRequested = MAKEWORD(2, 2);
    
    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0) {
	init_result = -1;
	return -1;
    }

#endif

#ifdef NEON_SOCKS
    SOCKSinit("neon");
#endif

#if defined(HAVE_SIGNAL) && defined(SIGPIPE)
    (void) signal(SIGPIPE, SIG_IGN);
#endif

#ifdef USE_GETADDRINFO
    init_ipv6();
#endif

#ifdef NEON_SSL
    if (init_ssl()) {
	NE_DEBUG(NE_DBG_SOCKET, "SSL initialization failed; lacking PRNG?\n");
	init_result = -1;
	return -1;
    }
    prng_seeded = 1;
#endif

    init_result = 1;
    return 0;
}
Ejemplo n.º 4
0
void 
init_router(void)
{
	int log_remote, is_ap_mode, nvram_need_commit;

#if defined (USE_RTL8367)
	rtl8367_node();
#endif
#if defined (USE_MTK_ESW) || defined (USE_MTK_GSW)
	mtk_esw_node();
#endif

	nvram_convert_old_params();

	nvram_need_commit = nvram_restore_defaults();

	get_eeprom_params();

	nvram_convert_misc_values();

	if (nvram_need_commit)
		nvram_commit();

	init_gpio_leds_buttons();

	gen_ralink_config_2g(0);
	gen_ralink_config_5g(0);
	load_wireless_modules();
#if (BOARD_NUM_USB_PORTS > 0)
	load_usb_modules();
#endif
	recreate_passwd_unix(1);

	set_timezone();
	set_pagecache_reclaim();

	storage_load_time();

	is_ap_mode = get_ap_mode();

	log_remote = nvram_invmatch("log_ipaddr", "");
	if (!log_remote)
		start_logger(1);

	init_loopback();
	init_bridge(is_ap_mode);
#if defined (USE_IPV6)
	init_ipv6();
#endif
	start_detect_link();
	start_detect_internet(0);
	start_lan(is_ap_mode, 0);

	if (log_remote)
		start_logger(1);

	start_dns_dhcpd(is_ap_mode);
#if defined(APP_SMBD) || defined(APP_NMBD)
	start_wins();
#endif

	if (!is_ap_mode) {
		ipt_nat_default();
		ipt_filter_default();
#if defined (USE_IPV6)
		ip6t_filter_default();
#endif
		start_wan();
	}

	start_services_once(is_ap_mode);

	notify_leds_detect_link();

	// system ready
	system("/etc/storage/started_script.sh &");
}
Ejemplo n.º 5
0
//RY: end here
//TODO: need to refine the code.
int init_network (void)
{
    long arg;
    unsigned int length = sizeof (server);
    gethostname (hostname, sizeof (hostname));
    //TODO:Read from a file, RY:
    if(xxx == IPv6)
    {
    	init_ipv6();
    	return 0;
    }

//TODO: need to put it in separate function?
// If it is IPv4 socket, then
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = gconfig.ipaddr.listenaddr;
    server.sin_port = htons (gconfig.port);
    printf("RY:1\n");
    if ((server_socket = socket (PF_INET, SOCK_DGRAM, 0)) < 0)
    {    printf("RY:2\n");
    	printf( "%s: Unable to allocate IPv4 socket. Terminating.\n",
    			__FUNCTION__);
		return -EINVAL;
    };

    if (bind (server_socket, (struct sockaddr *) &server, sizeof (server)))
    {
        close (server_socket);
        printf( "%s: Unable to bind socket: %s. Terminating.\n",
             __FUNCTION__, strerror(errno), errno);
        return -EINVAL;
    }
    if (getsockname (server_socket, (struct sockaddr *) &server, &length))
    {
        printf( "%s: Unable to read socket name.Terminating.\n",
             __FUNCTION__);
        return -EINVAL;
    }
    /*
     * For L2TP/IPsec with KLIPSng, set the socket to receive IPsec REFINFO
     * values.
     */
    arg=1;
    if(setsockopt(server_socket, SOL_IP, IP_IPSEC_REFINFO,
		  &arg, sizeof(arg)) != 0) {
	    l2tp_log(LOG_CRIT, "setsockopt recvref: %s\n", strerror(errno));

	    gconfig.ipsecsaref=0;
    }

#ifdef USE_KERNEL
    if (gconfig.forceuserspace)
    {
        printf( "Not looking for kernel support.\n");
        kernel_support = 0;
    }
    else
    {
        int kernel_fd = socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OL2TP);
        if (kernel_fd < 0)
        {
            printf( "L2TP kernel support not detected.\n");
            kernel_support = 0;
        }
        else
        {
            close(kernel_fd);
            printf( "Using l2tp kernel support.\n");
            kernel_support = -1;
        }
    }
#else
    printf( "This binary does not support kernel L2TP.\n");
#endif
    arg = fcntl (server_socket, F_GETFL);
    arg |= O_NONBLOCK;
    fcntl (server_socket, F_SETFL, arg);
    gconfig.port = ntohs (server.sin_port);
    return 0;
}