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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? itgsend.cpp

?? D-ITG2.4源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
					msg.flowId = flowId;
					if (sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
					}
					exitThread();
				} else {
					
					msg.code = MSG_FP_END;
					msg.flowId = flowId;
					if (sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
					}
				}
				break;
			case TSP_ACK_SEND_FLOW:
				
				recv(sock, (char *) buffer, sizeof(buffer), 0);
				flowId = *(unsigned int *) buffer;
				
				CREATE_THREAD(&(flows[flowId]), flowSender, NULL, flows[flowId].handle);
#ifdef WIN32
				if (setPriority == true){
					if (SetThreadPriority(flows[flowId].handle, THREAD_PRIORITY_TIME_CRITICAL) == 0)
					printf("Error - Impossible set priority for thread - %d \n", GetLastError());
 				}
#endif
				break;
			case TSP_DISCOVERY:
				sendType(sock, TSP_ACK_DISCOVERY);
				break;
			case TSP_ERR_MSG_2:
				recv(sock, (char *) buffer, sizeof(buffer), 0);
				flowId = *(unsigned int *) buffer;
				printf("Error - Busy port on receiver side\n");
				
				if ( isChannelClosable(chanId))  {
					
					msg.code = MSG_FP_ERR1;
					msg.flowId = flowId;
					if ( sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
					}
			 		exitThread();
				} else {
					msg.code = MSG_FP_ERR1;
					msg.flowId = flowId;
					if ( sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
				 	}
				}
				break;
			case TSP_ERR_MSG_3:
				recv(sock, (char *) buffer, sizeof(buffer), 0);
				flowId = *(unsigned int *) buffer;
				printf("** To generate ICMP traffic sender and receiver must be root\n");
				
				if (isChannelClosable(chanId))  {
					
					msg.code = MSG_FP_ERR1;
				 	msg.flowId = flowId;
				 	if (sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
				 	}
			 		exitThread();
				}else {
					
				 	msg.code = MSG_FP_ERR1;
				 	msg.flowId = flowId;
				 	if (sendPipeMsg(flows[flowId].parserPipe, &msg) < 0) {
						perror("signalManager sending msg");
						exitThread();
				 	}
				}
    				break;
			default:
				printf("Error - Got unknown message from receiver: %d\n",(int) type);
				break;
			} 
#ifdef WIN32
			ioctlsocket(sock, FIONREAD, &pending);
#endif
		} 

#ifdef LINUX_OS
		
		if (FD_ISSET(fd, &rset)) {
#endif
#ifdef WIN32
		
		if (PeekNamedPipe(namedPipe, NULL , 0 , NULL , &available , NULL) == 0) {
			printf("Error in peek named pipe\n");
			exitThread();
		}
#ifdef DEBUG
		printf("available: %d\n", available);
#endif

		while(available > 0) {
#endif
			
			if (recvPipeMsg(signalChannels[chanId].pipe, &msg) < 0) {
				perror("signalManager receiving msg");
				exitThread();
			}
#ifdef DEBUG
			printf("signal manager received msg code: %d\n", msg.code);
#endif
			switch(msg.code) {
			case MSG_SM_NEWFLOW:
				flows[msg.flowId].sigChanId = chanId;
			       	requestToSend(msg.flowId, sock);
				break;
			case MSG_SM_ENDFLOW:
				
#ifdef DEBUG
				printf("send request to close flow %d\n", msg.flowId);
#endif
				closedFlow(msg.flowId, sock);
				break;
			case MSG_SM_ERRFLOW:
				
				msg.code = MSG_FP_ERR2;
				if (sendPipeMsg(flows[msg.flowId].parserPipe, &msg) < 0) {
					perror("signalManager sending msg");
					exitThread();
				}
				closedFlowErr(msg.flowId, sock);
				
				if ( isChannelClosable(chanId))
					exitThread();
				break;
			default:
				printf("Got unknown message from queue\n");
				break;
			}
#ifdef WIN32
			
			if (PeekNamedPipe(fd, NULL , 0 , NULL , &available , NULL) == 0) {
				printf("Error in peek named pipe\n");
				exitThread();
			}
#endif
		} 

	} 
}


