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

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

?? tipmail.c

?? 這是新華龍(www.xhl.xom.xn)開發(fā)的
?? C
字號:
/* "Dumb terminal" mailbox interface
 */
#include "global.h"
#include "mbuf.h"
#include "timer.h"
#include "proc.h"
#include "iface.h"
#ifndef	UNIX
#include "n8250.h"
#endif
#include "asy.h"
#include "socket.h"
#include "usock.h"
#include "telnet.h"
#include "mailbox.h"
#include "tipmail.h"
#include "devparam.h"

static struct tipcb {
	struct tipcb *next;
	struct proc *proc;
	struct proc *in;
	struct iface *iface;
	int (*rawsave)(struct iface *,struct mbuf **);
	FILE *network;
	int echo;
	struct timer timer;
} *Tiplist;
#define	NULLTIP	(struct tipcb *)0

static void tip_in(int dev,void *n1,void *n2);
static void tipidle(void *t);

unsigned Tiptimeout = 180;	/* Default tip inactivity timeout (seconds) */

/* Input process */
static void
tip_in(dev,n1,n2)
int dev;
void *n1,*n2;
{
	struct tipcb *tip;
	struct mbuf *bp;
	char *buf[2], line[MBXLINE];
	int c, ret, pos = 0;

	tip = (struct tipcb *) n1;
	while((c = get_asy(dev)) != -1){
		Asy[dev].iface->lastrecv = secclock();
		ret = 0;
		if(tip->echo == WONT){
			switch(c){
			case 18:	/* CTRL-R */
				bp = NULL;
				pushdown(&bp,line,pos);
				pushdown(&bp,"^R\r\n",4);
				ret = 1;
				break;
			case 0x7f:	/* DEL */
			case '\b':
				bp = NULL;
				if(pos){
					--pos;
					bp = qdata("\b \b",3);
				}
				ret = 1;
				break;
			case '\r':
				c = '\n';	/* CR => NL */
			case '\n':
				bp = qdata("\r\n",2);
				break;
			default:
				bp = NULL;
				pushdown(&bp,NULL,1);
				*bp->data = c;
				break;
			}
			asy_send(dev,&bp);
			tip->iface->lastsent = secclock();
			if(ret)
				continue;
		}
		line[pos++] = c;
		if(pos == MBXLINE - 1 || tip->echo == WILL
		  || c == '\n'){
			line[pos] = '\0';
			pos = 0;
			fputs(line,tip->network);
			fflush(tip->network);
		}
	}
	/* get_asy() failed, terminate */
	fclose(tip->network);
	tip->in = tip->proc;
	tip->proc = Curproc;
	buf[1] = Asy[dev].iface->name;
	tip0(2,buf,NULL);
}
/* Start mailbox on serial line */
int
tipstart(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct iface *ifp;
	register struct asy *ap;
	struct tipcb *tip;
	struct mbuf *bp;
	char *buf[2];
	int dev, c, cmd, s[2], type = TIP;

	if((ifp = if_lookup(argv[1])) == NULL){
		printf("Interface %s unknown\n",argv[1]);
		return 1;
	}
	for(dev=0,ap = Asy;dev < ASY_MAX;dev++,ap++)
		if(ap->iface == ifp)
			break;
	if(dev == ASY_MAX){
		printf("Interface %s not asy port\n",argv[1]);
		return 1;
	}
	if(ifp->raw == bitbucket){
		printf("Tip session already active on %s\n",argv[1]);
		return 1;
	}
	ksignal(Curproc,0);	/* Don't keep the parser waiting */
	chname(Curproc,"Mbox tip");
	tip = (struct tipcb *) callocw(1,sizeof(struct tipcb));

	/* Save output handler and temporarily redirect output to null */
	tip->rawsave = ifp->raw;
	ifp->raw = bitbucket;
	tip->iface = ifp;
	tip->proc = Curproc;
	tip->timer.func = tipidle;
	tip->timer.arg = (void *) tip;
	tip->next = Tiplist;
	Tiplist = tip;
	buf[1] = ifp->name;

	/* Suspend packet input drivers */
	suspend(ifp->rxproc);

	for(;;) {
		/* Wait for DCD to be asserted */
		get_rlsd_asy(dev,1);

		if(socketpair(AF_LOCAL,SOCK_STREAM,0,s) == -1){
			printf("Could not create socket pair, errno %d\n",errno);
			tip0(2,buf,p);
			return 1;
		}
		tip->echo = WONT;
		tip->network = fdopen(s[0],"r+t");
		newproc("mbx_incom",2048,mbx_incom,s[1],(void *)type,NULL,0);
		set_timer(&tip->timer,Tiptimeout*1000);
		start_timer(&tip->timer);

		/* Now fork into two paths, one rx, one tx */
		tip->in = newproc("Mbox tip in",
				256,tip_in,dev,(void *)tip,NULL,0);
		while((c = getc(tip->network)) != -1) {
			if(c == IAC){	/* ignore most telnet options */
				if((cmd = getc(tip->network)) == -1)
					break;
				if(cmd > 250 && cmd < 255) {
					if((c = getc(tip->network)) == -1)
						break;
					switch(cmd){
					case WILL:
						if(c == TN_ECHO) {
							tip->echo = cmd;
							cmd = DO;
						}
						else
							cmd = DONT;
						break;
					case WONT:
						if(c == TN_ECHO)
							tip->echo = cmd;
						cmd = DONT;
						break;
					case DO:
					case DONT:
						cmd = WONT;
						break;
					}
					fprintf(tip->network,"%c%c%c",IAC,cmd,c);
					fflush(tip->network);
				}
				continue;
			}
			if(c == '\n')
				bp = qdata("\r\n",2);
			else {
				bp = NULL;
				pushdown(&bp,NULL,1);
				*bp->data = c;
			}
			asy_send(dev,&bp);
			ifp->lastsent = secclock();
		}
		fclose(tip->network);
		killproc(tip->in);
		tip->in = NULL;
		kwait(itop(s[1])); /* let mailbox terminate, if necessary */
		stop_timer(&tip->timer);

		/* Tell line to go down */
		ifp->ioctl(ifp,PARAM_DOWN,TRUE,0L);

		/* Wait for DCD to be dropped */
		get_rlsd_asy(dev,0);
	}
}
int
tip0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct iface *ifp;
	struct tipcb *tip, *prev = NULLTIP;
	struct proc *proc;

	if((ifp = if_lookup(argv[1])) == NULL){
		printf("Interface %s unknown\n",argv[1]);
		return 1;
	}
	for(tip = Tiplist; tip != NULLTIP; prev = tip, tip = tip->next)
		if(tip->iface == ifp) {
			if(prev != NULLTIP)
				prev->next = tip->next;
			else
				Tiplist = tip->next;
			proc = tip->proc;
			fclose(tip->network);
			ifp->raw = tip->rawsave;
			resume(ifp->rxproc);
			stop_timer(&tip->timer);
			killproc(tip->in);
			free(tip);
			killproc(proc);
			return 0;
		}
	return 0;
}
static void
tipidle(t)
void *t;
{
	struct tipcb *tip;
	static char *msg = "You have been idle too long. Please hang up.\r\n";
	struct mbuf *bp;
	tip = (struct tipcb *) t;
	if(secclock() - tip->iface->lastrecv < Tiptimeout){
		set_timer(&tip->timer,(Tiptimeout-secclock() *
		 tip->iface->lastrecv)*1000);
		start_timer(&tip->timer);
		return;
	}
	bp = qdata(msg,strlen(msg));
	asy_send(tip->iface->dev,&bp);
	tip->iface->lastsent = secclock();
	fclose(tip->network);
}

