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

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

?? nr4user.c

?? uCLinux下的一個(gè)TCP/IP協(xié)議棧源碼
?? C
字號:
/* 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
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区欧美小说| av高清不卡在线| 成人免费av在线| 欧美久久久久久蜜桃| 中文字幕一区二区三区蜜月 | 久久精品久久99精品久久| 国产99一区视频免费| 日韩一卡二卡三卡| 亚洲综合丁香婷婷六月香| 成人性生交大片免费看中文| 日韩你懂的电影在线观看| 亚洲亚洲人成综合网络| 99精品视频一区二区三区| 久久久久久久一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 麻豆成人在线观看| 欧美日韩一区二区三区在线 | 欧美日韩美女一区二区| 亚洲精品免费看| 97国产一区二区| 国产精品乱人伦中文| 国产激情精品久久久第一区二区| 日韩亚洲欧美成人一区| 视频一区中文字幕| 欧美精品在欧美一区二区少妇| 一区二区三区产品免费精品久久75 | 精品一区二区三区免费观看| 欧美一卡二卡在线| 美女一区二区视频| 欧美一级精品大片| 看电影不卡的网站| 欧美变态tickling挠脚心| 久久爱www久久做| 26uuu精品一区二区| 韩国av一区二区| 久久综合视频网| 国产aⅴ综合色| 自拍偷拍亚洲激情| 色悠悠亚洲一区二区| 亚洲最大色网站| 欧美日韩高清在线播放| 久久国产夜色精品鲁鲁99| 久久久久99精品国产片| 成人av高清在线| 亚洲一二三区不卡| 精品少妇一区二区三区日产乱码 | 热久久国产精品| 精品99久久久久久| 成人精品小蝌蚪| 亚洲免费伊人电影| 911国产精品| 国产一区二区美女诱惑| 中文字幕 久热精品 视频在线| 91热门视频在线观看| 亚洲mv大片欧洲mv大片精品| 欧美精三区欧美精三区| 久草热8精品视频在线观看| 国产欧美日韩一区二区三区在线观看| 成人av一区二区三区| 石原莉奈在线亚洲二区| 国产日韩av一区| 欧美日韩综合一区| 国产成人亚洲综合a∨婷婷 | 一区二区欧美国产| 日韩一区二区三区视频在线| 国产精品2024| 亚洲国产欧美日韩另类综合| 精品国精品国产| 91成人免费网站| 国产精品一级片在线观看| 玉足女爽爽91| 欧美高清在线精品一区| 欧美久久久久久蜜桃| 国产91露脸合集magnet| 视频在线在亚洲| 亚洲欧美日韩国产综合在线| 日韩欧美成人午夜| 欧美色男人天堂| 高清免费成人av| 久久精品99久久久| 亚洲福利视频一区二区| 国产精品网站导航| 欧美tickling挠脚心丨vk| 色菇凉天天综合网| 高清在线不卡av| 国产在线看一区| 天使萌一区二区三区免费观看| 中文字幕中文字幕一区二区| 日韩精品一区二区在线| 欧美亚洲国产bt| 91美女精品福利| 不卡影院免费观看| 国产99精品在线观看| 国产一区二区福利| 免费成人在线网站| 日本不卡不码高清免费观看| 亚洲一二三级电影| 亚洲一区二区在线观看视频 | 亚洲国产精品久久久久婷婷884 | 制服丝袜日韩国产| 欧美手机在线视频| 在线欧美一区二区| 色婷婷狠狠综合| 色婷婷激情综合| 91福利资源站| 欧美午夜影院一区| 精品视频在线视频| 欧美二区在线观看| 6080yy午夜一二三区久久| 欧美优质美女网站| 欧美在线制服丝袜| 欧美日本国产视频| 欧美美女一区二区三区| 91精品综合久久久久久| 欧美一卡2卡3卡4卡| 欧美一区二区久久| 欧美一级一区二区| 欧美成人女星排名| 国产欧美日韩在线视频| 国产精品久久久久aaaa樱花 | 欧美图区在线视频| 欧美三级在线视频| 欧美电影免费提供在线观看| 精品国产人成亚洲区| 久久综合久久鬼色| 中文字幕高清一区| 亚洲影院久久精品| 日韩国产高清在线| 精品系列免费在线观看| 国产精品综合在线视频| av在线一区二区三区| 日本久久一区二区| 欧美一区二区三区在线观看| 精品88久久久久88久久久| 欧美极品美女视频| 亚洲一级二级在线| 九一九一国产精品| www.日韩av| 欧美精品久久天天躁| 久久久亚洲精品一区二区三区| 中文字幕制服丝袜成人av| 午夜亚洲福利老司机| 国产乱妇无码大片在线观看| 91麻豆文化传媒在线观看| 日韩欧美一卡二卡| 中文字幕色av一区二区三区| 丝袜美腿一区二区三区| 国产精品亚洲综合一区在线观看| 色综合中文字幕| 精品久久久网站| 亚洲免费观看视频| 九九视频精品免费| 在线亚洲高清视频| 久久久精品国产99久久精品芒果 | 国产精品九色蝌蚪自拍| 亚洲国产成人91porn| 国产精品一区二区久久不卡| 欧美日韩一区二区三区免费看| 久久久精品综合| 日韩av一二三| 色哟哟一区二区三区| 精品国产乱码久久久久久蜜臀| 亚洲免费在线电影| 国产成人av一区二区三区在线观看| 欧美午夜寂寞影院| 中文字幕一区日韩精品欧美| 麻豆成人91精品二区三区| 在线精品视频免费观看| 国产精品每日更新| 久久99精品久久久| 欧美日本高清视频在线观看| 中文字幕亚洲区| 国产精品99久久久久久久vr| 日韩一区二区电影网| 亚洲午夜免费电影| 北条麻妃一区二区三区| 国产亚洲va综合人人澡精品| 狂野欧美性猛交blacked| 欧美三级一区二区| 一区二区三区日韩在线观看| 成人一区二区三区中文字幕| 精品国产精品网麻豆系列| 午夜精品久久久久久久蜜桃app | 成人性色生活片免费看爆迷你毛片| 日韩精品一区二区三区中文不卡| 亚洲国产一区二区在线播放| 91丨porny丨在线| 中文字幕在线不卡一区二区三区 | 中文字幕一区二区三区视频| 国产成人在线观看免费网站| 亚洲精品一区二区三区四区高清| 日韩国产欧美三级| 91麻豆精品久久久久蜜臀| 日韩和欧美一区二区三区| 欧美人xxxx| 天天影视色香欲综合网老头| 欧美日韩国产一级二级| 日韩在线观看一区二区| 69成人精品免费视频| 免费久久99精品国产|