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

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

?? tftpd.c

?? linux tftp源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
//printf("validate_access 1\n");	file = fdopen(fd, (mode == RRQ)? "r":"w");//printf("validate_access 2 file =%p\n",file);	if (file == NULL) {		return errno+100;	}//printf("validate_access 3\n");	return (0);}int	timeout;jmp_buf	timeoutbuf;//timer()void timer(void){	timeout += rexmtval;	if (timeout >= maxtimeout)		_exit(1);#ifdef EMBED	printf("%s(%d): no longjmp()\n", __FILE__, __LINE__);#else	longjmp(timeoutbuf, 1);#endif}/* * Send the requested file. */sendfile(pf)	struct formats *pf;{	unsigned char *dp, *r_init();	unsigned char *ap;    /* ack packet */	register int block = 1, size, n;	short	th_opcode,th_opcode2;	unsigned short	th_block,th_block2;//printf(" ===== sendfile 1\n");	//signal(SIGALRM, (void *)timer);	dp = r_init();	ap = (unsigned char *)ackbuf;	do {//printf(" ===== sendfile 2 file = %p \n",file);		size = readit(file, &dp, pf->f_convert);printf(" **** size %d , block = %d\n",size,block);		if (size < 0) {			nak(errno + 100);			goto abort;		}		//th_opcode = htons((u_short)DATA);		//th_block = htons((u_short)block);		//dp[0] = th_opcode && 0xff;		//dp[1] = (th_opcode >> 8)&& 0xff;		//dp[2] = th_block && 0xff;		//dp[3] = (th_block >> 8)&& 0xff;		dp[0] = 0;		dp[1] = DATA;		dp[2] = (block >> 8) & 0xff;		dp[3] = block & 0xff;//printf("th_opcode = %d , th_block = %d\n",th_opcode,th_block);printf("th_opcode = %d , th_block = %d\n",*(unsigned short*)(&dp[0]),*(unsigned short*)(&dp[2]));		timeout = 0;#ifndef EMBED		(void) setjmp(timeoutbuf);#endifsend_data://printf(" ===== sendfile 3\n");		if (send(peer, dp, size + 4, 0) != size + 4) {			//syslog(LOG_ERR, "tftpd: write: %m\n");			goto abort;		}//printf(" ===== sendfile 4  f_convert = %d \n", pf->f_convert);		read_ahead(file, pf->f_convert);		for ( ; ; ) {//printf(" ===== sendfile 5\n");		//	alarm(rexmtval);        /* read the ack */			n = recv(peer, ackbuf, sizeof (ackbuf), 0);		//	alarm(0);			if (n < 0) {				//syslog(LOG_ERR, "tftpd: read: %m\n");				goto abort;			}			th_opcode2 = (ap[0] << 8 | ap[1]);			th_block2 = (ap[2] << 8 | ap[3]);//			ap->th_opcode = ntohs((u_short)ap->th_opcode);//			ap->th_block = ntohs((u_short)ap->th_block);printf("th_opcode2 = %d , th_block2 = %d , block = %d\n",th_opcode2, th_block2,block);			if (th_opcode2 == ERR)				goto abort;						if (th_opcode2 == ACK) {				if (th_block2 == block) {					break;				}				/* Re-synchronize with the other side */				(void) synchnet(peer);				if (th_block2 == (block -1)) {					goto send_data;				}			}		}		block++;	} while (size == SEGSIZE);abort:	(void) fclose(file);}justquit(){	_exit(0);}/* * Receive a file. */recvfile(pf)	struct formats *pf;{	unsigned char *dp, *w_init();	unsigned char *ap;    /* ack buffer */	register int block = 0, n, size;	short	th_opcode,th_opcode2;	unsigned short	th_block,th_block2;//	signal(SIGALRM, (void *)timer);	dp = w_init();	ap = (unsigned char *)ackbuf;	do {		timeout = 0;//		th_opcode = htons((u_short)ACK);//		th_block = htons((u_short)block);		ap[0] = 0;		ap[1] = ACK;		ap[2] = (block >> 8) & 0xff;		ap[3] = block & 0xff;		block++;#ifndef EMBED		(void) setjmp(timeoutbuf);#endifsend_ack:		if (send(peer, ackbuf, 4, 0) != 4) {			//syslog(LOG_ERR, "tftpd: write: %m\n");			goto abort;		}//printf("-------- recvfile  1\n");		write_behind(file, pf->f_convert);		for ( ; ; ) {printf("-------- recvfile  2\n");//			alarm(rexmtval);#if 1{	int i;	struct sockaddr_in from;	socklen_t fromlen;		(void)ioctl(peer, FIONREAD, &i);	fromlen = sizeof(from);	printf("FIONREAD=%d fromlen=%d\n",i,fromlen);	n = recvfrom(peer,dp,PKTSIZE,0,(struct sockaddr*)&from,&fromlen);	printf("n=%d\n",n);}#else			n = recv(peer, dp, PKTSIZE, 0);#endif//			alarm(0);printf("-------- recvefile 2-1 n = %d\n",n);			if (n < 0) {            /* really? */				//syslog(LOG_ERR, "tftpd: read: %m\n");				goto abort;			}//printf("-------- recvfile  3\n");			th_opcode2 = (dp[0] << 8 | dp[1]);			th_block2 = (dp[2] << 8 | dp[3]);//			th_opcode2 = ntohs((u_short)th_opcode2);//			th_block2 = ntohs((u_short)th_block2);			if (th_opcode2 == ERR)				goto abort;			if (th_opcode2 == DATA) {				if (th_block2 == block) {					break;   /* normal */				}#if 0327 * 0				/* Re-synchronize with the other side */				(void) synchnet(peer);#endif				if (th_block2 == (block-1))					goto send_ack;          /* rexmit */			}		}		/*  size = write(file, dp->th_data, n - 4); */		size = writeit(file, &dp, n - 4, pf->f_convert);//printf("--------- recvfile  4size %d \n",size);		if (size != (n-4)) {                    /* ahem */			if (size < 0) nak(errno + 100);			else nak(ENOSPACE);			goto abort;		}//printf("-------- recvfile  5\n");	} while (size == SEGSIZE);	write_behind(file, pf->f_convert);//printf("-------- recvfile  6\n");//	(void) fclose(file);            /* close data file *///	th_opcode = htons((u_short)ACK);    /* send the "final" ack *///	th_block = htons((u_short)(block));	ap[0] = 0;	ap[1] = ACK;	ap[2] = (block >> 8) & 0xff;	ap[3] = block & 0xff;	(void) send(peer, ackbuf, 4, 0);#if 0//	signal(SIGALRM, (void *)justquit);      /* just quit on timeout *///	alarm(rexmtval);	n = recv(peer, buf, sizeof (buf), 0); /* normally times out and quits *///	alarm(0);	if (n >= 4 &&                   /* if read some data */	    th_opcode2 == DATA &&    /* and got a data block */	    block == th_block2) {	/* then my last ack was lost */		(void) send(peer, ackbuf, 4, 0);     /* resend final ack */	}#endifabort:	(void) fclose(file);            /* close data file */}struct errmsg {	int	e_code;//	char	*e_msg;	char	e_msg[40];} errmsgs[] = {	{ EUNDEF,	"Undefined error code" },	{ ENOTFOUND,	"File not found" },	{ EACCESS,	"Access violation" },	{ ENOSPACE,	"Disk full or allocation exceeded" },	{ EBADOP,	"Illegal TFTP operation" },	{ EBADID,	"Unknown transfer ID" },	{ EEXISTS,	"File already exists" },	{ ENOUSER,	"No such user" },	{ -1,		0 }};/* * Send a nak packet (error message). * Error code passed in is one of the * standard TFTP codes, or a UNIX errno * offset by 100. */nak(error)	int error;{	unsigned char *tp;	int length, i;	register struct errmsg *pe;	short	th_opcode,th_code;	char	*th_msg;/*	extern char *sys_errlist[];	*/	tp = (unsigned char *)buf;	tp[0] = 0;	tp[1] = ERR;	tp[2] = (error >> 8) & 0xff;	tp[3] = error & 0xff;	//th_opcode = htons((u_short)ERR);	//th_code = htons((u_short)error);#if 0326	for (pe = errmsgs, i = sizeof(errmsgs)/sizeof(errmsgs[0]);; pe++){		if (--i < 0){			pe = errmsgs;			break;		}		if (pe->e_code == error){			break;		}	}#else	for (pe = errmsgs; pe->e_code >= 0; pe++)		if (pe->e_code == error)			break;#endif#if 0	if (pe->e_code < 0) {#ifdef EMBED		strcpy(pe->e_msg,"ERR");//		pe->e_msg = "ERROR";#else		pe->e_msg = sys_errlist[error - 100];#endif		th_code = EUNDEF;   /* set 'undef' errorcode */	}#endif	strcpy(&tp[4], pe->e_msg);	length = strlen(pe->e_msg);#if 0	th_msg[length] = '\0';#endif	length += 5;	if (send(peer, buf, length, 0) != length)		//syslog(LOG_ERR, "nak: %m\n");		;}#ifdef NAOSI_ABS32void naosi(void *pp, int *type);static char* naosi_tab[] = {        (char*)naosi,        (char*)naosi_tab,};void naosi(void *ptr, int *type){        int t, dt, dd;        char *p, **pp;        dt = (char*)naosi - naosi_tab[0];        dd = (char*)naosi_tab - naosi_tab[1];        for(pp = (char**)ptr; (t = *type++) >= 0; ++pp){                if((p = *pp) != 0){                        if(t == 1){                                p += dt;                        }else if(t == 2){                                p += dd;                        }                        *pp = p;                }        }}int type_func[] = { 1, -1 };int type_data[] = { 2, -1 };#endif /* NAOSI_ABS32 */#ifdef NAOSI_ABS32naosi_tftpd(){    int i;    for( i=0; i<sizeof(formats)/sizeof(struct formats); i++ ){	naosi(&formats[i].f_validate, type_func);	naosi(&formats[i].f_send, type_func);	naosi(&formats[i].f_recv, type_func);    }}#endif /* NAOSI_ABS32 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产一区二区三区四区小说| 奇米在线7777在线精品| av在线这里只有精品| 在线中文字幕一区| 国产日产亚洲精品系列| 日韩经典一区二区| 欧美最新大片在线看 | 精彩视频一区二区| 色综合咪咪久久| 国产日韩精品久久久| 麻豆成人综合网| 欧美日韩卡一卡二| 亚洲激情av在线| 成人午夜av影视| 久久久久久久性| 精品在线免费观看| 91精品国产一区二区人妖| 一区二区三区在线视频免费| 成人高清在线视频| 欧美激情中文字幕| 国产福利一区二区三区视频在线| 7777女厕盗摄久久久| 一区二区三区四区五区视频在线观看| 国产成人综合网站| 国产亚洲欧美一区在线观看| 久久国产麻豆精品| 一区二区三区成人| 91麻豆国产福利在线观看| 欧美国产精品一区二区| 高清不卡一区二区| 亚洲国产高清aⅴ视频| 国产91高潮流白浆在线麻豆| 久久综合久久99| 国产麻豆精品视频| 欧美极品另类videosde| av亚洲精华国产精华| 中文字幕在线不卡一区二区三区| 国产·精品毛片| 中文字幕在线不卡一区| 91国在线观看| 日韩 欧美一区二区三区| 欧美一级生活片| 激情久久五月天| 国产精品欧美精品| 日本伦理一区二区| 偷偷要91色婷婷| 欧美变态tickling挠脚心| 国产乱对白刺激视频不卡| 国产婷婷色一区二区三区四区| 国产精品系列在线播放| 亚洲日本在线天堂| 欧美高清性hdvideosex| 久久精品国产秦先生| 国产人成亚洲第一网站在线播放 | 久久久噜噜噜久噜久久综合| 欧美老肥妇做.爰bbww| 久久精品免费观看| 国产精品久久看| 欧美性一二三区| 九色|91porny| 国产精品久久久久国产精品日日 | 日韩一级完整毛片| 风间由美中文字幕在线看视频国产欧美| 国产亚洲欧洲一区高清在线观看| 91在线视频播放| 美女网站视频久久| 中文字幕制服丝袜成人av | 久久精品噜噜噜成人88aⅴ| 国产视频一区二区在线观看| 日本道在线观看一区二区| 日韩精品亚洲专区| 国产精品美女久久久久久久久| 欧美日韩国产另类一区| 国产一区在线视频| 99久久er热在这里只有精品66| 午夜视频一区二区三区| 国产亚洲欧美激情| 在线播放中文一区| 99精品桃花视频在线观看| 久久成人羞羞网站| 亚洲图片欧美综合| 国产精品第13页| 久久亚洲一区二区三区明星换脸| 欧美午夜不卡视频| 波多野结衣中文字幕一区二区三区| 日日夜夜精品视频天天综合网| 日本一区二区高清| 日韩午夜激情电影| 欧美高清视频不卡网| 色综合色综合色综合色综合色综合| 韩国精品主播一区二区在线观看 | 欧美亚洲动漫精品| 99久久精品99国产精品 | 久久久久久久久蜜桃| 56国语精品自产拍在线观看| 色综合天天综合色综合av| 国产二区国产一区在线观看| 日本成人超碰在线观看| 香蕉成人啪国产精品视频综合网 | 青青草原综合久久大伊人精品优势| 亚洲欧洲精品一区二区三区 | 国产成人精品综合在线观看| 日韩av二区在线播放| 亚洲午夜一二三区视频| 亚洲精品v日韩精品| 国产女人aaa级久久久级 | 国产成人自拍高清视频在线免费播放| 日韩av成人高清| 日韩av在线播放中文字幕| 丝袜脚交一区二区| 午夜不卡av在线| 天天操天天干天天综合网| 亚洲一区二区五区| 亚洲综合视频在线观看| 亚洲精品菠萝久久久久久久| 亚洲精品国产品国语在线app| 国产精品福利av| 亚洲伦理在线精品| 亚洲影视在线观看| 亚洲国产精品久久久久婷婷884| 亚洲一区av在线| 亚洲国产精品久久人人爱| 午夜日韩在线电影| 日本最新不卡在线| 久久99精品网久久| 成人午夜视频网站| 91极品美女在线| 欧美日韩免费不卡视频一区二区三区| 欧美日韩精品一区二区天天拍小说| 欧美日韩一区二区三区视频| 欧美精品在线一区二区三区| 6080国产精品一区二区| 精品国产网站在线观看| 国产欧美日韩另类视频免费观看| 国产精品毛片无遮挡高清| 亚洲精品综合在线| 日韩综合在线视频| 国产在线播放一区三区四| 国产成人精品影院| 91成人在线观看喷潮| 91精品国产美女浴室洗澡无遮挡| 精品国产伦理网| 国产精品激情偷乱一区二区∴| 亚洲自拍都市欧美小说| 极品瑜伽女神91| 91在线一区二区| 在线成人av影院| 国产欧美视频在线观看| 亚洲成人av福利| 国产精品一二三四| 精品视频123区在线观看| 精品成a人在线观看| 亚洲免费在线视频一区 二区| 亚洲不卡一区二区三区| 国产成人精品免费网站| 欧美亚洲国产一区在线观看网站| 欧美精品一区男女天堂| 亚洲美女一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 成人avav在线| 欧美一级黄色大片| 亚洲欧洲精品一区二区三区不卡 | 成人激情午夜影院| 337p亚洲精品色噜噜| 国产精品网站在线| 美女看a上一区| 一本久久a久久精品亚洲| 精品国产乱码久久久久久影片| 亚洲桃色在线一区| 国产精品一二二区| 欧美一区二区福利在线| 一区二区三区欧美亚洲| 国产成人激情av| 欧美va亚洲va| 偷偷要91色婷婷| 欧美在线制服丝袜| 亚洲私人影院在线观看| 成人少妇影院yyyy| 精品久久久久香蕉网| 日本一不卡视频| 欧美日韩一区久久| 亚洲免费观看视频| 成人精品高清在线| 欧美激情一二三区| 国产一区二区三区电影在线观看| 欧美精品丝袜中出| 亚洲一区二区三区四区在线观看| 粉嫩一区二区三区性色av| 精品国一区二区三区| 奇米亚洲午夜久久精品| 欧美日韩一卡二卡| 一区二区免费视频| 色欧美日韩亚洲| 亚洲精品福利视频网站| 色哟哟欧美精品| 一区二区久久久久| 欧美视频中文字幕| 亚洲成人第一页| 91精品国产欧美一区二区成人| 午夜精品aaa|