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

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

?? ax25cmd.c

?? TCPIP協議包
?? C
字號:
/* AX25 control commands
 */
#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "timer.h"
#include "proc.h"
#include "iface.h"
#include "ax25.h"
#include "lapb.h"
#include "cmdparse.h"
#include "socket.h"
#include "mailbox.h"
#include "session.h"
#include "tty.h"
#include "nr4.h"
#include "commands.h"

static int axdest(struct iface *ifp);
static int axheard(struct iface *ifp);
static void axflush(struct iface *ifp);
static int doaxflush(int argc,char *argv[],void *p);
static int doaxirtt(int argc,char *argv[],void *p);
static int doaxkick(int argc,char *argv[],void *p);
static int doaxreset(int argc,char *argv[],void *p);
static int doaxroute(int argc,char *argv[],void *p);
static int doaxstat(int argc,char *argv[],void *p);
static int doaxwindow(int argc,char *argv[],void *p);
static int doblimit(int argc,char *argv[],void *p);
static int dodigipeat(int argc,char *argv[],void *p);
static int domaxframe(int argc,char *argv[],void *p);
static int domycall(int argc,char *argv[],void *p);
static int don2(int argc,char *argv[],void *p);
static int dopaclen(int argc,char *argv[],void *p);
static int dopthresh(int argc,char *argv[],void *p);
static int dot3(int argc,char *argv[],void *p);
static int doversion(int argc,char *argv[],void *p);

char *Ax25states[] = {
	"",
	"Disconn",
	"Listening",
	"Conn pend",
	"Disc pend",
	"Connected",
	"Recovery",
};

/* Ascii explanations for the disconnect reasons listed in lapb.h under
 * "reason" in ax25_cb
 */
char *Axreasons[] = {
	"Normal",
	"DM received",
	"Timeout"
};

static struct cmds Axcmds[] = {
	"blimit",	doblimit,	0, 0, NULL,
	"destlist",	doaxdest,	0, 0, NULL,
	"digipeat",	dodigipeat,	0, 0, NULL,
	"flush",	doaxflush,	0, 0, NULL,
	"heard",	doaxheard,	0, 0, NULL,
	"irtt",		doaxirtt,	0, 0, NULL,
	"kick",		doaxkick,	0, 2, "ax25 kick <axcb>",
	"maxframe",	domaxframe,	0, 0, NULL,
	"mycall",	domycall,	0, 0, NULL,
	"paclen",	dopaclen,	0, 0, NULL,
	"pthresh",	dopthresh,	0, 0, NULL,
	"reset",	doaxreset,	0, 2, "ax25 reset <axcb>",
	"retry",	don2,		0, 0, NULL,
	"route",	doaxroute,	0, 0, NULL,
	"status",	doaxstat,	0, 0, NULL,
	"t3",		dot3,		0, 0, NULL,
	"version",	doversion,	0, 0, NULL,
	"window",	doaxwindow,	0, 0, NULL,
	NULL,
};
static int keychar(int c);


/* Multiplexer for top-level ax25 command */
int
doax25(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return subcmd(Axcmds,argc,argv,p);
}

int
doaxheard(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct iface *ifp;

	if(argc > 1){
		if((ifp = if_lookup(argv[1])) == NULL){
			printf("Interface %s unknown\n",argv[1]);
			return 1;
		}
		if(ifp->output != ax_output){
			printf("Interface %s not AX.25\n",argv[1]);
			return 1;
		}
		axheard(ifp);
		return 0;
	}
	for(ifp = Ifaces;ifp != NULL;ifp = ifp->next){
		if(ifp->output != ax_output)
			continue;	/* Not an ax.25 interface */
		if(axheard(ifp) == EOF)
			break;
	}
	return 0;
}
static int
axheard(ifp)
struct iface *ifp;
{
	struct lq *lp;
	char tmp[AXBUF];