int isChannelClosable(int id)
{
	MUTEX_THREAD_LOCK(mutex);
	signalChannels[id].flows--;
	if (signalChannels[id].flows == 0) {
		sendRelease(signalChannels[id].socket);

		if (closeSock(signalChannels[id].socket) < 0)
			printf("error closing socket\n");
		signalChannels[id].socket = -1;
		signalChannels[id].errorLog = false;

		closePipe(signalChannels[id].pipe);

  		MUTEX_THREAD_UNLOCK(mutex);
#ifdef DEBUG
		printf("closing signalling channel\n");
#endif
		return(1);
	}
	MUTEX_THREAD_UNLOCK(mutex);
	return(0);
}


int identifySignalManager(int flowId, int *chanId, struct addrinfo *DestHost)
{
	int signalSock;
	char type =0;
	MUTEX_THREAD_LOCK(mutex);

	
	if (checkDestHostIP(chanId, DestHost) == false) {
		
		createTransportChan(signalSock, DestHost);	
		createSignalChan(signalSock);			

		
		if ((namelogReceiver == 1) && (logServer == 0)){
     		if (sendNameLog(signalSock, logFileReceiver,sizeof(logFileReceiver))<0) {
				printf("sendNameLog() error \n");
				return(-1);
			}
			recv(signalSock, (char *) &type, sizeof(type), 0);
		}
		if (logServer == 1){
			if (sendLog(signalSock, serverLogReceiver, protoTx_ServerLogReceiver, logFileReceiver)<0){
				printf("sendLog() error \n");
				return(-1);
			}
			recv(signalSock, (char  *) &type, sizeof(type), 0);
		}

		
		
		*chanId = 0;
		while (signalChannels[*chanId].socket != -1)
			(*chanId)++;
		
		if (createNewPipe(signalChannels[*chanId].pipe) < 0) {
			printf("signalManager() could not open pipe for flowId %d\n", flowId);
			return(-1);
		}
		
		signalChannels[*chanId].DestAddr = DestHost;
		signalChannels[*chanId].flows = 1;
		signalChannels[*chanId].socket = signalSock;

		if ((logServer ==1 ) || (namelogReceiver ==1)){
			if (type == TSP_ERR_MSG_4){
				printf("signalManager() TSP_ERR_MSG_4\n");
				signalChannels[*chanId].errorLog = true;
			}
		}
		if (signalChannels[*chanId].errorLog == false){
			
			CREATE_THREAD(chanId, signalManager, NULL, signalChannels[*chanId].handle);

			
			signalChanCount++;
		}
		MUTEX_THREAD_UNLOCK(mutex);
		return(1);

	} else {
		MUTEX_THREAD_UNLOCK(mutex);
		return(0);
	}
}







