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

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

?? nr4subr.c

?? TCPIP協議包
?? C
字號:
/*
 * nr4subr.c:  subroutines for net/rom transport layer.
 */
 
#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "timer.h"
#include "ax25.h"
#include "netrom.h"
#include "nr4.h"
#include "lapb.h"
#include <ctype.h>



/* Get a free circuit table entry, and allocate a circuit descriptor.
 * Initialize control block circuit number and ID fields.
 * Return a pointer to the circuit control block if successful,
 * NULL if not.
 */

struct nr4cb *
new_n4circ()
{
	int i ;
	struct nr4cb *cb ;

	for (i = 0 ; i <  NR4MAXCIRC ; i++)		/* find a free circuit */
		if (Nr4circuits[i].ccb == NULL)
			break ;

	if (i == NR4MAXCIRC)	/* no more circuits */
		return NULL ;

	cb = Nr4circuits[i].ccb =
		 (struct nr4cb *)callocw(1,sizeof(struct nr4cb));
	cb->mynum = i ;
	cb->myid = Nr4circuits[i].cid ;
	return cb ;
}


/* Set the window size for a circuit and allocate the buffers for
 * the transmit and receive windows.  Set the control block window
 * parameter.  Return 0 if successful, -1 if not.
 */

int
init_nr4window(cb, window)
struct nr4cb *cb ;
unsigned window ;
{
	
	if (window == 0 || window > NR4MAXWIN) /* reject silly window sizes */
		return -1 ;
		
	cb->txbufs =
		 (struct nr4txbuf *)callocw(window,sizeof(struct nr4txbuf));

	cb->rxbufs =
		 (struct nr4rxbuf *)callocw(window,sizeof(struct nr4rxbuf));

	cb->window = window ;
	
	return 0 ;
}


/* Free a circuit.  Deallocate the control block and buffers, and
 * increment the circuit ID.  No return value.
 */

void
free_n4circ(cb)
struct nr4cb *cb ;
{
	unsigned circ ;

	if (cb == NULL)
		return ;

	circ = cb->mynum ;
	
	if (cb->txbufs != (struct nr4txbuf *)0)
		free(cb->txbufs) ;

	if (cb->rxbufs != (struct nr4rxbuf *)0)
		free(cb->rxbufs) ;

	/* Better be safe than sorry: */

	free_q(&cb->txq) ;
	free_q(&cb->rxq) ;
	
	free(cb) ;

	if (circ > NR4MAXCIRC)		/* Shouldn't happen. */
		return ;
		
	Nr4circuits[circ].ccb = NULL ;

	Nr4circuits[circ].cid++ ;
}

/* See if any open circuit matches the given parameters.  This is used
 * to prevent opening multiple circuits on a duplicate connect request.
 * Returns the control block address if a match is found, or NULL
 * otherwise.
 */

struct nr4cb *
match_n4circ(index, id, user, node)
int index ;					/* index of remote circuit */
int id ;					/* id of remote circuit */
uint8 *user ;	/* address of remote user */
uint8 *node ;	/* address of originating node */
{
	int i ;
	struct nr4cb *cb ;

	for (i = 0 ; i < NR4MAXCIRC ; i++) {
		if ((cb = Nr4circuits[i].ccb) == NULL)
			continue ;		/* not an open circuit */
		if (cb->yournum == index && cb->yourid == id
		    && addreq(cb->remote.user,user)
		    && addreq(cb->remote.node,node))
			return cb ;
	}
	/* if we get to here, we didn't find a match */

	return NULL ;
}

/* Validate the index and id of a local circuit, returning the control
 * block if it is valid, or NULL if it is not.
 */

struct nr4cb *
get_n4circ(index, id)
int index ;				/* local circuit index */
int id ;				/* local circuit id */
{
	struct nr4cb *cb ;

	if (index >= NR4MAXCIRC)
		return NULL ;

	if ((cb = Nr4circuits[index].ccb) == NULL)
		return NULL ;

	if (cb->myid == id)
		return cb ;
	else
		return NULL ;
}

/* Return 1 if b is "between" (modulo the size of an unsigned char)
 * a and c, 0 otherwise.
 */