	if(ifp->hwaddr == NULL)
		return 0;
	printf("%s:\n",ifp->name);
	printf("Station   Last heard           Pkts\n");
	for(lp = Lq;lp != NULL;lp = lp->next){
		if(lp->iface != ifp)
			continue;
		printf("%-10s%-17s%8lu\n",pax25(tmp,lp->addr),
		 tformat(secclock() - lp->time),lp->currxcnt);
	}
	return 0;
}
int
doaxdest(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct iface *ifp;

	if(argc > 1){
		if((ifp = if_lookup(argv[1])) == NULL){
			printf("Interface %s unknown\n",argv[1]);
			return 1;
		}
		if(ifp->output != ax_output){
			printf("Interface %s not AX.25\n",argv[1]);
			return 1;
		}
		axdest(ifp);
		return 0;
	}
	for(ifp = Ifaces;ifp != NULL;ifp = ifp->next){
		if(ifp->output != ax_output)
			continue;	/* Not an ax.25 interface */
		if(axdest(ifp) == EOF)
			break;
	}
	return 0;
}
static int
axdest(ifp)
struct iface *ifp;
{
	struct ld *lp;
	struct lq *lq;
	char tmp[AXBUF];

	if(ifp->hwaddr == NULL)
		return 0;
	printf("%s:\n",ifp->name);
	printf("Station   Last ref         Last heard           Pkts\n");
	for(lp = Ld;lp != NULL;lp = lp->next){
		if(lp->iface != ifp)
			continue;

		printf("%-10s%-17s",
		 pax25(tmp,lp->addr),tformat(secclock() - lp->time));

		if(addreq(lp->addr,ifp->hwaddr)){
			/* Special case; it's our address */
			printf("%-17s",tformat(secclock() - ifp->lastsent));
		} else if((lq = al_lookup(ifp,lp->addr,0)) == NULL){
			printf("%-17s","");
		} else {
			printf("%-17s",tformat(secclock() - lq->time));
		}
		printf("%8lu\n",lp->currxcnt);
	}
	return 0;
}
static int
doaxflush(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct iface *ifp;

	for(ifp = Ifaces;ifp != NULL;ifp = ifp->next){
		if(ifp->output != ax_output)
			continue;	/* Not an ax.25 interface */
		axflush(ifp);
	}
	return 0;
}
static void
axflush(ifp)
struct iface *ifp;
{
	struct lq *lp,*lp1;
	struct ld *ld,*ld1;

	ifp->rawsndcnt = 0;
	for(lp = Lq;lp != NULL;lp = lp1){
		lp1 = lp->next;
		free(lp);
	}
	Lq = NULL;
	for(ld = Ld;ld != NULL;ld = ld1){
		ld1 = ld->next;
		free(ld);
	}
	Ld = NULL;
}

static
doaxreset(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct ax25_cb *axp;

	axp = (struct ax25_cb *)ltop(htol(argv[1]));
	if(!ax25val(axp)){
		printf(Notval);
		return 1;
	}
	reset_ax25(axp);
	return 0;
}

/* Display AX.25 link level control blocks */
static
doaxstat(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct ax25_cb *axp;
	char tmp[AXBUF];

	if(argc < 2){
		printf("&AXB      Snd-Q   Rcv-Q   Remote    State\n");
		for(axp = Ax25_cb;axp != NULL; axp = axp->next){
			printf("%9p %-8d%-8d%-10s%s\n",
			 axp,
			 len_q(axp->txq),len_p(axp->rxq),
			 pax25(tmp,axp->remote),
			 Ax25states[axp->state]);
		}
		return 0;
	}
	axp = (struct ax25_cb *)ltop(htol(argv[1]));
	if(!ax25val(axp)){
		printf(Notval);
		return 1;
	}
	st_ax25(axp);
	return 0;
}
/* Dump one control block */
void
st_ax25(axp)
register struct ax25_cb *axp;
{
	char tmp[AXBUF];

	if(axp == NULL)
		return;
	printf("     &AXB Remote   RB V(S) V(R) Unack P Retry State\n");

	printf("%9p %-9s%c%c",axp,pax25(tmp,axp->remote),
	 axp->flags.rejsent ? 'R' : ' ',
	 axp->flags.remotebusy ? 'B' : ' ');
	printf(" %4d %4d",axp->vs,axp->vr);
	printf(" %02u/%02u %u",axp->unack,axp->maxframe,axp->proto);
	printf(" %02u/%02u",axp->retries,axp->n2);
	printf(" %s\n",Ax25states[axp->state]);

	printf("srtt = %lu mdev = %lu ",axp->srt,axp->mdev);
	printf("T1: ");
	if(run_timer(&axp->t1))
		printf("%lu",read_timer(&axp->t1));
	else
		printf("stop");
	printf("/%lu ms; ",dur_timer(&axp->t1));

	printf("T3: ");
	if(run_timer(&axp->t3))
		printf("%lu",read_timer(&axp->t3));
	else
		printf("stop");
	printf("/%lu ms\n",dur_timer(&axp->t3));

}

