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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nr4user.c

?? 這是新華龍(www.xhl.xom.xn)開發(fā)的
?? C
字號(hào):
/* net/rom level 4 (transport) protocol user level calls
 */

#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "timer.h"
#include "ax25.h"
#include "lapb.h"
#include "netrom.h"
#include "nr4.h"
#include <ctype.h>

#undef NR4DEBUG

/* Open a NET/ROM transport connection */
struct nr4cb *
open_nr4(local,remote,mode,r_upcall,t_upcall,s_upcall,user)
struct nr4_addr *local ;	/* local node address */
struct nr4_addr *remote ;	/* destination node address */
int mode ;			/* active/passive/server */
void (*r_upcall)(struct nr4cb *,uint16) ;	/* received data upcall */
void (*t_upcall)(struct nr4cb *,uint16) ;	/* transmit upcall */
void (*s_upcall)(struct nr4cb *,int,int) ;	/* state change upcall */
int user ;			/* user linkage area */
{
	struct nr4cb *cb ;
	struct nr4hdr hdr ;
	struct nr4_addr nr4tmp;

	if ((cb = new_n4circ()) == NULL)
		return NULL ;		/* No circuits available */

	if(remote == NULL){
		remote = &nr4tmp;
		setcall(remote->user," ");
		setcall(remote->node," ");
	}
	
	/* Stuff what info we can into control block */

	ASSIGN(cb->remote,*remote) ;
	/* Save local address for connect retries */
	ASSIGN(cb->local,*local) ;

	cb->r_upcall = r_upcall ;
	cb->t_upcall = t_upcall ;
	cb->s_upcall = s_upcall ;
	cb->user = user ;
	cb->clone = 0 ;

	switch(mode){
	case AX_SERVER:
		cb->clone = 1;
	case AX_PASSIVE:	/* Note fall-thru */
		cb->state = NR4STLISTEN;
		return cb;
	case AX_ACTIVE:
		break;
	}    
	/* Format connect request header */

	hdr.opcode = NR4OPCONRQ ;
	hdr.u.conreq.myindex = cb->mynum ;
	hdr.u.conreq.myid = cb->myid ;
	hdr.u.conreq.window = Nr4window ;
	memcpy(hdr.u.conreq.user,local->user,AXALEN);

	/* If I have a unique callsign per interface, then a layer violation */
	/* will be required to determine the "real" callsign for my */
	/* (virtual) node.  This suggests that callsign-per-interface is not */
	/* desirable, which answers *that* particular open question. */
	
	memcpy(hdr.u.conreq.node,local->node,AXALEN);

	/* Set and start connection retry timer */

	cb->cdtries = 1 ;
	cb->srtt = Nr4irtt ;
	set_timer(&cb->tcd,2 * cb->srtt);
	cb->tcd.func = nr4cdtimeout ;
	cb->tcd.arg = cb ;
	start_timer(&cb->tcd) ;
	
	/* Send connect request packet */

	nr4sframe(remote->node,&hdr,NULL) ;

	/* Set up initial state and signal state change */

	cb->state = NR4STDISC ;
	nr4state(cb, NR4STCPEND) ;

	/* Return control block address */

	return cb ;
}

/* Send a net/rom transport data packet */
int
send_nr4(
struct nr4cb *cb,
struct mbuf **bpp
){
	if(cb == NULL){
		free_p(bpp);
		return -1 ;
	}
	enqueue(&cb->txq,bpp) ;
	return nr4output(cb) ;
}

/* Receive incoming net/rom transport data */
struct mbuf *
recv_nr4(cb,cnt)
struct nr4cb *cb ;
uint16 cnt ;
{
	struct mbuf *bp ;

	if (cb->rxq == NULL)
		return NULL ;

	if (cnt == 0) {
		bp = cb->rxq ;			/* Just give `em everything */
		cb->rxq = NULL ;
	}
	else {
		bp = ambufw(cnt);
		bp->cnt = pullup(&cb->rxq,bp->data,cnt);
	}
	/* If this has un-choked us, reopen the window */
	if (cb->qfull && len_p(cb->rxq) < Nr4qlimit) {
		cb->qfull = 0 ;				/* Choke flag off */
		nr4ackit(cb) ;		/* Get things rolling again */
	}

	return bp ;
}

/* Close a NET/ROM connection */
void
disc_nr4(cb)
struct nr4cb *cb ;
{
	struct nr4hdr hdr ;
	