int
nr4between(a, b, c)
unsigned a, b, c ;
{
	if ((a <= b && b < c) || (c < a && a <= b) || (b < c && c < a))
		return 1 ;
	else
		return 0 ;
}

/* Set up default timer values, etc., in newly connected control block.
 */

void
nr4defaults(cb)
struct nr4cb *cb ;
{
	int i ;
	struct timer *t ;

	if (cb == NULL)
		return ;

	/* Set up the ACK and CHOKE timers */
	
	set_timer(&cb->tack,Nr4acktime) ;
	cb->tack.func = nr4ackit ;
	cb->tack.arg = cb ;

	set_timer(&cb->tchoke,Nr4choketime) ;
	cb->tchoke.func = nr4unchoke ;
	cb->tchoke.arg = cb ;

	cb->rxpastwin = cb->window ;

	/* Don't actually set the timers, since this is done */
	/* in nr4sbuf */
	
	for (i = 0 ; i < cb->window ; i++) {
		t = &cb->txbufs[i].tretry ;
		t->func = nr4txtimeout ;
		t->arg = cb ;
	}
}

/* See if this control block address is valid */

int
nr4valcb(cb)
struct nr4cb *cb ;
{
	int i ;

	if (cb == NULL)
		return 0 ;
		
	for (i = 0 ; i < NR4MAXCIRC ; i++)
		if (Nr4circuits[i].ccb == cb)
			return 1 ;

	return 0 ;
}