/* Display or change our AX.25 address */
static
domycall(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	char tmp[AXBUF];

	if(argc < 2){
		printf("%s\n",pax25(tmp,Mycall));
		return 0;
	}
	if(setcall(Mycall,argv[1]) == -1)
		return -1;
	return 0;
}

/* Control AX.25 digipeating */
static
dodigipeat(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setbool(&Digipeat,"Digipeat",argc,argv);
}
/* Set limit on retransmission backoff */
static
doblimit(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setlong(&Blimit,"blimit",argc,argv);
}
static
doversion(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&Axversion,"AX25 version",argc,argv);
}

static
doaxirtt(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setlong(&Axirtt,"Initial RTT (ms)",argc,argv);
}

/* Set idle timer */
static
dot3(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setlong(&T3init,"Idle poll timer (ms)",argc,argv);
}

/* Set retry limit count */
static
don2(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&N2,"Retry limit",argc,argv);
}
/* Force a retransmission */
static
doaxkick(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct ax25_cb *axp;

	axp = (struct ax25_cb *)ltop(htol(argv[1]));
	if(!ax25val(axp)){
		printf(Notval);
		return 1;
	}
	kick_ax25(axp);
	return 0;
}
/* Set maximum number of frames that will be allowed in flight */
static
domaxframe(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&Maxframe,"Window size (frames)",argc,argv);
}

/* Set maximum length of I-frame data field */
static
dopaclen(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&Paclen,"Max frame length (bytes)",argc,argv);
}
/* Set size of I-frame above which polls will be sent after a timeout */
static
dopthresh(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&Pthresh,"Poll threshold (bytes)",argc,argv);
}

/* Set high water mark on receive queue that triggers RNR */
static
doaxwindow(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	return setshort(&Axwindow,"AX25 receive window (bytes)",argc,argv);
}
/* End of ax25 subcommands */

/* Initiate interactive AX.25 connect to remote station */
int
doconnect(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct sockaddr_ax fsocket;
	struct session *sp;
	int ndigis,i,s;
	uint8 digis[MAXDIGIS][AXALEN];
	uint8 target[AXALEN];

	/* If digipeaters are given, put them in the routing table */
	if(argc > 3){
		setcall(target,argv[2]);
		ndigis = argc - 3;
		if(ndigis > MAXDIGIS){
			printf("Too many digipeaters\n");
			return 1;
		}
		for(i=0;i<ndigis;i++){
			if(setcall(digis[i],argv[i+3]) == -1){
				printf("Bad digipeater %s\n",argv[i+3]);
				return 1;
			}
		}
		if(ax_add(target,AX_LOCAL,digis,ndigis) == NULL){
			printf("Route add failed\n");
			return 1;
		}
	}
	/* Allocate a session descriptor */
	if((sp = newsession(Cmdline,AX25TNC,1)) == NULL){
		printf("Too many sessions\n");
		return 1;
	}
	sp->inproc = keychar;	/* Intercept ^C */
	if((s = socket(AF_AX25,SOCK_STREAM,0)) == -1){
		printf("Can't create socket\n");
		freesession(sp);
		keywait(NULL,1);
		return 1;
	}
	fsocket.sax_family = AF_AX25;
	setcall(fsocket.ax25_addr,argv[2]);
	strncpy(fsocket.iface,argv[1],ILEN);
	sp->network = fdopen(s,"r+t");
	setvbuf(sp->network,NULL,_IOLBF,BUFSIZ);
	if(SETSIG(EABORT)){
		keywait(NULL,1);
		freesession(sp);
		return 1;
	}
	return tel_connect(sp, (struct sockaddr *)&fsocket, sizeof(struct sockaddr_ax));
}