void *flowSender(void *para)
{
	flowDescriptor *param = (flowDescriptor *)para;
	int id = param->id;
   	struct addrinfo *SrcHost =	flows[id].SrcHost;
	struct addrinfo *DestHost =	flows[id].DestHost;
	BYTE meter =	    		flows[id].meter;
	BYTE l4Proto = 		    	flows[id].l4Proto;
	BYTE l7Proto = 		    	flows[id].l7Proto;
	int icmptype = 			flows[id].icmptype;
	int DSByte =			flows[id].DSByte;
	unsigned long Duration = 	flows[id].Duration;
	int TTL = 			flows[id].TTL;
	SumRandom * IntArriv = 		flows[id].IntArriv;
	SumRandom * PktSize = 		flows[id].PktSize;
	int sigChanId =            	flows[id].sigChanId;
	bool Nagle =                	flows[id].Nagle;
	struct info *infos = 		(struct info *) malloc(DIM * sizeof(info));
	bool SrcPortSpecify =       	flows[id].srcPortSpecify;
	unsigned char payload[MAX_PAYLOAD_SIZE];
	unsigned char *ptrSeqNum = payload + sizeof(unsigned int);
	unsigned char *ptrTimeSec = ptrSeqNum + sizeof(unsigned int);
	unsigned char *ptrTimeUsec = ptrTimeSec + sizeof(long int);
	unsigned char *ptrSize = NULL;

	fd_set read_set, active_set;
	int size, size_r = 0;
	long int time, time1, time2;
	struct TTicker Ticker;
	struct timeval start_time, end_time, RcvTime, timeout;

	int socktype;
	int prototype = 0;
	unsigned int seqNum = 1;
	Real wait;
	int count = 0;
	int sockchk = 0;
	struct pipeMsg msg;

	char HelpSrcAddress[INET6_ADDRSTRLEN];
	char HelpDstAddress[INET6_ADDRSTRLEN];
	int tmpPort_SrcPort = 0;
	int tmpPort_DstPort = 0;
#ifdef WIN32
	LARGE_INTEGER _tstart, _tend, _tprec;
	unsigned long secondi = 0, microsecondi = 0;
	int first = 1;
	int first_update = 1;
#endif


#ifdef DEBUG
	printf("flowSender() started\n");
#endif

	
	UniformRV = new Uniform;
	UniformRV->Set(0.5);
	for (int i=0; i<MAX_PAYLOAD_SIZE;i++)
		payload[i]=(unsigned char)(255*UniformRV->Next());

	
	msg.flowId = id;

 	
 	if (SrcPortSpecify == true)
 	    GET_PORT(flows[id].SrcHost, tmpPort_SrcPort);

  	
	SrcHost->ai_family = DestHost->ai_family;
	SrcHost->ai_addrlen = DestHost->ai_addrlen;
	SrcHost->ai_addr = (struct sockaddr *) malloc(SrcHost->ai_addrlen);

	
	switch (l4Proto) {
	case L4_PROTO_UDP:
		socktype = SOCK_DGRAM;
		break;
	case L4_PROTO_ICMP:
		socktype = SOCK_RAW;
		if (meter == METER_OWDM)
			prototype = (DestHost->ai_family == AF_INET) ? IPPROTO_ICMP : IPPROTO_ICMPV6;
		else if (meter == METER_RTTM)
			prototype = IPPROTO_RAW;
		break;
	default:
		socktype = SOCK_STREAM;
		break;
	}

    	
	int sock = socket(DestHost->ai_family, socktype, prototype);
	if (sock < 0) {
		perror("flowSender");
		printf("Could not create a new socket. Flow ID: %d\n", id);
		msg.code = MSG_SM_ERRFLOW;
		
		if (sendPipeMsg(signalChannels[sigChanId].pipe, &msg) < 0) {
			perror("flowSender sending msg");
			exitThread();
		}
		exitThread();
	}

	
#ifdef LINUX_OS
	int reuse = 1;
	int optlen = sizeof(reuse);
	if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, optlen)<0){
		printf("flowSender sending msg");
	}