void
nr_garbage(red)
int red;
{
	int i;
	struct nr4cb *ncp;

	for(i=0;i<NR4MAXCIRC;i++){
		ncp = Nr4circuits[i].ccb;
		if(ncp != NULL)
			mbuf_crunch(&ncp->rxq);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影免费在线观看| 亚洲综合丝袜美腿| 日韩欧美国产一区二区三区| 在线看一区二区| 一本大道久久a久久综合婷婷| 99久久精品免费看国产| 99免费精品视频| 色天天综合久久久久综合片| av电影天堂一区二区在线| 成人av在线电影| 99久久精品久久久久久清纯| 色综合天天综合网天天狠天天| 一本色道亚洲精品aⅴ| 日韩视频免费观看高清完整版在线观看| 欧美日韩国产精品成人| 欧美麻豆精品久久久久久| 欧美日韩高清影院| 日韩欧美成人一区二区| 久久免费电影网| 国产精品嫩草影院av蜜臀| 日韩伦理av电影| 亚洲成a人片综合在线| 男女男精品视频网| 国产精品一级片| 色一情一伦一子一伦一区| 欧美日韩1234| 久久精品夜夜夜夜久久| 中文字幕综合网| 天天色综合成人网| 国产乱妇无码大片在线观看| 色欲综合视频天天天| 91精品国产综合久久婷婷香蕉| 精品成人免费观看| 亚洲欧美另类图片小说| 日韩在线一二三区| 成人一区二区三区| www久久久久| 亚洲欧美日韩系列| 久久国产夜色精品鲁鲁99| 成人性生交大片| 91精品国产综合久久久久久| 中文字幕欧美国产| 欧美aaaaaa午夜精品| 97se亚洲国产综合自在线不卡| 日韩欧美电影一二三| 亚洲欧美色综合| 国产在线日韩欧美| 欧美日韩国产另类一区| 国产精品日韩成人| 欧美aⅴ一区二区三区视频| 成人精品免费看| 日韩欧美国产综合| 亚洲成在线观看| 成人永久免费视频| 精品美女在线播放| 午夜伊人狠狠久久| 一本一本大道香蕉久在线精品| 久久久精品国产免费观看同学| 日韩精品成人一区二区三区| 91猫先生在线| 国产精品久久久久久一区二区三区| 久久精品国产在热久久| 在线看一区二区| 亚洲精品日韩一| av在线播放成人| 中文字幕欧美国产| 欧美日韩免费视频| 国产精品国产三级国产普通话三级| 精品一区二区三区久久| 在线观看av一区| 亚洲精品国产视频| 色综合久久中文字幕综合网| 一区在线中文字幕| 丁香婷婷综合激情五月色| 久久久99精品免费观看| 激情综合网av| 久久影院电视剧免费观看| 麻豆国产91在线播放| 日韩三级视频在线看| 日韩av一二三| 精品国产91乱码一区二区三区 | 国产精品每日更新| 国产一区二区网址| 2020国产精品| 福利电影一区二区三区| 欧美国产亚洲另类动漫| 高清视频一区二区| 中文av一区二区| 色综合一区二区三区| 亚洲精品成人少妇| 欧美亚洲一区二区在线| 婷婷六月综合亚洲| 亚洲综合免费观看高清完整版在线 | 国产无一区二区| 菠萝蜜视频在线观看一区| 中文字幕不卡的av| 色综合咪咪久久| 日韩电影在线观看网站| 日韩亚洲欧美一区二区三区| 国内精品久久久久影院薰衣草| 国产精品嫩草影院av蜜臀| 99免费精品视频| 视频在线在亚洲| 久久久久亚洲综合| 色8久久人人97超碰香蕉987| 丝瓜av网站精品一区二区 | 国产在线麻豆精品观看| 国产精品久久精品日日| 欧美色图激情小说| 国产一区在线看| 亚洲色图欧洲色图婷婷| 欧美情侣在线播放| 国产激情精品久久久第一区二区| 日韩一区在线免费观看| 在线综合亚洲欧美在线视频| 懂色中文一区二区在线播放| 亚洲午夜电影网| 日本一区二区三区在线观看| 欧美三级一区二区| 高清不卡一区二区在线| 日韩一区精品字幕| 中文字幕av免费专区久久| 国产精品第一页第二页第三页| 欧洲国内综合视频| 国产不卡在线视频| 五月激情综合网| 亚洲欧洲另类国产综合| 欧美一区二区二区| 日本乱码高清不卡字幕| 国产激情精品久久久第一区二区 | 午夜久久久久久久久久一区二区| 国产三级精品三级在线专区| 69堂成人精品免费视频| 国产精品欧美一区二区三区| 国产精品一区在线观看乱码| 亚洲无人区一区| 国产一区二三区| 亚洲成人动漫精品| 中文字幕免费一区| 久久综合一区二区| 日韩三级视频中文字幕| 欧美亚洲精品一区| 99久久精品国产观看| 国产高清视频一区| 日本人妖一区二区| 亚洲777理论| 亚洲第一激情av| 一区二区三区中文在线观看| 成人免费小视频| 国产精品看片你懂得| 久久精品视频网| 国产日韩欧美a| 久久亚洲私人国产精品va媚药| 成人欧美一区二区三区白人| 国产欧美日韩综合精品一区二区| 欧美电影免费观看高清完整版在| 欧美一区二区三区四区五区| 欧美一区二区三区免费视频| 欧美精品乱码久久久久久| 欧美日韩卡一卡二| 在线成人av影院| 欧美成人激情免费网| 日韩小视频在线观看专区| 91精品在线观看入口| 在线成人午夜影院| 日韩欧美自拍偷拍| 久久久久久久精| 自拍偷在线精品自拍偷无码专区| 成人欧美一区二区三区小说| 亚洲精品日韩一| 亚洲18影院在线观看| 日本伊人色综合网| 国精产品一区一区三区mba桃花| 国产成人免费视频精品含羞草妖精| 高清不卡在线观看av| 91视频免费播放| 欧美日韩中文精品| 欧美一区二区三区免费观看视频| 26uuu另类欧美亚洲曰本| 国产欧美视频一区二区三区| 亚洲精品美腿丝袜| 日本v片在线高清不卡在线观看| 老司机一区二区| 99久久婷婷国产综合精品电影 | 久久se精品一区二区| 国产不卡视频在线观看| 91免费精品国自产拍在线不卡 | 亚洲女女做受ⅹxx高潮| 亚洲6080在线| 国产高清精品网站| 一本久道中文字幕精品亚洲嫩| 在线播放视频一区| 欧美激情在线一区二区三区| 亚洲综合精品自拍| 国产另类ts人妖一区二区| 欧日韩精品视频| 日本一区二区三区电影| 天天综合日日夜夜精品| 高清成人免费视频| 欧美一区二区三区在|