/* Display and modify AX.25 routing table */
static int
doaxroute(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	char tmp[AXBUF];
	int i,ndigis;
	register struct ax_route *axr;
	uint8 target[AXALEN],digis[MAXDIGIS][AXALEN];

	if(argc < 2){
		printf("Target    Type   Digipeaters\n");
		for(axr = Ax_routes;axr != NULL;axr = axr->next){
			printf("%-10s%-6s",pax25(tmp,axr->target),
			 axr->type == AX_LOCAL ? "Local":"Auto");
			for(i=0;i<axr->ndigis;i++){
				printf(" %s",pax25(tmp,axr->digis[i]));
			}
			printf("\n");
		}
		return 0;
	}
	if(argc < 3){
		printf("Usage: ax25 route add <target> [digis...]\n");
		printf("       ax25 route drop <target>\n");
		return 1;
	}
	if(setcall(target,argv[2]) == -1){
		printf("Bad target %s\n",argv[2]);
		return 1;
	}
	switch(argv[1][0]){
	case 'a':	/* Add route */
		if(argc < 3){
			printf("Usage: ax25 route add <target> [digis...]\n");
			return 1;
		}
		ndigis = argc - 3;
		if(ndigis > MAXDIGIS){
			printf("Too many digipeaters\n");
			return 1;
		}
		for(i=0;i<ndigis;i++){
			if(setcall(digis[i],argv[i+3]) == -1){
				printf("Bad digipeater %s\n",argv[i+3]);
				return 1;
			}
		}
		if(ax_add(target,AX_LOCAL,digis,ndigis) == NULL){
			printf("Failed\n");
			return 1;
		}
		break;
	case 'd':	/* Drop route */
		if(ax_drop(target) == -1){
			printf("Not in table\n");
			return 1;
		}
		break;
	default:
		printf("Unknown command %s\n",argv[1]);
		return 1;
	}
	return 0;
}
static int
keychar(c)
int c;
{
	if(c != CTLC)
		return 1;	/* Ignore all but ^C */

	fprintf(Current->output,"^C\n");
	alert(Current->proc,EABORT);
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区观看 | 久久久久88色偷偷免费| 777xxx欧美| 久久久不卡影院| 一区二区在线观看免费视频播放 | 亚洲一区二区在线免费观看视频| 一区二区成人在线| 国产老妇另类xxxxx| 欧洲色大大久久| 国产视频一区二区在线观看| 性欧美大战久久久久久久久| 丰满放荡岳乱妇91ww| 欧美一卡2卡3卡4卡| 国产精品久久网站| 国内精品伊人久久久久影院对白| 91精品办公室少妇高潮对白| 国产欧美日韩在线| 麻豆精品一二三| 欧美在线一二三四区| 国产精品免费人成网站| 久久精品国产亚洲一区二区三区| 91高清视频免费看| 国产精品福利影院| 国产成人aaa| 久久精品欧美日韩| 97超碰欧美中文字幕| 精品国产91乱码一区二区三区| 午夜精品爽啪视频| 色婷婷综合久久久久中文| 欧美激情一区二区三区蜜桃视频| 乱中年女人伦av一区二区| 制服丝袜亚洲网站| 香蕉影视欧美成人| 精品视频1区2区| 亚洲欧美视频在线观看| 成人网男人的天堂| 欧美激情一区二区三区四区| 国产一区美女在线| 久久久久久久久久久久久夜| 久久不见久久见中文字幕免费| 91精品国产综合久久精品app| 伊人夜夜躁av伊人久久| 欧美中文字幕一二三区视频| 亚洲精选一二三| 色综合中文字幕国产 | www.欧美亚洲| 亚洲欧洲99久久| 99re这里都是精品| 一区二区在线电影| 欧美日韩大陆在线| 久久精品国产亚洲一区二区三区| 免费在线观看视频一区| 99久久夜色精品国产网站| 久久精品视频在线免费观看| 国产麻豆午夜三级精品| 国产欧美1区2区3区| 成人av在线资源网| 一区二区三区欧美日韩| 欧美午夜在线一二页| 婷婷久久综合九色综合绿巨人| 69久久99精品久久久久婷婷 | 九九国产精品视频| 国产欧美精品区一区二区三区| 粉嫩欧美一区二区三区高清影视 | 欧美国产综合一区二区| 91麻豆福利精品推荐| 亚洲成av人片一区二区梦乃| 成人在线综合网站| 亚洲男人的天堂一区二区| 欧美午夜精品久久久久久超碰 | 日本一区二区久久| 色噜噜偷拍精品综合在线| 午夜亚洲福利老司机| 久久毛片高清国产| 91小视频免费观看| 理论电影国产精品| 亚洲欧美电影一区二区| 91精品欧美综合在线观看最新 | 91蜜桃在线观看| 免费国产亚洲视频| 亚洲欧美在线aaa| 91精品午夜视频| 99精品热视频| 九一久久久久久| 夜夜揉揉日日人人青青一国产精品| 制服丝袜成人动漫| 亚洲一区欧美一区| 精品乱码亚洲一区二区不卡| 成人aa视频在线观看| 日本不卡的三区四区五区| 欧美韩国一区二区| 日韩午夜在线观看| 色香色香欲天天天影视综合网| 日韩高清电影一区| 亚洲精品乱码久久久久久久久| 精品久久久三级丝袜| 精品视频在线免费观看| 99国产精品国产精品毛片| 91麻豆免费看| 国产福利一区二区| 亚洲午夜精品17c| 中文字幕免费不卡| 久久蜜桃av一区精品变态类天堂| 91精品国产91热久久久做人人| 肉肉av福利一精品导航| 亚洲日本青草视频在线怡红院| 日韩欧美一区在线| 7777精品伊人久久久大香线蕉| 99国产精品久久久久久久久久 | 男女男精品视频网| 亚洲欧美电影院| 国产精品久久久久久久岛一牛影视 | 床上的激情91.| 激情综合网天天干| 青青草成人在线观看| 亚洲成人av中文| 亚洲精品第一国产综合野| 成人免费在线视频观看| 国产精品三级电影| 欧美激情中文不卡| 国产精品免费av| 中文字幕久久午夜不卡| 国产精品视频第一区| 国产午夜精品久久久久久久| 国产人成亚洲第一网站在线播放| 欧美成人乱码一区二区三区| 日韩欧美aaaaaa| 精品成人佐山爱一区二区| 久久先锋资源网| 久久久91精品国产一区二区精品 | 91成人在线精品| 色一情一乱一乱一91av| 91福利在线免费观看| 精品视频一区二区不卡| 欧美精品一卡二卡| 日韩欧美成人激情| 国产亚洲一区二区在线观看| 欧美国产精品一区| 亚洲精品成人在线| 天天色天天爱天天射综合| 秋霞电影网一区二区| 精品亚洲国内自在自线福利| 国产大陆亚洲精品国产| eeuss影院一区二区三区 | 日本一区二区三区四区| 综合自拍亚洲综合图不卡区| 尤物在线观看一区| 麻豆久久久久久| 国产精品888| 91在线观看污| 欧美精品123区| 久久精品夜夜夜夜久久| 亚洲乱码中文字幕综合| 日韩电影一区二区三区四区| 国产精品香蕉一区二区三区| 不卡一二三区首页| 这里只有精品免费| 国产午夜亚洲精品午夜鲁丝片| 亚洲三级在线看| 日韩av一区二区三区四区| 国产成人高清视频| 欧美日韩不卡一区二区| 久久久噜噜噜久噜久久综合| 成人免费在线播放视频| 美女视频黄免费的久久| 高清国产一区二区| 在线不卡免费欧美| 国产精品久久久久久久久免费樱桃| 亚洲一区二三区| 国产成人精品在线看| 欧美日韩一区二区不卡| 亚洲国产成人私人影院tom | 99精品久久久久久| 欧美一级理论性理论a| 亚洲人午夜精品天堂一二香蕉| 免费成人在线观看视频| 色综合久久久久| 久久精品水蜜桃av综合天堂| 日韩精品91亚洲二区在线观看| 成人午夜激情在线| 精品欧美黑人一区二区三区| 亚洲午夜一二三区视频| 成人丝袜视频网| 欧美精品一区二区三区蜜臀| 伊人婷婷欧美激情| 成人a免费在线看| 日韩精品一区二区三区四区视频| 夜夜精品浪潮av一区二区三区| 丰满放荡岳乱妇91ww| 精品三级在线看| 日韩中文欧美在线| 欧美视频你懂的| 亚洲色欲色欲www在线观看| 国产精品亚洲专一区二区三区 | 一本色道综合亚洲| 国产精品美女视频| 国产不卡免费视频| 久久亚洲精品国产精品紫薇| 免费观看久久久4p| 欧美丰满美乳xxx高潮www|