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

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

?? vj.c

?? “華為模塊(GTM900)+ ARM(LPC2104) + LWIP1.1”以PPP 方式實現GPRS 無線數據傳輸
?? C
?? 第 1 頁 / 共 2 頁
字號:
		break;		/* (fall through) */		case SPECIAL_I:	case SPECIAL_D:		/*		 * actual changes match one of our special case encodings --		 * send packet uncompressed.		 */		goto uncompressed;		case NEW_S|NEW_A:		if (deltaS == deltaA && deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {			/* special case for echoed terminal traffic */			changes = SPECIAL_I;			cp = new_seq;		}		break;		case NEW_S:		if (deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {			/* special case for data xfer */			changes = SPECIAL_D;			cp = new_seq;		}		break;	}		deltaS = (u_short)(ntohs(ip->ip_id) - ntohs(cs->cs_ip.ip_id));	if (deltaS != 1) {		ENCODEZ(deltaS);		changes |= NEW_I;	}	if (th->th_flags & TCP_PSH)	changes |= TCP_PUSH_BIT;	/*	 * Grab the cksum before we overwrite it below.  Then update our	 * state with this packet's header.	 */	deltaA = ntohs(th->th_sum);	BCOPY(ip, &cs->cs_ip, hlen);		/*	 * We want to use the original packet as our compressed packet.	 * (cp - new_seq) is the number of bytes we need for compressed	 * sequence numbers.  In addition we need one byte for the change	 * mask, one for the connection id and two for the tcp checksum.	 * So, (cp - new_seq) + 4 bytes of header are needed.  hlen is how	 * many bytes of the original packet to toss so subtract the two to	 * get the new packet size.	 */	deltaS = (u_short)(cp - new_seq);	if (!comp->compressSlot || comp->last_xmit != cs->cs_id) {		comp->last_xmit = cs->cs_id;		hlen -= deltaS + 4;		pbuf_header(pb, -hlen);		cp = (u_char *)pb->payload;		*cp++ = changes | NEW_C;		*cp++ = cs->cs_id;	} else {		hlen -= deltaS + 3;		pbuf_header(pb, -hlen);		cp = (u_char *)pb->payload;		*cp++ = changes;	}	*cp++ = deltaA >> 8;	*cp++ = deltaA;	BCOPY(new_seq, cp, deltaS);	INCR(vjs_compressed);	return (TYPE_COMPRESSED_TCP);	/*	 * Update connection state cs & send uncompressed packet (that is,	 * a regular ip/tcp packet but with the 'conversation id' we hope	 * to use on future compressed packets in the protocol field).	 */uncompressed:	BCOPY(ip, &cs->cs_ip, hlen);	ip->ip_p = cs->cs_id;	comp->last_xmit = cs->cs_id;	return (TYPE_UNCOMPRESSED_TCP);}/* * Called when we may have missed a packet. */void vj_uncompress_err(struct vjcompress *comp){    comp->flags |= VJF_TOSS;	INCR(vjs_errorin);}/* * "Uncompress" a packet of type TYPE_UNCOMPRESSED_TCP. * Return 0 on success, -1 on failure. */int vj_uncompress_uncomp(	struct pbuf *nb,	struct vjcompress *comp){	register u_int hlen;	register struct cstate *cs;	register struct ip *ip;		ip = (struct ip *)nb->payload;	hlen = getip_hl(*ip) << 2;	if (ip->ip_p >= MAX_SLOTS			|| hlen + sizeof(struct tcphdr) > nb->len			|| (hlen += getth_off(*((struct tcphdr *)&((char *)ip)[hlen])) << 2)			    > nb->len			|| hlen > MAX_HDR) {		PPPDEBUG((LOG_INFO, "vj_uncompress_uncomp: bad cid=%d, hlen=%d buflen=%d\n", 					ip->ip_p, hlen, nb->len));		comp->flags |= VJF_TOSS;		INCR(vjs_errorin);		return -1;	}	cs = &comp->rstate[comp->last_recv = ip->ip_p];	comp->flags &=~ VJF_TOSS;	ip->ip_p = IPPROTO_TCP;	BCOPY(ip, &cs->cs_ip, hlen);	cs->cs_hlen = hlen;	INCR(vjs_uncompressedin);	return 0;}/* * Uncompress a packet of type TYPE_COMPRESSED_TCP. * The packet is composed of a buffer chain and the first buffer * must contain an accurate chain length. * The first buffer must include the entire compressed TCP/IP header.  * This procedure replaces the compressed header with the uncompressed * header and returns the length of the VJ header. */int vj_uncompress_tcp(	struct pbuf **nb,	struct vjcompress *comp){	u_char *cp;	struct tcphdr *th;	struct cstate *cs;	u_short *bp;	struct pbuf *n0 = *nb;	u32_t tmp;	u_int vjlen, hlen, changes;		INCR(vjs_compressedin);	cp = (u_char *)n0->payload;	changes = *cp++;	if (changes & NEW_C) {		/* 		 * Make sure the state index is in range, then grab the state.		 * If we have a good state index, clear the 'discard' flag. 		 */		if (*cp >= MAX_SLOTS) {			PPPDEBUG((LOG_INFO, "vj_uncompress_tcp: bad cid=%d\n", *cp));			goto bad;		}				comp->flags &=~ VJF_TOSS;		comp->last_recv = *cp++;	} else {		/* 		 * this packet has an implicit state index.  If we've		 * had a line error since the last time we got an		 * explicit state index, we have to toss the packet. 		 */		if (comp->flags & VJF_TOSS) {			PPPDEBUG((LOG_INFO, "vj_uncompress_tcp: tossing\n"));			INCR(vjs_tossed);			return (-1);		}	}	cs = &comp->rstate[comp->last_recv];	hlen = getip_hl(cs->cs_ip) << 2;	th = (struct tcphdr *)&((u_char *)&cs->cs_ip)[hlen];	th->th_sum = htons((*cp << 8) | cp[1]);	cp += 2;	if (changes & TCP_PUSH_BIT)		th->th_flags |= TCP_PSH;	else		th->th_flags &=~ TCP_PSH;		switch (changes & SPECIALS_MASK) {	case SPECIAL_I:		{			register u32_t i = ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;			/* some compilers can't nest inline assembler.. */			tmp = ntohl(th->th_ack) + i;			th->th_ack = htonl(tmp);			tmp = ntohl(th->th_seq) + i;			th->th_seq = htonl(tmp);		}		break;		case SPECIAL_D:		/* some compilers can't nest inline assembler.. */		tmp = ntohl(th->th_seq) + ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;		th->th_seq = htonl(tmp);		break;		default:		if (changes & NEW_U) {			th->th_flags |= TCP_URG;			DECODEU(th->th_urp);		} else			th->th_flags &=~ TCP_URG;		if (changes & NEW_W)			DECODES(th->th_win);		if (changes & NEW_A)			DECODEL(th->th_ack);		if (changes & NEW_S)			DECODEL(th->th_seq);		break;	}	if (changes & NEW_I) {		DECODES(cs->cs_ip.ip_id);	} else {		cs->cs_ip.ip_id = ntohs(cs->cs_ip.ip_id) + 1;		cs->cs_ip.ip_id = htons(cs->cs_ip.ip_id);	}		/*	 * At this point, cp points to the first byte of data in the	 * packet.  Fill in the IP total length and update the IP	 * header checksum.	 */	vjlen = (u_short)(cp - (u_char*)n0->payload);	if (n0->len < vjlen) {		/* 		 * We must have dropped some characters (crc should detect		 * this but the old slip framing won't) 		 */		PPPDEBUG((LOG_INFO, "vj_uncompress_tcp: head buffer %d too short %d\n", 				  n0->len, vjlen));		goto bad;	}	#if BYTE_ORDER == LITTLE_ENDIAN	tmp = n0->tot_len - vjlen + cs->cs_hlen;	cs->cs_ip.ip_len = htons(tmp);#else	cs->cs_ip.ip_len = htons(n0->tot_len - vjlen + cs->cs_hlen);#endif		/* recompute the ip header checksum */	bp = (u_short *) &cs->cs_ip;	cs->cs_ip.ip_sum = 0;	for (tmp = 0; hlen > 0; hlen -= 2)		tmp += *bp++;	tmp = (tmp & 0xffff) + (tmp >> 16);	tmp = (tmp & 0xffff) + (tmp >> 16);	cs->cs_ip.ip_sum = (u_short)(~tmp);		/* Remove the compressed header and prepend the uncompressed header. */	pbuf_header(n0, -vjlen);	if(MEM_ALIGN(n0->payload) != n0->payload) {		struct pbuf *np, *q;		u8_t *bufptr;		np = pbuf_alloc(PBUF_RAW, n0->len + cs->cs_hlen, PBUF_POOL);		if(!np) {			PPPDEBUG((LOG_WARNING, "vj_uncompress_tcp: realign failed\n"));			*nb = NULL;			goto bad;		}		pbuf_header(np, -cs->cs_hlen);		bufptr = n0->payload;		for(q = np; q != NULL; q = q->next) {			memcpy(q->payload, bufptr, q->len);			bufptr += q->len;		}		if(n0->next) {			pbuf_chain(np, n0->next);			pbuf_dechain(n0);		}		pbuf_free(n0);		n0 = np;	}	if(pbuf_header(n0, cs->cs_hlen)) {		struct pbuf *np;		LWIP_ASSERT("vj_uncompress_tcp: cs->cs_hlen <= PBUF_POOL_BUFSIZE", cs->cs_hlen <= PBUF_POOL_BUFSIZE);		np = pbuf_alloc(PBUF_RAW, cs->cs_hlen, PBUF_POOL);		if(!np) {			PPPDEBUG((LOG_WARNING, "vj_uncompress_tcp: prepend failed\n"));			*nb = NULL;			goto bad;		}		pbuf_cat(np, n0);		n0 = np;	}	LWIP_ASSERT("n0->len >= cs->cs_hlen", n0->len >= cs->cs_hlen);	memcpy(n0->payload, &cs->cs_ip, cs->cs_hlen);	*nb = n0;	return vjlen;	bad:	comp->flags |= VJF_TOSS;	INCR(vjs_errorin);	return (-1);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品新av中文字幕| 久久青草国产手机看片福利盒子 | 久久精品国产免费看久久精品| 国产精品久久久久久妇女6080| 久久精品亚洲一区二区三区浴池| 精品久久久久久久久久久院品网| 精品美女一区二区| 久久精品人人做| 国产欧美日韩另类视频免费观看 | 国产一区视频导航| 国产一区二区三区四区在线观看| 久久超碰97中文字幕| 精彩视频一区二区| 成人一区二区三区视频| av电影在线不卡| 在线观看成人免费视频| 欧美高清视频不卡网| 日韩女优av电影| 国产精品久久毛片av大全日韩| 亚洲视频一二三| 午夜精品一区二区三区三上悠亚 | 高清不卡在线观看av| 91视视频在线观看入口直接观看www| www.久久久久久久久| 日本高清不卡视频| 日韩精品影音先锋| 国产精品久久久久影院亚瑟| 亚洲一区在线免费观看| 免费xxxx性欧美18vr| 狠狠色2019综合网| 色综合视频一区二区三区高清| 欧美日韩免费高清一区色橹橹 | 日本一区二区三级电影在线观看 | 国产精品麻豆视频| 亚洲免费视频成人| 免费成人美女在线观看| 99麻豆久久久国产精品免费优播| 欧美剧在线免费观看网站| 久久在线免费观看| 亚洲成a人v欧美综合天堂下载| 激情五月婷婷综合| 欧美日韩在线三级| 久久久久久久久97黄色工厂| 亚洲图片一区二区| 不卡视频免费播放| 久久综合久久综合久久综合| 亚洲小说欧美激情另类| 成人黄色在线视频| 精品久久人人做人人爱| 午夜精品视频一区| 91浏览器在线视频| 久久久久久久久久久黄色| 午夜精品在线看| 欧美在线啊v一区| 国产日韩欧美精品一区| 久久精品久久久精品美女| 欧美性受xxxx黑人xyx性爽| 国产精品九色蝌蚪自拍| 国产一区二区美女诱惑| 日韩一区二区精品| 亚洲国产sm捆绑调教视频 | 在线亚洲高清视频| 国产精品成人网| 高清成人免费视频| 国产肉丝袜一区二区| 国产乱人伦偷精品视频免下载| 欧美日韩中文另类| 一区二区三区精品在线| 91欧美一区二区| 国产精品国产三级国产| 成人av网站在线观看免费| 久久久久久久久蜜桃| 另类小说综合欧美亚洲| 精品电影一区二区三区| 久久se精品一区二区| 精品国产乱码久久久久久老虎 | 欧美艳星brazzers| 九九精品视频在线看| 久久精品欧美一区二区三区不卡| 日本女优在线视频一区二区| 91精品国产全国免费观看| 国产福利视频一区二区三区| 日韩在线观看一区二区| 日韩黄色免费电影| gogo大胆日本视频一区| 青青草精品视频| 91麻豆精品91久久久久久清纯| 亚洲v日本v欧美v久久精品| 欧美日本一区二区| 奇米影视一区二区三区小说| 欧美α欧美αv大片| 国产制服丝袜一区| 最好看的中文字幕久久| 色成人在线视频| 日本欧美在线看| 国产日韩精品一区二区浪潮av| av动漫一区二区| 午夜视频一区二区| 久久午夜老司机| 91麻豆国产福利精品| 婷婷开心久久网| 久久亚洲二区三区| 在线精品视频小说1| 毛片一区二区三区| 国产精品久久福利| 欧美精品乱码久久久久久 | 国产精品黄色在线观看| 91久久精品一区二区二区| 看电影不卡的网站| 中文字幕一区日韩精品欧美| 欧美日韩中文一区| 岛国av在线一区| 亚洲成在线观看| 国产精品污www在线观看| 欧美剧情片在线观看| 成人午夜电影久久影院| 日本在线观看不卡视频| 国产精品久久久久三级| 91精品国产综合久久精品图片 | 午夜欧美一区二区三区在线播放| 精品久久五月天| 欧美在线啊v一区| 国产91精品露脸国语对白| 亚洲成a人v欧美综合天堂| 国产精品成人免费在线| 欧美大肚乱孕交hd孕妇| 欧美最猛黑人xxxxx猛交| 国产激情视频一区二区在线观看| 午夜伦理一区二区| 亚洲欧美偷拍三级| 国产精品欧美一区二区三区| 欧美一区二视频| 色综合久久综合网欧美综合网| 国产精品白丝jk黑袜喷水| 日本欧美久久久久免费播放网| 一区二区三区四区视频精品免费 | 欧美一级高清片在线观看| 91色乱码一区二区三区| 高清shemale亚洲人妖| 久久成人免费电影| 日本大胆欧美人术艺术动态| 亚洲在线视频免费观看| 成人丝袜高跟foot| 美女一区二区三区在线观看| 亚洲少妇最新在线视频| 亚洲国产精品99久久久久久久久 | 欧美变态tickling挠脚心| 欧美理论电影在线| 国产午夜一区二区三区| 亚洲欧美韩国综合色| 免费人成网站在线观看欧美高清| 国产盗摄一区二区| 欧美日韩一区高清| 亚洲国产精品99久久久久久久久| 亚洲一区二区综合| 国产成人日日夜夜| 欧美日韩激情一区二区| 国产欧美日产一区| 日本网站在线观看一区二区三区| 成人精品一区二区三区四区| 56国语精品自产拍在线观看| 亚洲国产电影在线观看| 日韩国产精品久久久| 成人激情免费电影网址| 欧美一区二区三区思思人| 国产精品久久久久国产精品日日| 日韩1区2区日韩1区2区| 一本大道久久精品懂色aⅴ| 精品日韩一区二区三区免费视频| 尤物在线观看一区| 成人高清视频在线观看| 精品久久久网站| 日本特黄久久久高潮| 在线观看亚洲一区| 中文字幕视频一区| 国产一区二区三区在线看麻豆| 欧美日韩夫妻久久| 亚洲品质自拍视频网站| 国产成人午夜高潮毛片| 欧美大尺度电影在线| 日韩精品久久久久久| 欧美日韩视频一区二区| 国产精品久久久一区麻豆最新章节| 久久激情五月婷婷| 6080午夜不卡| 亚洲电影第三页| 日本韩国精品在线| 亚洲人成在线播放网站岛国| 国产精品系列在线播放| 26uuu亚洲| 极品少妇xxxx偷拍精品少妇| 91精品国产一区二区三区香蕉 | 色婷婷综合久久久久中文| 欧美激情一区二区三区在线| 美女视频第一区二区三区免费观看网站| 91福利国产成人精品照片| 亚洲乱码国产乱码精品精98午夜 | 国产精品麻豆一区二区| 国产91精品入口| 国产精品国产精品国产专区不片|