	if (cb->state == NR4STLISTEN) {
		free_n4circ(cb);
		return;
	}
	/* Format disconnect request packet */
	
	hdr.opcode = NR4OPDISRQ ;
	hdr.yourindex = cb->yournum ;
	hdr.yourid = cb->yourid ;

	/* Set and start timer */
	
	cb->cdtries = 1 ;
	set_timer(&cb->tcd,2 * cb->srtt);
	cb->tcd.func = nr4cdtimeout ;
	cb->tcd.arg = cb ;
	start_timer(&cb->tcd) ;

	/* Send packet */

	nr4sframe(cb->remote.node, &hdr, NULL) ;

	if(cb->state != NR4STCON){
		/* Connection not established; just blow it away */
		reset_nr4(cb);
		return;
	}
	/* Connection established, try to close it gracefully */
	/* Signal state change.  nr4state will take care of stopping */
	/* the appropriate timers and resetting window pointers. */
	nr4state(cb, NR4STDPEND) ;
}

/* Abruptly terminate a NET/ROM transport connection */
void
reset_nr4(cb)
struct nr4cb *cb ;
{
	cb->dreason = NR4RRESET ;
	nr4state(cb,NR4STDISC) ;
}


/* Force retransmission on a NET/ROM transport connection */
int
kick_nr4(cb)
struct nr4cb *cb ;
{
	unsigned seq ;
	struct timer *t ;

	if(!nr4valcb(cb))
		return -1 ;

	switch (cb->state) {
	  case NR4STCPEND:
	  case NR4STDPEND:
	  	stop_timer(&cb->tcd) ;
		nr4cdtimeout(cb) ;
		break ;

	  case NR4STCON:
	    if (cb->nextosend != cb->ackxpected) {	/* if send window is open: */
			for (seq = cb->ackxpected ;
				 nr4between(cb->ackxpected, seq, cb->nextosend) ;
				 seq = (seq + 1) & NR4SEQMASK) {
				t = &cb->txbufs[seq % cb->window].tretry ;
				stop_timer(t) ;
				t->state = TIMER_EXPIRE ;	/* fool retry routine */
			}
			nr4txtimeout(cb) ;
		}
		break ;
	}