#endif

	
	if (SrcPortSpecify == true){
#ifdef DEBUG
	printf("Set Port on Sender Side \n");
#endif

#ifdef LINUX_OS
	
	if ( getaddrinfo("::", NULL, NULL, &SrcHost) < 0 )  {
		
		if (SrcHost) freeaddrinfo(SrcHost);
		if ( getaddrinfo("0.0.0.0", NULL, NULL, &SrcHost) <0)
		perror("flowSender");
		printf("Error into getaddrinfo Flow ID: %d\n", id);
		msg.code = MSG_SM_ERRFLOW;
		
		if (sendPipeMsg(signalChannels[sigChanId].pipe, &msg) < 0) {
			perror("flowSender sending msg");
			exitThread();
		}
		exitThread();
	}
#endif

#ifdef WIN32
#ifdef IPv6RECV
      if (getaddrinfo("::", NULL, NULL, &SrcHost) <0){
#else
      if (getaddrinfo("0.0.0.0", NULL, NULL, &SrcHost)<0){
#endif
	perror("flowSender");
	printf("Error into getaddrinfo Flow ID: %d\n", id);
	msg.code = MSG_SM_ERRFLOW;
	
	if (sendPipeMsg(signalChannels[sigChanId].pipe, &msg) < 0) {
		perror("flowSender sending msg");
		exitThread();
	}
	exitThread();
	}
#endif

    SET_PORT(SrcHost, tmpPort_SrcPort);
    if (bind(sock, SrcHost->ai_addr, SrcHost->ai_addrlen)!=0){
	        perror("flowSender");
		printf("Could not bind a new socket. Flow ID: %d\n", id);
		msg.code = MSG_SM_ERRFLOW;
		
		if (sendPipeMsg(signalChannels[sigChanId].pipe, &msg) < 0) {
			perror("flowSender sending msg");
			exitThread();
		}
		exitThread();
	}
	} 


	
	if ((!(l7Proto == L7_PROTO_TELNET) && (!(l7Proto == L7_PROTO_DNS))) && (socktype == SOCK_STREAM)
        && (Nagle == false)) {
		printf("Nagle algorithm disabled\n");
#ifdef LINUX_OS
		int no_delay = 1;
		if (setsockopt(sock, getprotobyname("TCP")->p_proto, TCP_NODELAY, &no_delay,
			sizeof(no_delay)) < 0)
#endif
#ifdef WIN32
		char *no_delayWin;
		no_delayWin = "1";
		if (setsockopt(sock, getprotobyname("TCP")->p_proto, TCP_NODELAY, no_delayWin,
			sizeof(no_delayWin)) < 0)
#endif
			printf("** WARNING ** Flow %d. Cannot disable Nagle Algorithm\n", id);
	}

	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品电影| 国产精品久久久久久妇女6080| 国产黄色成人av| 一区二区三区中文在线观看| 精品国产一区二区三区久久久蜜月| 99免费精品视频| 久久爱www久久做| 玉米视频成人免费看| 国产欧美一区二区在线观看| 欧美三级电影网| 成人免费观看av| 久草这里只有精品视频| 亚洲一区在线观看免费| 国产精品你懂的在线| 欧美一级精品大片| 欧洲日韩一区二区三区| 成人小视频免费在线观看| 男人的j进女人的j一区| 一区二区视频在线| 国产精品嫩草影院av蜜臀| xfplay精品久久| 欧美一卡二卡在线观看| 精品视频在线免费看| 91亚洲精品久久久蜜桃| 国产精品一区二区免费不卡| 蜜臀av国产精品久久久久| 午夜精品福利视频网站| 亚洲激情男女视频| 亚洲激情网站免费观看| 亚洲三级电影网站| 中文字幕一区二| 中文字幕欧美日韩一区| 久久久www免费人成精品| 精品粉嫩超白一线天av| 一区二区三区国产| 国产精品伦理在线| 中文字幕亚洲区| 亚洲视频 欧洲视频| 中文字幕在线不卡视频| 综合电影一区二区三区 | 国产成人三级在线观看| 美女在线观看视频一区二区| 亚洲成av人影院在线观看网| 亚洲一区二区在线观看视频| 一区二区三区在线不卡| 亚洲一区二区美女| 亚洲成在线观看| 日韩av一区二区在线影视| 日韩电影一区二区三区四区| 青青国产91久久久久久| 久久99久久久欧美国产| 国产精品99久久久久久似苏梦涵 | 亚洲国产精品人人做人人爽| 亚洲一区在线看| 三级成人在线视频| 另类小说一区二区三区| 国产一区二区电影| 懂色av一区二区在线播放| 99精品欧美一区二区蜜桃免费| 99久久综合99久久综合网站| 欧美在线不卡一区| 91精品国产综合久久久蜜臀粉嫩| 日韩精品一区二区三区在线观看| 久久网站最新地址| 久久久亚洲高清| 亚洲女女做受ⅹxx高潮| 三级亚洲高清视频| 国产精品一区二区不卡| 在线免费一区三区| 欧美精品一区二区不卡| 国产精品免费观看视频| 亚洲成人第一页| 国产一区二区三区在线观看免费视频 | 欧美一区日韩一区| 久久综合久久综合久久综合| 国产精品伦一区| 亚洲国产欧美在线| 国产一区二区三区久久悠悠色av| 色综合中文字幕国产| 欧美三级韩国三级日本三斤| 久久综合一区二区| 一区二区三区毛片| 韩国精品一区二区| 色激情天天射综合网| 精品国产免费人成电影在线观看四季 | 蜜桃视频一区二区三区在线观看| 国产不卡视频在线播放| 色综合天天综合给合国产| 欧美videofree性高清杂交| 国产精品久久久久久久午夜片| 亚洲成av人**亚洲成av**| 国产麻豆午夜三级精品| 日本伦理一区二区| 久久综合色播五月| 午夜视频在线观看一区二区三区| 国产精品一区专区| 91麻豆精品久久久久蜜臀| 日本一区二区三区久久久久久久久不| 夜夜爽夜夜爽精品视频| 国产夫妻精品视频| 日韩一区二区电影在线| 亚洲男人的天堂在线aⅴ视频| 韩国精品主播一区二区在线观看 | 亚洲超碰97人人做人人爱| 粉嫩嫩av羞羞动漫久久久| 91精品一区二区三区久久久久久| 中文字幕亚洲欧美在线不卡| 狠狠久久亚洲欧美| 6080yy午夜一二三区久久| 亚洲精品久久久久久国产精华液| 国产一区二区三区四区在线观看| 91精品国产综合久久精品| 一区二区三区日韩欧美精品| 国产99久久久国产精品免费看| 欧美一区二区三区在| 午夜精品爽啪视频| 一本久久综合亚洲鲁鲁五月天 | 日本韩国欧美一区| 一色桃子久久精品亚洲| 国产999精品久久| 欧美精品一区二区三区视频| 午夜一区二区三区视频| 欧美最新大片在线看| 亚洲欧美日韩小说| 成人av免费在线| 国产精品乱人伦| 成人国产精品免费观看视频| 国产亚洲欧美中文| 国产毛片精品视频| 国产视频一区二区三区在线观看| 韩国精品一区二区| 久久人人爽爽爽人久久久| 久久国产精品第一页| 欧美不卡激情三级在线观看| 久久er99精品| 欧美精品一区二区三区在线 | 中文字幕一区二区在线观看| 成人久久久精品乱码一区二区三区| 久久网站最新地址| 国产毛片精品视频| 亚洲国产精华液网站w| 成人av午夜影院| 中文字幕视频一区| 91官网在线观看| 午夜精品影院在线观看| 5566中文字幕一区二区电影 | 日韩av在线发布| 欧美tickling网站挠脚心| 精品一区二区三区免费视频| 久久日韩粉嫩一区二区三区| 成人精品在线视频观看| 亚洲欧美偷拍三级| 欧美色网站导航| 老司机一区二区| 久久久91精品国产一区二区精品 | 国产成人自拍高清视频在线免费播放| 精品对白一区国产伦| 成人福利视频网站| 亚洲另类一区二区| 欧美精品乱码久久久久久按摩| 日韩影院在线观看| 久久影院视频免费| av在线综合网| 亚洲国产精品一区二区久久| 欧美岛国在线观看| 大尺度一区二区| 亚洲高清免费观看| 欧美成人福利视频| 99久久夜色精品国产网站| 亚洲第一综合色| 久久综合久久久久88| 91网站最新地址| 美洲天堂一区二卡三卡四卡视频| 久久久久久久性| 欧美性猛交xxxx黑人交| 久久av中文字幕片| 亚洲精品少妇30p| 精品噜噜噜噜久久久久久久久试看| jiyouzz国产精品久久| 日韩综合一区二区| 国产精品嫩草久久久久| 91精品国产入口在线| 成人精品国产免费网站| 日韩高清国产一区在线| 国产精品久久久久久妇女6080| 51精品久久久久久久蜜臀| 成人av影视在线观看| 久久精品国产第一区二区三区| 亚洲天堂久久久久久久| 精品理论电影在线观看| 欧洲亚洲精品在线| 成人一区二区三区| 蜜桃av一区二区在线观看| 亚洲精品国产精华液| 国产视频不卡一区| 日韩一区二区视频| 在线看国产一区| 成人免费高清在线观看| 精久久久久久久久久久| 午夜精品久久久久影视|