亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? co_main.c

?? 一個(gè)Windows下的Linux專用虛擬機(jī)
?? C
字號(hào):
/* * This source code is a part of coLinux source package. * * Dan Aloni <da-x@colinux.org>, 2004 (c) * * The code is licensed under the GPL. See the COPYING file at * the root directory. * */ #include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <colinux/user/debug.h>#include <colinux/user/reactor.h>#include <colinux/user/monitor.h>#include <colinux/user/cmdline.h>#include <colinux/user/slirp/libslirp.h>#include <colinux/user/slirp/ctl.h>#include <colinux/user/slirp/co_main.h>#include <colinux/os/user/misc.h>/******************************************************************************* * Type Declarations */#define PARM_SLIRP_REDIR_TCP 0#define PARM_SLIRP_REDIR_UDP 1typedef struct start_parameters {	bool_t show_help;	int index;	co_id_t instance;} start_parameters_t;/******************************************************************************* * Globals */static start_parameters_t g_daemon_parameters;static co_reactor_t g_reactor;static co_user_monitor_t *g_monitor_handle;/* from slirp.c */extern struct in_addr client_addr;static co_rc_t monitor_receive(co_reactor_user_t user, unsigned char *buffer, unsigned long size){	co_message_t *message;	unsigned long message_size;	long size_left = size;	long position = 0;	while (size_left > 0) {		message = (typeof(message))(&buffer[position]);		message_size = message->size + sizeof(*message);		size_left -= message_size;		if (size_left >= 0) {			co_slirp_mutex_lock();			slirp_input(message->data, message->size);			co_slirp_mutex_unlock();		}		position += message_size;	}	return CO_RC(OK);}int slirp_can_output(void){	return 1;}void slirp_output(const uint8_t *pkt, int pkt_len){	/* Received packet from Slirp */	struct {		co_message_t message;		co_linux_message_t message_linux;		char data[pkt_len];	} message;		message.message.from = CO_MODULE_CONET0 + g_daemon_parameters.index;	message.message.to = CO_MODULE_LINUX;	message.message.priority = CO_PRIORITY_DISCARDABLE;	message.message.type = CO_MESSAGE_TYPE_OTHER;	message.message.size = sizeof(message) - sizeof(message.message);	message.message_linux.device = CO_DEVICE_NETWORK;	message.message_linux.unit = g_daemon_parameters.index;	message.message_linux.size = pkt_len;	memcpy(message.data, pkt, pkt_len);	g_monitor_handle->reactor_user->send(g_monitor_handle->reactor_user,					     (unsigned char *)&message, sizeof(message));}static co_rc_t wait_loop(void){	int ret, nfds;	fd_set rfds, wfds, xfds;	struct timeval tv;	co_rc_t rc;	while (1) {		/* Slirp main loop as copied from QEMU. */		rc = co_reactor_select(g_reactor, 1);		if (!CO_OK(rc))			break;		nfds = -1;		FD_ZERO(&rfds);		FD_ZERO(&wfds);		FD_ZERO(&xfds);		slirp_select_fill(&nfds, &rfds, &wfds, &xfds);		tv.tv_sec = 0;		tv.tv_usec = 1000;		ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv);		if (ret >= 0) {			slirp_select_poll(&rfds, &wfds, &xfds);		}	}	return rc;}/******************************************************************************** * parameters */static void syntax(void){	co_terminal_print("Cooperative Linux Slirp Virtual Network Daemon\n");	co_terminal_print("Dan Aloni, 2004 (c)\n");	co_terminal_print("\n");	co_terminal_print("syntax: \n");	co_terminal_print("\n");	co_terminal_print("  colinux-slirp-net-daemon -i pid -u unit [-h]\n");	co_terminal_print("\n");	co_terminal_print("    -h                      Show this help text\n");	co_terminal_print("    -i pid                  coLinux instance ID to connect to\n");	co_terminal_print("    -u unit                 Network device index number (0 for eth0, 1 for\n");	co_terminal_print("                            eth1, etc.)\n");	co_terminal_print("    -r tcp|udp:hport:cport[:count]  port redirection.\n");}static co_rc_tparse_redir_param (char *p){	int iProto, iHostPort, iClientPort, iPortCount, i;	do {		// minimal len is "tcp:x:x"		if (strlen (p) < 7)			return CO_RC(ERROR);		if (strncasecmp(p, "tcp", 3) == 0)			iProto = PARM_SLIRP_REDIR_TCP;		else if (strncasecmp(p, "udp", 3) == 0)			iProto = PARM_SLIRP_REDIR_UDP;		else			return CO_RC(ERROR);		// check first ':'		p += 3;		if (*p != ':')			return CO_RC(ERROR);		iHostPort = strtol(p+1, &p, 10);		// check second ':'		if (*p != ':')			return CO_RC(ERROR);		iClientPort = strtol(p+1, &p, 10);		// check optional third ':'		iPortCount = 1;		if (*p == ':')			iPortCount = strtol(p+1, &p, 10);		if (iPortCount <= 0)			return CO_RC(ERROR);		for (i = 0; i < iPortCount; i++) {			co_debug("slirp redir %d %d:%d", iProto, iHostPort+i, iClientPort+i);			if (slirp_redir(iProto, iHostPort+i, client_addr, iClientPort+i) < 0) {				co_terminal_print("conet-slirp-daemon: slirp redir %d:%d failed.\n",						  iHostPort+i, iClientPort+i);			}		}		// Next redirection?	} while (*p++ == '/');	return CO_RC(OK);}static co_rc_tco_slirp_parse_args(co_command_line_params_t cmdline, start_parameters_t *parameters){	co_rc_t rc;	char redir_buff [0x100];	bool_t instance_specified;	bool_t unit_specified;	bool_t redir_specified;	/* Parse command line */	rc = co_cmdline_params_one_arugment_int_parameter(cmdline, "-i",							  &instance_specified, (int *)&parameters->instance);	if (!CO_OK(rc))		return rc;	rc = co_cmdline_params_one_arugment_int_parameter(cmdline, "-u", 							  &unit_specified, &parameters->index);	if (!CO_OK(rc))		return rc;	rc = co_cmdline_params_one_arugment_parameter(cmdline, "-r", &redir_specified,						      redir_buff, sizeof(redir_buff));	if (!CO_OK(rc)) 		return rc;	rc = co_cmdline_params_argumentless_parameter(cmdline, "-h", &parameters->show_help);	if (!CO_OK(rc)) 		return rc;	if (parameters->show_help)		return CO_RC(OK);	rc = co_cmdline_params_check_for_no_unparsed_parameters(cmdline, PTRUE);	if (!CO_OK(rc)) {		syntax();		return rc;	}	if (!unit_specified) {		co_terminal_print("conet-slirp-daemon: device index not specified\n");		return CO_RC(ERROR);	}	if ((parameters->index < 0) ||	    (parameters->index >= CO_MODULE_MAX_CONET)) 	{		co_terminal_print("conet-slirp-daemon: invalid index: %d\n", parameters->index);		return CO_RC(ERROR);	}	if (!instance_specified) {		co_terminal_print("conet-slirp-daemon: coLinux instance not specificed\n");		return CO_RC(ERROR);	}	if (redir_specified) {		rc = parse_redir_param(redir_buff);		if (!CO_OK(rc)) {			co_terminal_print("conet-slirp-daemon: Error in redirection '%s'\n", redir_buff);			return rc;		}	}	return CO_RC(OK);	}co_rc_t co_slirp_main(int argc, char *argv[]){	co_command_line_params_t cmdline;	co_rc_t rc;	co_module_t module;	co_debug_start();	co_process_high_priority_set();	slirp_init();	rc = co_cmdline_params_alloc(argv+1, argc-1, &cmdline);	if (!CO_OK(rc))		goto out;	rc = co_slirp_parse_args(cmdline, &g_daemon_parameters);	if (!CO_OK(rc))		goto out_params;	if (g_daemon_parameters.show_help) {		syntax();		goto out;	}	co_debug("conet-slirp-daemon: create mutex");	rc = co_slirp_mutex_init();	if (!CO_OK(rc))		goto out_params;	co_debug("conet-slirp-daemon: create reactor");	rc = co_reactor_create(&g_reactor);	if (!CO_OK(rc))		goto out_mutex;	co_debug("conet-slirp-daemon: connecting to monitor");	module = CO_MODULE_CONET0 + g_daemon_parameters.index;	rc = co_user_monitor_open(g_reactor, monitor_receive,				  g_daemon_parameters.instance,				  &module, 1,				  &g_monitor_handle);	if (!CO_OK(rc)) {		co_terminal_print("conet-slirp-daemon: monitor open failed\n");		goto out_close;	}	co_terminal_print("conet-slirp-daemon: running\n");	wait_loop();out_close:	co_reactor_destroy(g_reactor);out_mutex:	co_slirp_mutex_destroy();out_params:	co_cmdline_params_free(cmdline);	out:	if (!CO_OK(rc))		co_terminal_print("conet-slirp-daemon: exitcode %x\n", (int)rc);	co_debug_end();	return rc;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看亚洲精品| av男人天堂一区| 日韩一区二区三区电影| 免费看欧美美女黄的网站| 日韩你懂的电影在线观看| 黑人精品欧美一区二区蜜桃| 久久噜噜亚洲综合| 成人app网站| 亚洲综合在线观看视频| 欧美顶级少妇做爰| 激情深爱一区二区| 国产精品家庭影院| 欧美日韩国产区一| 激情综合色丁香一区二区| 国产精品免费人成网站| 色综合久久久久网| 日本视频中文字幕一区二区三区| 欧美成人a在线| 波多野洁衣一区| 成人高清免费观看| 亚洲一区中文在线| 日韩精品一区二区三区swag| 成人午夜碰碰视频| 午夜欧美一区二区三区在线播放| 欧美xxx久久| 日本精品一区二区三区高清| 免费日韩伦理电影| 中文字幕在线一区免费| 91精品国产麻豆国产自产在线 | 国产精品亚洲第一| 亚洲女人的天堂| 日韩欧美一区二区不卡| 色狠狠av一区二区三区| 国产一区二区三区精品视频| 亚洲国产欧美在线人成| 中文字幕av一区二区三区免费看 | 日韩不卡一二三区| 中文字幕一区二区三区四区不卡 | 精品成人a区在线观看| 色一情一乱一乱一91av| 国产在线看一区| 天堂精品中文字幕在线| 亚洲天天做日日做天天谢日日欢| 欧美一区二区在线播放| 色综合网站在线| 福利电影一区二区三区| 久久se精品一区二区| 亚洲成人一区在线| 亚洲精品欧美二区三区中文字幕| 日本一区二区视频在线| 欧美成人性战久久| 这里是久久伊人| 色噜噜狠狠色综合中国| 9久草视频在线视频精品| 久久国产生活片100| 天天操天天干天天综合网| 亚洲欧美一区二区三区极速播放 | 美女免费视频一区| 午夜电影一区二区三区| 亚洲国产精品一区二区久久 | 最新久久zyz资源站| 久久久精品免费免费| 日韩一区二区三区电影在线观看 | 一本大道久久a久久综合| 国产大陆a不卡| 狠狠色综合日日| 免费日本视频一区| 日韩电影在线观看电影| 日韩精品乱码免费| 日一区二区三区| 日本欧洲一区二区| 日韩在线观看一区二区| 免费的成人av| 激情图片小说一区| 国产一区二区精品久久91| 久久66热偷产精品| 国产在线麻豆精品观看| 国产一区二区调教| 国产成人av电影在线| 国产成人免费av在线| 国产99久久久国产精品潘金网站| 韩国精品久久久| 国产大片一区二区| 色综合一区二区| 欧美日韩精品欧美日韩精品一| 欧美日韩一区二区在线视频| 91精品国模一区二区三区| 日韩欧美一二三| 久久亚洲私人国产精品va媚药| 国产午夜精品福利| 国产精品第13页| 一区二区三区视频在线观看| 一区二区欧美国产| 日韩综合小视频| 国产一区二区三区精品视频| 成人一区二区三区中文字幕| 99久久精品国产观看| 欧美视频一二三区| 日韩片之四级片| 国产欧美一区二区三区网站| 亚洲欧美日本韩国| 美女网站色91| 丁香激情综合五月| 欧美性大战久久| 2020国产精品自拍| 亚洲日穴在线视频| 日韩黄色免费网站| 成人av电影在线播放| 欧美日韩在线不卡| 国产日本欧美一区二区| 亚洲愉拍自拍另类高清精品| 看片网站欧美日韩| 一本大道久久a久久综合| 日韩欧美一级片| 亚洲三级视频在线观看| 久久se精品一区精品二区| www.亚洲在线| 日韩一区二区三免费高清| 亚洲欧洲精品一区二区精品久久久| 亚洲成人一二三| 成人app网站| 欧美va在线播放| 亚洲国产成人tv| www.欧美日韩| 久久久蜜桃精品| 日精品一区二区| 一本一道综合狠狠老| 久久天堂av综合合色蜜桃网| 亚洲永久精品大片| 不卡一卡二卡三乱码免费网站| 91精品国产综合久久久蜜臀粉嫩| 国产精品国产三级国产| 蜜桃一区二区三区四区| 欧洲一区二区三区免费视频| 久久久精品欧美丰满| 日韩av高清在线观看| 在线日韩av片| 中文字幕不卡一区| 激情综合色丁香一区二区| 欧美精品一级二级三级| 亚洲欧美日韩国产综合在线 | 亚洲欧洲日产国产综合网| 久久99国产精品久久99| 欧美天天综合网| 亚洲免费观看高清完整| 成人福利视频网站| 久久久精品国产99久久精品芒果 | 成人综合在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 日韩精品一二三四| 精品视频色一区| 一个色在线综合| 91毛片在线观看| 国产精品久久精品日日| 成人午夜免费视频| 久久久精品国产99久久精品芒果| 久草在线在线精品观看| 欧美草草影院在线视频| 免费人成黄页网站在线一区二区| 欧美日韩免费一区二区三区 | 亚洲三级视频在线观看| www.欧美.com| 亚洲欧洲国产专区| 91小视频免费看| 亚洲精品视频免费看| 91久久精品国产91性色tv| 一区二区三区欧美| 欧美色精品天天在线观看视频| 亚洲一区在线电影| 欧美日本韩国一区二区三区视频| 午夜久久久久久| 欧美日韩国产在线观看| 日韩电影一区二区三区| 日韩欧美激情在线| 久久69国产一区二区蜜臀| 久久人人超碰精品| 成人免费av在线| 亚洲免费大片在线观看| 欧美日本高清视频在线观看| 日本欧美在线观看| 久久麻豆一区二区| eeuss鲁片一区二区三区 | 日韩在线一二三区| 欧美一级黄色片| 激情综合一区二区三区| 日本一区二区三区dvd视频在线| 国产·精品毛片| 欧美成人福利视频| 成人性生交大片免费看在线播放| 中文字幕一区二区三区精华液 | 日韩av电影天堂| 久久久久久电影| 色激情天天射综合网| 日韩成人伦理电影在线观看| 久久精品在线免费观看| 色婷婷一区二区| 国产综合一区二区| 亚洲精品国产精华液| 欧美不卡一区二区三区| 99亚偷拍自图区亚洲|