	return 0 ;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss鲁一区二区三区| 精品久久久久99| 欧美一区二区国产| 日本一区二区三区dvd视频在线| 一区二区三区自拍| 国产一区二区调教| 精品视频色一区| 亚洲视频图片小说| 国产一区二区网址| 91精品国产91久久久久久一区二区| 国产精品家庭影院| 久久99精品久久只有精品| 色视频成人在线观看免| 国产三级欧美三级日产三级99| 日韩在线观看一区二区| www.日本不卡| 亚洲国产成人一区二区三区| 免费成人性网站| 欧美视频自拍偷拍| 亚洲柠檬福利资源导航| 国产乱国产乱300精品| 91精品久久久久久久91蜜桃 | 肉丝袜脚交视频一区二区| 国产成人精品免费在线| 日韩三级视频中文字幕| 亚洲午夜三级在线| 91免费看视频| 国产精品的网站| 成人av综合一区| 国产欧美日韩三级| 国产剧情一区二区三区| 精品国产91亚洲一区二区三区婷婷| 黄色日韩网站视频| 91精品国产丝袜白色高跟鞋| 亚洲午夜三级在线| 欧美性受xxxx黑人xyx| 一区二区三区中文字幕精品精品 | aaa亚洲精品| 国产精品国产三级国产有无不卡 | 成人avav在线| 国产精品乱码一区二区三区软件 | 精品盗摄一区二区三区| 麻豆极品一区二区三区| 日韩一区二区精品| 精品一区二区免费| wwwwxxxxx欧美| 国内久久精品视频| 久久女同精品一区二区| 国产一区二区成人久久免费影院| 欧美精品一区二区三区久久久| 久久99久久99小草精品免视看| 日韩欧美精品三级| 国产精品影视在线| 国产精品久久久久毛片软件| 97精品视频在线观看自产线路二| 综合久久国产九一剧情麻豆| 色香蕉久久蜜桃| 国产福利一区二区三区视频在线| 精品欧美一区二区三区精品久久| 紧缚奴在线一区二区三区| 国产无一区二区| 色综合夜色一区| 国产米奇在线777精品观看| 久久精品亚洲麻豆av一区二区 | 日本韩国一区二区三区| 亚洲一二三区在线观看| 91精品国产一区二区三区 | 九九久久精品视频| 欧美韩日一区二区三区| 色8久久精品久久久久久蜜 | 亚洲女与黑人做爰| 91麻豆精品国产自产在线观看一区| 久久er99热精品一区二区| 欧美韩国日本综合| 欧美日韩在线三级| 国产精品18久久久| 亚洲国产一区视频| 国产三级精品三级| 欧美影院一区二区| 国产二区国产一区在线观看| 一区二区三区四区国产精品| 精品国产伦一区二区三区观看方式| 不卡av电影在线播放| 秋霞av亚洲一区二区三| 中文字幕中文字幕一区二区 | 99在线视频精品| 日本不卡在线视频| 亚洲欧美激情视频在线观看一区二区三区| 国产精品青草久久| 欧美日韩免费视频| 粉嫩一区二区三区性色av| 天天影视网天天综合色在线播放| 欧美高清在线一区| 91精品国产品国语在线不卡| 99精品黄色片免费大全| 激情久久久久久久久久久久久久久久| 亚洲人成影院在线观看| 久久综合资源网| 欧美在线高清视频| 不卡一二三区首页| 国产精品资源站在线| 日本成人在线电影网| 亚洲精品免费看| 国产精品久久久久久久久免费丝袜 | 日韩欧美国产精品| 欧美午夜一区二区| 成人aa视频在线观看| 国产一区在线观看视频| 日韩av一级电影| 亚洲电影中文字幕在线观看| 亚洲欧洲色图综合| 亚洲国产高清在线观看视频| 2020日本不卡一区二区视频| 欧美一区二区三区男人的天堂| 色噜噜狠狠成人网p站| 成人激情视频网站| 福利一区二区在线观看| 极品少妇一区二区| 久久99精品国产.久久久久久| 丝袜美腿成人在线| 午夜精品在线看| 樱桃视频在线观看一区| 亚洲人精品一区| 亚洲人成小说网站色在线 | 欧美成人性战久久| 日韩一区二区三免费高清| 91精品欧美综合在线观看最新| 制服.丝袜.亚洲.中文.综合| 欧美精品第1页| 欧美一级欧美一级在线播放| 日韩三级视频中文字幕| 欧美成人艳星乳罩| 久久精品一区二区三区av| 亚洲一区二区三区自拍| 亚洲第一精品在线| 日韩avvvv在线播放| 久久99久久精品欧美| 国产东北露脸精品视频| 99在线精品一区二区三区| 91黄色免费观看| 欧美久久久久中文字幕| 欧美一区二区三区公司| 久久先锋影音av鲁色资源| 国产精品美女www爽爽爽| 亚洲男人的天堂在线观看| 午夜伊人狠狠久久| 久久精品国产一区二区三| 国产高清成人在线| 91精彩视频在线| 欧美一区二区三区免费观看视频| 久久综合色8888| 亚洲日本电影在线| 日本中文一区二区三区| 国产在线看一区| 色国产综合视频| 日韩视频永久免费| 国产精品久久免费看| 亚洲制服丝袜在线| 黄网站免费久久| 91浏览器在线视频| 欧美大片免费久久精品三p| 国产精品人妖ts系列视频| 一区二区三区在线视频免费| 老司机精品视频导航| 9l国产精品久久久久麻豆| 91麻豆精品久久久久蜜臀| 国产欧美日韩精品一区| 性欧美大战久久久久久久久| 国产一区二区三区精品视频| 欧美影院午夜播放| 国产人伦精品一区二区| 成人app下载| 精品国产一区二区三区av性色| 亚洲欧洲av另类| 韩国一区二区视频| 在线精品视频一区二区| 国产日韩一级二级三级| 舔着乳尖日韩一区| jlzzjlzz亚洲女人18| 日韩午夜在线观看| 亚洲精品国产a| 成人av网站在线| 精品成人一区二区三区四区| 亚洲成人久久影院| 99九九99九九九视频精品| 欧美va亚洲va| 日韩av在线发布| 欧美三级日韩在线| 亚洲日本青草视频在线怡红院| 国产精品资源网| 精品对白一区国产伦| 日本不卡中文字幕| 欧美日韩在线精品一区二区三区激情| 国产精品二三区| 国产成人综合视频| 精品福利一二区| 加勒比av一区二区| 精品国产在天天线2019| 强制捆绑调教一区二区| 欧美顶级少妇做爰|