static int Stelnet = -1;

/* Start up Telnet server */
int
telnet1(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct sockaddr_in lsocket;
	int s;
	int type;

	if(Stelnet != -1){
		return 0;
	}
	ksignal(Curproc,0); 	/* Don't keep the parser waiting */
	chname(Curproc,"Telnet listener");

	lsocket.sin_family = AF_INET;
	lsocket.sin_addr.s_addr = INADDR_ANY;
	if(argc < 2)
		lsocket.sin_port = IPPORT_TELNET;
	else
		lsocket.sin_port = atoi(argv[1]);
	Stelnet = socket(AF_INET,SOCK_STREAM,0);
	bind(Stelnet,(struct sockaddr *)&lsocket,sizeof(lsocket));
	listen(Stelnet,1);
	for(;;){
		if((s = accept(Stelnet,NULL,(int *)NULL)) == -1)
			break;	/* Service is shutting down */

		if(availmem() != 0){
			shutdown(s,1);
		} else {
			/* Spawn a server */
			type = TELNET;
			newproc("mbox",2048,mbx_incom,s,(void *)type,NULL,0);
		}
	}
	return 0;
}
/* Stop telnet server */
int
telnet0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	close_s(Stelnet);
	Stelnet = -1;
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看亚洲精品视频| 美女免费视频一区二区| 亚洲bt欧美bt精品777| 极品少妇一区二区三区精品视频| 成人深夜在线观看| 日韩精品一区二区三区老鸭窝| 亚洲人成人一区二区在线观看 | 久久综合九色综合97婷婷| **欧美大码日韩| 国产综合久久久久影院| 欧美美女直播网站| 亚洲精品欧美二区三区中文字幕| 国产在线乱码一区二区三区| 欧洲另类一二三四区| 亚洲天堂网中文字| 国产91高潮流白浆在线麻豆| 日韩精品一区二区三区在线| 午夜精品在线视频一区| 色88888久久久久久影院按摩| 国产精品网站导航| 国内外成人在线| 精品久久久三级丝袜| 视频一区在线视频| 欧美日本不卡视频| 亚洲一区二区三区爽爽爽爽爽| 91丝袜高跟美女视频| 国产精品视频一二三区| 国产丶欧美丶日本不卡视频| 精品国产91九色蝌蚪| 久久99久国产精品黄毛片色诱| 91精品国产麻豆国产自产在线 | 国产精品欧美精品| 成人免费观看男女羞羞视频| 国产欧美日韩在线观看| 福利一区在线观看| 中文字幕在线视频一区| av一区二区三区在线| 亚洲婷婷国产精品电影人久久| 国产91精品一区二区| 国产精品丝袜久久久久久app| 成人精品国产福利| 久久99精品久久只有精品| 在线播放中文字幕一区| 蜜臀a∨国产成人精品| 精品成a人在线观看| 国产精品一区久久久久| 国产欧美日韩三区| 91丨九色porny丨蝌蚪| 亚洲一区二区黄色| 日韩一二三四区| 国产精品乡下勾搭老头1| 国产精品私人影院| 欧美在线观看视频在线| 日本va欧美va瓶| 久久亚洲影视婷婷| 91最新地址在线播放| 亚洲伦理在线精品| 91精品国产综合久久久久久久| 裸体健美xxxx欧美裸体表演| 久久久高清一区二区三区| av电影天堂一区二区在线观看| 亚洲欧美成aⅴ人在线观看| 69成人精品免费视频| 国产精品系列在线观看| 一区二区三区**美女毛片| 欧美一级黄色录像| 不卡视频一二三| 日本vs亚洲vs韩国一区三区二区 | 久久伊99综合婷婷久久伊| 成人免费毛片片v| 偷窥国产亚洲免费视频| 久久久精品国产免费观看同学| 成人黄色软件下载| 秋霞电影网一区二区| 国产精品美女久久久久aⅴ国产馆| 在线免费精品视频| 国产99一区视频免费| 午夜精品在线看| 国产精品免费免费| 欧美xingq一区二区| 国产人久久人人人人爽| 欧美视频中文字幕| 丁香一区二区三区| 麻豆成人综合网| 亚洲国产日韩在线一区模特| 久久久国产精品不卡| 欧美一区二区三区日韩视频| 不卡电影一区二区三区| 国模少妇一区二区三区| 青娱乐精品视频| 亚洲一区在线观看免费观看电影高清| 国产日韩欧美精品一区| 日韩欧美综合在线| 欧美精品三级日韩久久| 99riav久久精品riav| 国产精品一区一区| 久久精品国产久精国产爱| 亚洲高清在线精品| 一区二区三区蜜桃| **网站欧美大片在线观看| 久久你懂得1024| 精品久久国产老人久久综合| 欧美日本韩国一区二区三区视频| 色拍拍在线精品视频8848| 成人晚上爱看视频| 成人黄页在线观看| 国产老肥熟一区二区三区| 精品一区二区三区香蕉蜜桃 | 久久99久久99精品免视看婷婷| 亚洲成人av资源| 亚洲一区二区三区三| 亚洲黄一区二区三区| 亚洲免费电影在线| 国产suv一区二区三区88区| 九九国产精品视频| 九色综合国产一区二区三区| 久久精品国产第一区二区三区| 五月天激情小说综合| 日韩国产欧美在线观看| 午夜电影一区二区三区| 日本成人超碰在线观看| 视频在线观看一区二区三区| 日本三级亚洲精品| 老汉av免费一区二区三区| 美国三级日本三级久久99 | 成人精品高清在线| youjizz久久| 91在线免费看| 欧美日韩一区二区在线观看 | 久久久久国色av免费看影院| 国产亚洲女人久久久久毛片| 国产日韩av一区| 亚洲伦理在线精品| 日韩中文字幕不卡| 国产精品一区二区在线看| 成人午夜电影小说| 91国偷自产一区二区三区成为亚洲经典| 91久久香蕉国产日韩欧美9色| 欧美日韩国产成人在线免费| 日韩一级黄色片| 国产日韩一级二级三级| 国产精品国产a级| 亚洲国产综合在线| 激情欧美一区二区三区在线观看| 国产91精品一区二区麻豆网站| 91久久人澡人人添人人爽欧美| 91麻豆精品国产| 国产色一区二区| 亚洲国产一区二区三区青草影视 | 一区二区三区色| 久久精工是国产品牌吗| 成人成人成人在线视频| 91超碰这里只有精品国产| 国产日韩av一区二区| 亚洲午夜久久久久| 国产a久久麻豆| 777a∨成人精品桃花网| 国产精品乱人伦中文| 免费精品视频在线| 91免费观看视频在线| 亚洲在线视频网站| 狠狠色综合播放一区二区| 一本久久a久久免费精品不卡| 欧美成人a视频| 亚洲国产精品久久人人爱| 国产激情视频一区二区在线观看| 欧美日韩一本到| 中文字幕中文字幕在线一区| 久久成人羞羞网站| 欧美久久一区二区| 亚洲伦理在线精品| 成人精品亚洲人成在线| 亚洲精品一区在线观看| 亚洲妇女屁股眼交7| 成人av影视在线观看| 精品国产伦理网| 日韩在线一二三区| 在线看国产一区二区| 国产精品美女久久久久高潮| 国产一区二三区好的| 欧美一区二区免费视频| 亚洲一区二区高清| 色哟哟欧美精品| 国产精品日产欧美久久久久| 国产高清成人在线| 精品蜜桃在线看| 美女www一区二区| 日韩一区二区三区电影在线观看 | 91一区二区在线| 国产精品国产三级国产aⅴ中文| 国产一区在线观看视频| 日韩欧美在线网站| 免费在线一区观看| 日韩一区二区免费视频| 丝瓜av网站精品一区二区| 欧美午夜在线观看| 亚洲va欧美va人人爽| 欧洲精品中文字幕| 亚洲成人av一区二区三区| 欧美亚洲丝袜传媒另类|