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

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

?? q921.c

?? Q921的LINUX下的驅動源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		/* Handle their ACK */		pri->sentrej = 0;		ev = q921_ack_rx(pri, i->n_r);		if (ev)			return ev;		if (i->p_f) {			/* If the Poll/Final bit is set, immediate send the RR */			q921_rr(pri, 1, 0);		} else if (pri->busy) {			q921_rr(pri, 0, 0);		}		/* Receive Q.931 data */		res = q931_receive(pri, (q931_h *)i->data, len - 4);		/* Send an RR if one wasn't sent already */		if (pri->v_na != pri->v_r) 			q921_rr(pri, 0, 0);		if (res == -1) {			return NULL;		}		if (res & Q931_RES_HAVEEVENT)			return &pri->ev;	} else {		/* If we haven't already sent a reject, send it now, otherwise		   we are obliged to RR */		if (!pri->sentrej)			q921_reject(pri, i->p_f);		else if (i->p_f)			q921_rr(pri, 1, 0);	}	return NULL;}void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx){	int x;        char *type;	char direction_tag;		direction_tag = txrx ? '>' : '<';	if (showraw) {		char *buf = malloc(len * 3 + 1);		int buflen = 0;		if (buf) {			for (x=0;x<len;x++) 				buflen += sprintf(buf + buflen, "%02x ", h->raw[x]);			pri_message(pri, "\n%c [ %s]\n", direction_tag, buf);			free(buf);		}	}	switch (h->h.data[0] & Q921_FRAMETYPE_MASK) {	case 0:	case 2:		pri_message(pri, "\n%c Informational frame:\n", direction_tag);		break;	case 1:		pri_message(pri, "\n%c Supervisory frame:\n", direction_tag);		break;	case 3:		pri_message(pri, "\n%c Unnumbered frame:\n", direction_tag);		break;	}		pri_message(pri, "%c SAPI: %02d  C/R: %d EA: %d\n""%c  TEI: %03d        EA: %d\n",     	direction_tag,	h->h.sapi, 	h->h.c_r,	h->h.ea1,    	direction_tag,	h->h.tei,	h->h.ea2);	switch (h->h.data[0] & Q921_FRAMETYPE_MASK) {	case 0:	case 2:		/* Informational frame */		pri_message(pri, "%c N(S): %03d   0: %d\n""%c N(R): %03d   P: %d\n""%c %d bytes of data\n",    	direction_tag,	h->i.n_s,	h->i.ft,    	direction_tag,	h->i.n_r,	h->i.p_f,     	direction_tag,	len - 4);		break;	case 1:		/* Supervisory frame */		type = "???";		switch (h->s.ss) {		case 0:			type = "RR (receive ready)";			break;		case 1:			type = "RNR (receive not ready)";			break;		case 2:			type = "REJ (reject)";			break;		}		pri_message(pri, "%c Zero: %d     S: %d 01: %d  [ %s ]\n""%c N(R): %03d P/F: %d\n""%c %d bytes of data\n",    	direction_tag,	h->s.x0,	h->s.ss,	h->s.ft,	type,	direction_tag,	h->s.n_r,	h->s.p_f, 	direction_tag,	len - 4);		break;	case 3:				/* Unnumbered frame */		type = "???";		if (h->u.ft == 3) {			switch (h->u.m3) {			case 0:				if (h->u.m2 == 3)					type = "DM (disconnect mode)";				else if (h->u.m2 == 0)					type = "UI (unnumbered information)";				break;			case 2:				if (h->u.m2 == 0)					type = "DISC (disconnect)";				break;			case 3:			       	if (h->u.m2 == 3)					type = "SABME (set asynchronous balanced mode extended)";				else if (h->u.m2 == 0)					type = "UA (unnumbered acknowledgement)";				break;			case 4:				if (h->u.m2 == 1)					type = "FRMR (frame reject)";				break;			case 5:				if (h->u.m2 == 3)					type = "XID (exchange identification note)";				break;			}		}		pri_message(pri, "%c   M3: %d   P/F: %d M2: %d 11: %d  [ %s ]\n""%c %d bytes of data\n",	direction_tag,	h->u.m3,	h->u.p_f,	h->u.m2,	h->u.ft,	type,	direction_tag,	len - 3);		break;	};}static pri_event *q921_dchannel_up(struct pri *pri){	/* Reset counters, etc */	q921_reset(pri);		/* Stop any SABME retransmissions */	pri_schedule_del(pri, pri->sabme_timer);	pri->sabme_timer = 0;		/* Reset any rejects */	pri->sentrej = 0;		/* Go into connection established state */	if (pri->debug & PRI_DEBUG_Q921_STATE && pri->q921_state != Q921_LINK_CONNECTION_ESTABLISHED)		pri_message(pri, DBGHEAD "q921_state now is Q921_LINK_CONNECTION_ESTABLISHED\n", DBGINFO);	pri->q921_state = Q921_LINK_CONNECTION_ESTABLISHED;	/* Start the T203 timer */	pri->t203_timer = pri_schedule_event(pri, pri->timers[PRI_TIMER_T203], t203_expire, pri);		/* Notify Layer 3 */	q931_dl_indication(pri, PRI_EVENT_DCHAN_UP);	/* Report event that D-Channel is now up */	pri->ev.gen.e = PRI_EVENT_DCHAN_UP;	return &pri->ev;}static pri_event *q921_dchannel_down(struct pri *pri){	/* Reset counters, reset sabme timer etc */	q921_reset(pri);		/* Notify Layer 3 */	q931_dl_indication(pri, PRI_EVENT_DCHAN_DOWN);	/* Report event that D-Channel is now up */	pri->ev.gen.e = PRI_EVENT_DCHAN_DOWN;	return &pri->ev;}void q921_reset(struct pri *pri){	/* Having gotten a SABME we MUST reset our entire state */	pri->v_s = 0;	pri->v_a = 0;	pri->v_r = 0;	pri->v_na = 0;	pri->window = pri->timers[PRI_TIMER_K];	pri->windowlen = 0;	pri_schedule_del(pri, pri->sabme_timer);	pri_schedule_del(pri, pri->t203_timer);	pri_schedule_del(pri, pri->t200_timer);	pri->sabme_timer = 0;	pri->t203_timer = 0;	pri->t200_timer = 0;	pri->busy = 0;	pri->solicitfbit = 0;	if (pri->debug & PRI_DEBUG_Q921_STATE && pri->q921_state != Q921_LINK_CONNECTION_RELEASED)		pri_message(pri, DBGHEAD "q921_state now is Q921_LINK_CONNECTION_RELEASED\n", DBGINFO);	pri->q921_state = Q921_LINK_CONNECTION_RELEASED;	pri->retrans = 0;	pri->sentrej = 0;		/* Discard anything waiting to go out */	q921_discard_retransmissions(pri);}static pri_event *__q921_receive_qualified(struct pri *pri, q921_h *h, int len){	q921_frame *f;	pri_event *ev;	int sendnow;	switch(h->h.data[0] & Q921_FRAMETYPE_MASK) {	case 0:	case 2:		if (pri->q921_state != Q921_LINK_CONNECTION_ESTABLISHED) {			pri_error(pri, "!! Got I-frame while link state %d\n", pri->q921_state);			return NULL;		}		/* Informational frame */		if (len < 4) {			pri_error(pri, "!! Received short I-frame (expected 4, got %d)\n", len);			break;		}		return q921_handle_iframe(pri, &h->i, len);			break;	case 1:		if (pri->q921_state != Q921_LINK_CONNECTION_ESTABLISHED) {			pri_error(pri, "!! Got S-frame while link down\n");			return NULL;		}		if (len < 4) {			pri_error(pri, "!! Received short S-frame (expected 4, got %d)\n", len);			break;		}		switch(h->s.ss) {		case 0:			/* Receiver Ready */			pri->busy = 0;			/* Acknowledge frames as necessary */			ev = q921_ack_rx(pri, h->s.n_r);			if (ev)				return ev;			if (h->s.p_f) {				/* If it's a p/f one then send back a RR in return with the p/f bit set */				if (pri->solicitfbit) {					if (pri->debug & PRI_DEBUG_Q921_DUMP)						pri_message(pri, "-- Got RR response to our frame\n");				} else {					if (pri->debug & PRI_DEBUG_Q921_DUMP)						pri_message(pri, "-- Unsolicited RR with P/F bit, responding\n");						q921_rr(pri, 1, 0);				}				pri->solicitfbit = 0;			}			break;      case 1:         /* Receiver not ready */         if (pri->debug & PRI_DEBUG_Q921_DUMP)            pri_message(pri, "-- Got receiver not ready\n");	 if(h->s.p_f) {		/* Send RR if poll bit set */		q921_rr(pri, h->s.p_f, 0);	 }         pri->busy = 1;         break;         case 2:         /* Just retransmit */         if (pri->debug & PRI_DEBUG_Q921_DUMP)            pri_message(pri, "-- Got reject requesting packet %d...  Retransmitting.\n", h->s.n_r);         if (h->s.p_f) {            /* If it has the poll bit set, send an appropriate supervisory response */            q921_rr(pri, 1, 0);         }		 sendnow = 0;         /* Resend the proper I-frame */         for(f=pri->txqueue;f;f=f->next) {               if ((sendnow || (f->h.n_s == h->s.n_r)) && f->transmitted) {                     /* Matches the request, or follows in our window, and has					    already been transmitted. */					 sendnow = 1;					 pri_error(pri, "!! Got reject for frame %d, retransmitting frame %d now, updating n_r!\n", h->s.n_r, f->h.n_s);				     f->h.n_r = pri->v_r;                     q921_transmit(pri, (q921_h *)(&f->h), f->len);               }         }         if (!sendnow) {               if (pri->txqueue) {                     /* This should never happen */		     if (!h->s.p_f || h->s.n_r) {			pri_error(pri, "!! Got reject for frame %d, but we only have others!\n", h->s.n_r);		     }               } else {                     /* Hrm, we have nothing to send, but have been REJ'd.  Reset v_a, v_s, etc */				pri_error(pri, "!! Got reject for frame %d, but we have nothing -- resetting!\n", h->s.n_r);                     pri->v_a = h->s.n_r;                     pri->v_s = h->s.n_r;                     /* Reset t200 timer if it was somehow going */                     if (pri->t200_timer) {                           pri_schedule_del(pri, pri->t200_timer);                           pri->t200_timer = 0;                     }                     /* Reset and restart t203 timer */                     if (pri->t203_timer)                           pri_schedule_del(pri, pri->t203_timer);                     pri->t203_timer = pri_schedule_event(pri, pri->timers[PRI_TIMER_T203], t203_expire, pri);               }         }         break;		default:			pri_error(pri, "!! XXX Unknown Supervisory frame ss=0x%02x,pf=%02xnr=%02x vs=%02x, va=%02x XXX\n", h->s.ss, h->s.p_f, h->s.n_r,					pri->v_s, pri->v_a);		}		break;	case 3:		if (len < 3) {			pri_error(pri, "!! Received short unnumbered frame\n");			break;		}		switch(h->u.m3) {		case 0:			if (h->u.m2 == 3) {				if (h->u.p_f) {					/* Section 5.7.1 says we should restart on receiving a DM response with the f-bit set to					   one, but we wait T200 first */					if (pri->debug & (PRI_DEBUG_Q921_STATE | PRI_DEBUG_Q921_DUMP))						pri_message(pri, "-- Got DM Mode from peer.\n");					/* Disconnected mode, try again after T200 */					ev = q921_dchannel_down(pri);					q921_start(pri, 0);					return ev;										} else {					if (pri->debug & PRI_DEBUG_Q921_DUMP)						pri_message(pri, "-- Ignoring unsolicited DM with p/f set to 0\n");#if 0					/* Requesting that we start */					q921_start(pri, 0);#endif									}				break;			} else if (!h->u.m2) {				pri_message(pri, "XXX Unnumbered Information not implemented XXX\n");			}			break;		case 2:			if (pri->debug & (PRI_DEBUG_Q921_STATE | PRI_DEBUG_Q921_DUMP))				pri_message(pri, "-- Got Disconnect from peer.\n");			/* Acknowledge */			q921_send_ua(pri, h->u.p_f);			ev = q921_dchannel_down(pri);			q921_start(pri, 0);			return ev;		case 3:			if (h->u.m2 == 3) {				/* SABME */				if (pri->debug & (PRI_DEBUG_Q921_STATE | PRI_DEBUG_Q921_DUMP)) {					pri_message(pri, "-- Got SABME from %s peer.\n", h->h.c_r ? "network" : "cpe");				}				if (h->h.c_r) {					pri->remotetype = PRI_NETWORK;					if (pri->localtype == PRI_NETWORK) {						/* We can't both be networks */						return pri_mkerror(pri, "We think we're the network, but they think they're the network, too.");					}				} else {					pri->remotetype = PRI_CPE;					if (pri->localtype == PRI_CPE) {						/* We can't both be CPE */						return pri_mkerror(pri, "We think we're the CPE, but they think they're the CPE too.\n");					}				}				/* Send Unnumbered Acknowledgement */				q921_send_ua(pri, h->u.p_f);				return q921_dchannel_up(pri);			} else if (h->u.m2 == 0) {					/* It's a UA */				if (pri->q921_state == Q921_AWAITING_ESTABLISH) {					if (pri->debug & (PRI_DEBUG_Q921_STATE | PRI_DEBUG_Q921_DUMP)) {						pri_message(pri, "-- Got UA from %s peer  Link up.\n", h->h.c_r ? "cpe" : "network");					}					return q921_dchannel_up(pri);				} else 					pri_error(pri, "!! Got a UA, but i'm in state %d\n", pri->q921_state);			} else 				pri_error(pri, "!! Weird frame received (m3=3, m2 = %d)\n", h->u.m2);			break;		case 4:			pri_error(pri, "!! Frame got rejected!\n");			break;		case 5:			pri_error(pri, "!! XID frames not supported\n");			break;		default:			pri_error(pri, "!! Don't know what to do with M3=%d u-frames\n", h->u.m3);		}		break;					}	return NULL;}static pri_event *__q921_receive(struct pri *pri, q921_h *h, int len){	pri_event *ev;	/* Discard FCS */	len -= 2;		if (!pri->master && pri->debug & (PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_RAW))		q921_dump(pri, h, len, pri->debug & PRI_DEBUG_Q921_RAW, 0);	/* Check some reject conditions -- Start by rejecting improper ea's */	if (h->h.ea1 || !(h->h.ea2))		return NULL;	/* Check for broadcasts - not yet handled */	if (h->h.tei == Q921_TEI_GROUP)		return NULL;	/* Check for SAPIs we don't yet handle */	if ((h->h.sapi != pri->sapi) || (h->h.tei != pri->tei)) {#ifdef PROCESS_SUBCHANNELS		/* If it's not us, try any subchannels we have */		if (pri->subchannel)			return q921_receive(pri->subchannel, h, len + 2);		else #endif			return NULL;	}	ev = __q921_receive_qualified(pri, h, len);	reschedule_t203(pri);	return ev;}pri_event *q921_receive(struct pri *pri, q921_h *h, int len){	pri_event *e;	e = __q921_receive(pri, h, len);#ifdef LIBPRI_COUNTERS	pri->q921_rxcount++;#endif	return e;}void q921_start(struct pri *pri, int now){	if (pri->q921_state != Q921_LINK_CONNECTION_RELEASED) {		pri_error(pri, "!! q921_start: Not in 'Link Connection Released' state\n");		return;	}	/* Reset our interface */	q921_reset(pri);	/* Do the SABME XXX Maybe we should implement T_WAIT? XXX */	q921_send_sabme(pri, now);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费看| 菠萝蜜视频在线观看一区| 国产精品国产a| 日韩欧美亚洲国产精品字幕久久久| 国产精品888| 琪琪一区二区三区| 亚洲一区欧美一区| 中文字幕不卡三区| 日韩美女一区二区三区四区| 91久久精品一区二区二区| 国产一区二区精品在线观看| 五月天一区二区| 亚洲免费av高清| 欧美韩国日本不卡| 亚洲精品一线二线三线无人区| 欧美日韩国产一级片| 91美女片黄在线观看91美女| 国产精品一区在线| 久久99国产精品久久99果冻传媒| 亚洲午夜电影在线观看| ●精品国产综合乱码久久久久| 久久这里只有精品首页| 欧美一级一区二区| 欧美日韩高清一区二区不卡| 在线观看欧美黄色| 91在线精品一区二区| 国产一区二区精品久久| 毛片不卡一区二区| 麻豆91精品视频| 久久精品99久久久| 免费久久99精品国产| 天天影视涩香欲综合网| 爽爽淫人综合网网站| 亚洲国产乱码最新视频 | 欧美一区午夜精品| 欧美日韩一区二区电影| 91成人免费在线| 欧洲一区在线电影| 欧美日韩在线直播| 欧美日韩一级片网站| 欧美日韩精品欧美日韩精品一综合| 色综合久久中文综合久久97| 成人a区在线观看| 成人av片在线观看| eeuss鲁片一区二区三区在线看| 国产91色综合久久免费分享| 国产成人综合精品三级| 丁香六月久久综合狠狠色| 国产精品996| 99视频热这里只有精品免费| 91免费视频观看| 欧美伊人精品成人久久综合97 | 日韩av在线播放中文字幕| 午夜成人免费电影| 久久激情综合网| 丁香网亚洲国际| 色婷婷综合久久久中文一区二区 | 亚洲第一搞黄网站| 麻豆久久一区二区| 成人精品免费网站| 91精品1区2区| 91精品国产高清一区二区三区| 日韩欧美一区中文| 国产精品免费看片| 亚洲国产婷婷综合在线精品| 蜜臀av亚洲一区中文字幕| 国产成人免费视频| 欧美性生活久久| 日韩欧美国产综合在线一区二区三区| 久久伊99综合婷婷久久伊| 中文字幕一区二区三区四区不卡 | 欧美韩日一区二区三区| 亚洲美腿欧美偷拍| 另类小说一区二区三区| www.亚洲人| 678五月天丁香亚洲综合网| 久久综合色综合88| 亚洲欧美日韩一区二区| 日韩国产在线观看一区| 成人综合在线观看| 欧美疯狂做受xxxx富婆| 国产午夜精品福利| 亚洲午夜免费电影| 懂色av中文一区二区三区| 在线看国产一区| 久久久国产精华| 亚洲最大成人综合| 极品美女销魂一区二区三区免费| 91一区二区三区在线观看| 欧美一卡2卡3卡4卡| 亚洲精品国产一区二区三区四区在线 | 91麻豆免费看| 久久人人97超碰com| 亚洲成人中文在线| av欧美精品.com| 久久综合一区二区| 污片在线观看一区二区| jlzzjlzz国产精品久久| 精品裸体舞一区二区三区| 亚洲在线观看免费视频| 丁香天五香天堂综合| 69p69国产精品| 亚洲激情第一区| 国产成人在线免费观看| 91精品国产综合久久久蜜臀粉嫩 | 91成人国产精品| 日本一区二区成人在线| 精品一区二区三区免费毛片爱| 色激情天天射综合网| 久久久精品tv| 美女一区二区三区在线观看| 欧美性猛交xxxx乱大交退制版| 亚洲国产激情av| 精品无人码麻豆乱码1区2区| 欧美综合欧美视频| 亚洲人成在线观看一区二区| 国产成人亚洲综合a∨猫咪| 日韩女优电影在线观看| 石原莉奈在线亚洲二区| 欧美中文一区二区三区| 亚洲乱码国产乱码精品精小说| 国产精品综合一区二区三区| 欧美成人bangbros| 日本 国产 欧美色综合| 制服丝袜亚洲色图| 亚洲国产成人精品视频| 欧洲日韩一区二区三区| 自拍偷拍国产亚洲| 99久久99久久精品国产片果冻| 26uuuu精品一区二区| 久久国产三级精品| 日韩欧美不卡在线观看视频| 欧美aa在线视频| 日韩欧美一级二级三级久久久| 日韩精品五月天| 日韩你懂的在线播放| 另类专区欧美蜜桃臀第一页| 欧美大片一区二区| 国产呦精品一区二区三区网站| 91精品国产欧美一区二区| 蓝色福利精品导航| 精品国产麻豆免费人成网站| 麻豆精品国产91久久久久久| 欧美成人video| 国产高清亚洲一区| 国产精品嫩草影院com| 不卡的av中国片| 一区二区三区资源| 欧美日韩二区三区| 美脚の诱脚舐め脚责91 | 国产午夜精品久久久久久久| 国产91精品一区二区麻豆网站| 国产精品国产三级国产a| 在线免费不卡视频| 免费亚洲电影在线| 久久伊人蜜桃av一区二区| 丁香婷婷综合网| 亚洲一区在线视频| 精品国产伦一区二区三区观看方式| 国产在线播放一区二区三区| 中文子幕无线码一区tr| 在线观看91精品国产入口| 免费国产亚洲视频| 国产精品视频一二三区| 91官网在线观看| 美女国产一区二区三区| 国产精品亲子乱子伦xxxx裸| 在线视频中文字幕一区二区| 奇米色一区二区| 国产精品国产精品国产专区不片| 色婷婷av一区二区三区gif| 秋霞电影一区二区| 国产精品成人免费在线| 欧美老肥妇做.爰bbww| 国产九色精品成人porny| 亚洲免费观看高清完整版在线 | 欧美唯美清纯偷拍| 国产在线播放一区| 亚洲在线中文字幕| 26uuu欧美| 在线视频亚洲一区| 国产福利一区二区三区视频 | 91网上在线视频| 蜜臀av性久久久久蜜臀av麻豆| 国产精品女同互慰在线看| 欧美日韩国产一区| 成人精品电影在线观看| 日韩成人午夜电影| 亚洲欧美日韩系列| 久久蜜桃一区二区| 欧美人与性动xxxx| fc2成人免费人成在线观看播放 | 精品99一区二区| 在线看日本不卡| 成人国产精品免费观看动漫| 午夜久久久影院| 亚洲免费伊人电影| 久久久久国产精品麻豆ai换脸| 欧美日韩国产一级二级| 粉嫩av一区二区三区|