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

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

?? mbuf.c

?? 一個Windows下的Linux專用虛擬機
?? C
字號:
/* * Copyright (c) 1995 Danny Gasparovski * * Please read the file COPYRIGHT for the * terms and conditions of the copyright. *//* * mbuf's in SLiRP are much simpler than the real mbufs in * FreeBSD.  They are fixed size, determined by the MTU, * so that one whole packet can fit.  Mbuf's cannot be * chained together.  If there's more data than the mbuf * could hold, an external malloced buffer is pointed to * by m_ext (and the data pointers) and M_EXT is set in * the flags */#include "slirp.h"struct	mbuf *mbutl;char	*mclrefcnt;int mbuf_alloced = 0;struct mbuf m_freelist, m_usedlist;int mbuf_thresh = 30;int mbuf_max = 0;int msize;voidm_init(){	m_freelist.m_next = m_freelist.m_prev = &m_freelist;	m_usedlist.m_next = m_usedlist.m_prev = &m_usedlist;	msize_init();}voidmsize_init(){	/*	 * Find a nice value for msize	 * XXX if_maxlinkhdr already in mtu	 */	msize = (if_mtu>if_mru?if_mtu:if_mru) + 			if_maxlinkhdr + sizeof(struct m_hdr ) + 6;}/* * Get an mbuf from the free list, if there are none * malloc one *  * Because fragmentation can occur if we alloc new mbufs and * free old mbufs, we mark all mbufs above mbuf_thresh as M_DOFREE, * which tells m_free to actually free() it */struct mbuf *m_get(){	register struct mbuf *m;	int flags = 0;		DEBUG_CALL("m_get");		if (m_freelist.m_next == &m_freelist) {		m = (struct mbuf *)malloc(msize);		if (m == NULL) goto end_error;		mbuf_alloced++;		if (mbuf_alloced > mbuf_thresh)			flags = M_DOFREE;		if (mbuf_alloced > mbuf_max)			mbuf_max = mbuf_alloced;	} else {		m = m_freelist.m_next;		remque(m);	}		/* Insert it in the used list */	insque(m,&m_usedlist);	m->m_flags = (flags | M_USEDLIST);		/* Initialise it */	m->m_size = msize - sizeof(struct m_hdr);	m->m_data = m->m_dat;	m->m_len = 0;	m->m_nextpkt = 0;	m->m_prevpkt = 0;end_error:	DEBUG_ARG("m = %lx", (long )m);	return m;}voidm_free(m)	struct mbuf *m;{	  DEBUG_CALL("m_free");  DEBUG_ARG("m = %lx", (long )m);	  if(m) {	/* Remove from m_usedlist */	if (m->m_flags & M_USEDLIST)	   remque(m);		/* If it's M_EXT, free() it */	if (m->m_flags & M_EXT)	   free(m->m_ext);	/*	 * Either free() it or put it on the free list	 */	if (m->m_flags & M_DOFREE) {		free(m);		mbuf_alloced--;	} else if ((m->m_flags & M_FREELIST) == 0) {		insque(m,&m_freelist);		m->m_flags = M_FREELIST; /* Clobber other flags */	}  } /* if(m) */}/* * Copy data from one mbuf to the end of * the other.. if result is too big for one mbuf, malloc() * an M_EXT data segment */voidm_cat(m, n)	register struct mbuf *m, *n;{	/*	 * If there's no room, realloc	 */	if (M_FREEROOM(m) < n->m_len)		m_inc(m,m->m_size+MINCSIZE);		memcpy(m->m_data+m->m_len, n->m_data, n->m_len);	m->m_len += n->m_len;	m_free(n);}/* make m size bytes large */voidm_inc(m, size)        struct mbuf *m;        int size;{	char *dat;	int datasize;	/* some compiles throw up on gotos.  This one we can fake. */        if(m->m_size>size) return;        if (m->m_flags & M_EXT) {	  datasize = m->m_data - m->m_ext;	  dat = (char *)realloc(m->m_ext,size);/*		if (dat == NULL) *			return (struct mbuf *)NULL; */		        } else {	  datasize = m->m_data - m->m_dat;	  dat = (char *)malloc(size);/*		if (dat == NULL) *			return (struct mbuf *)NULL; */	  memcpy(dat, m->m_dat, m->m_size);	  	  m->m_flags |= M_EXT;        } 	m->m_ext = dat;	m->m_data = m->m_ext + datasize;        m->m_size = size;}voidm_adj(m, len)	struct mbuf *m;	int len;{	if (m == NULL)		return;	if (len >= 0) {		/* Trim from head */		m->m_data += len;		m->m_len -= len;	} else {		/* Trim from tail */		len = -len;		m->m_len -= len;	}}/* * Copy len bytes from m, starting off bytes into n */intm_copy(n, m, off, len)	struct mbuf *n, *m;	int off, len;{	if (len > M_FREEROOM(n))		return -1;	memcpy((n->m_data + n->m_len), (m->m_data + off), len);	n->m_len += len;	return 0;}/* * Given a pointer into an mbuf, return the mbuf * XXX This is a kludge, I should eliminate the need for it * Fortunately, it's not used often */struct mbuf *dtom(dat)	void *dat;{	struct mbuf *m;		DEBUG_CALL("dtom");	DEBUG_ARG("dat = %lx", (long )dat);	/* bug corrected for M_EXT buffers */	for (m = m_usedlist.m_next; m != &m_usedlist; m = m->m_next) {	  if (m->m_flags & M_EXT) {	    if( (char *)dat>=m->m_ext && (char *)dat<(m->m_ext + m->m_size) )	      return m;	  } else {	    if( (char *)dat >= m->m_dat && (char *)dat<(m->m_dat + m->m_size) )	      return m;	  }	}		DEBUG_ERROR((dfd, "dtom failed"));		return (struct mbuf *)0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91传媒视频在线播放| 777午夜精品视频在线播放| 亚洲天堂福利av| 欧美一区二区三区四区在线观看| 在线亚洲免费视频| 色哟哟日韩精品| 91福利精品视频| 国产日韩av一区二区| 久久青草国产手机看片福利盒子| 日韩欧美一区在线| 欧美一区二区三级| 亚洲男人天堂av网| 一区二区三区国产精华| 亚洲视频免费观看| 国产精品亚洲а∨天堂免在线| 久久国内精品自在自线400部| 精品在线一区二区| 国产v日产∨综合v精品视频| 国产一区二区成人久久免费影院| 国产成人激情av| 色婷婷综合五月| 国产精品入口麻豆原神| 国产精品久久久久久久久免费相片 | 亚洲在线观看免费视频| 亚洲一区二区影院| 色婷婷激情综合| 欧美经典一区二区| 国产精品免费免费| 国产很黄免费观看久久| 久久久久久夜精品精品免费| 久久se这里有精品| 精品三级在线看| 国产精品久久久久久久久搜平片 | 亚洲综合免费观看高清完整版| 盗摄精品av一区二区三区| 在线中文字幕一区| 一区二区国产视频| 欧美色网一区二区| 国产视频一区二区在线| 一区二区理论电影在线观看| 91成人免费网站| 亚洲丰满少妇videoshd| 国产麻豆视频一区二区| 国产丝袜欧美中文另类| 99久久久精品| 日韩免费视频一区| 亚洲一区二区在线免费看| 欧美亚洲综合久久| 免费在线视频一区| zzijzzij亚洲日本少妇熟睡| 欧美一区二区免费视频| 精品无人区卡一卡二卡三乱码免费卡 | 久久毛片高清国产| 成人福利视频在线看| 精品国产伦一区二区三区观看体验| 亚洲精品伦理在线| 国产91清纯白嫩初高中在线观看 | 欧美一激情一区二区三区| 男人操女人的视频在线观看欧美| 久久综合av免费| 日韩—二三区免费观看av| 成人动漫一区二区在线| 亚洲国产一区视频| 久久久久久99久久久精品网站| 成人av影院在线| 亚洲成av人片在线观看无码| av中文字幕一区| 天堂午夜影视日韩欧美一区二区| 在线亚洲+欧美+日本专区| 日日夜夜精品视频天天综合网| 久久久一区二区三区捆绑**| 色综合久久88色综合天天6| 婷婷中文字幕综合| 欧美日韩国产高清一区二区| 一区二区三区在线视频观看 | 欧美在线短视频| 国产麻豆欧美日韩一区| 一区二区三区中文字幕| 欧美精品一区二| 欧美在线观看视频在线| 国产电影一区二区三区| 亚洲午夜激情网页| 国产精品视频九色porn| 日韩欧美亚洲国产另类 | 成人国产精品免费网站| 日本vs亚洲vs韩国一区三区二区| 欧美国产日产图区| 欧美另类变人与禽xxxxx| 日本 国产 欧美色综合| 亚洲精品美国一| 国产精品乱子久久久久| 日韩美女主播在线视频一区二区三区| 91色|porny| 午夜婷婷国产麻豆精品| 亚洲国产精品激情在线观看| 日韩欧美亚洲国产精品字幕久久久| 在线观看日韩精品| 成人av在线资源网站| 久久电影网站中文字幕| 日韩国产精品久久久久久亚洲| 亚洲精品v日韩精品| 国产精品乱码人人做人人爱| 久久久高清一区二区三区| 日韩三级精品电影久久久| 欧美日韩国产首页| 在线亚洲人成电影网站色www| 国产成人高清在线| 国产91在线|亚洲| 国产主播一区二区| 亚洲另类色综合网站| 国产精品国产精品国产专区不蜜 | 91精品国产入口在线| 日本国产一区二区| 在线观看日韩精品| 欧美亚洲一区二区在线观看| 91黄色免费看| 欧美最猛性xxxxx直播| av一本久道久久综合久久鬼色| 粉嫩嫩av羞羞动漫久久久 | 中文字幕欧美三区| 国产精品毛片久久久久久久| 国产精品第一页第二页第三页| 国产精品久久久久久久岛一牛影视 | 欧美日韩中文字幕一区| 国内精品久久久久影院色| 激情综合五月婷婷| 国模一区二区三区白浆| 韩国成人精品a∨在线观看| 九色|91porny| 国产.精品.日韩.另类.中文.在线.播放| 国模少妇一区二区三区| 岛国精品在线观看| 日本乱人伦一区| 欧美二区在线观看| 久久免费的精品国产v∧| 欧美激情一区二区三区在线| 综合在线观看色| 午夜精品影院在线观看| 美腿丝袜亚洲综合| 亚洲国产cao| 久久精品国产**网站演员| 国产精品综合av一区二区国产馆| 波多野结衣精品在线| 色婷婷久久一区二区三区麻豆| 欧美欧美欧美欧美| 久久麻豆一区二区| 一区二区三区色| 精品一区二区三区视频在线观看| 成人午夜在线播放| 欧美日韩在线播放一区| 久久午夜老司机| 亚洲精品欧美综合四区| 久久国产精品第一页| 91伊人久久大香线蕉| 欧美一区二区三区四区在线观看| 国产欧美日韩三级| 午夜av电影一区| k8久久久一区二区三区| 欧美日本在线播放| 中文在线免费一区三区高中清不卡| 亚洲一区av在线| 岛国av在线一区| 欧美一级在线观看| 亚洲人成精品久久久久| 国产一区二区日韩精品| 欧美伊人久久久久久午夜久久久久| 久久久久久久久久电影| 五月天欧美精品| 波多野结衣欧美| 久久久久97国产精华液好用吗 | 国产精品嫩草久久久久| 日韩专区欧美专区| 91免费版pro下载短视频| 精品国产伦一区二区三区观看方式| 亚洲一区欧美一区| 99这里只有久久精品视频| 日韩欧美亚洲一区二区| 亚洲高清一区二区三区| aa级大片欧美| 国产女同性恋一区二区| 极品少妇xxxx精品少妇| 91精品国产色综合久久ai换脸 | 911精品国产一区二区在线| 国产精品国产馆在线真实露脸| 精品中文av资源站在线观看| 欧美一区二区三区性视频| 亚洲高清久久久| 欧美伊人精品成人久久综合97| 国产精品福利一区| 成a人片亚洲日本久久| 国产精品网站在线| 国产iv一区二区三区| 国产视频一区在线观看| 国模大尺度一区二区三区| 欧美mv日韩mv国产网站app| 日本成人中文字幕在线视频| 欧美裸体一区二区三区| 亚洲国产日日夜夜| 欧美色偷偷大香| 亚洲va欧美va天堂v国产综合|