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

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

?? host.c

?? dos 下 網絡協議 dos 下 網絡協議
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <copyright.h>
#include <stdio.h>
#include <string.h>
#include <tcp.h>

/* domain name server protocol
 *
 * This portion of the code needs some major work.  I ported it (read STOLE IT)
 * from NCSA and lost about half the code somewhere in the process.
 *
 * Note, this is a user level process.  We include <tcp.h> not <wattcp.h>
 *
 *  0.2 : Apr 24, 1991 - use substring portions of domain
 *  0.1 : Mar 18, 1991 - improved the trailing domain list
 *  0.0 : Feb 19, 1991 - pirated by Erick Engelke
 * -1.0 :              - NCSA code
 */


/* These next 'constants' are loaded from WATTCP.CFG file */

extern char *def_domain;
extern char *loc_domain;       /* current subname to be used by the domain system */

extern longword def_nameservers[ MAX_NAMESERVERS ];
extern int _last_nameserver;
extern word _domaintimeout = 0;

static longword timeoutwhen;

/*
longword def_nameserver;
longword def2_nameserver;
*/
static udp_Socket *dom_sock;

#define DOMSIZE 512				/* maximum domain message size to mess with */

/*
 *  Header for the DOMAIN queries
 *  ALL OF THESE ARE BYTE SWAPPED QUANTITIES!
 *  We are the poor slobs who are incompatible with the world's byte order
 */
struct dhead {
    word	ident,		/* unique identifier */
		flags,
		qdcount,	/* question section, # of entries */
		ancount,	/* answers, how many */
		nscount,	/* count of name server RRs */
		arcount;	/* number of "additional" records */
};

/*
 *  flag masks for the flags field of the DOMAIN header
 */
#define DQR		0x8000	/* query = 0, response = 1 */
#define DOPCODE		0x7100	/* opcode, see below */
#define DAA		0x0400	/* Authoritative answer */
#define DTC		0x0200	/* Truncation, response was cut off at 512 */
#define DRD		0x0100	/* Recursion desired */
#define DRA		0x0080	/* Recursion available */
#define DRCODE		0x000F	/* response code, see below */

/* opcode possible values: */
#define DOPQUERY	0	/* a standard query */
#define DOPIQ           1       /* an inverse query */
#define DOPCQM		2	/* a completion query, multiple reply */
#define DOPCQU		3     	/* a completion query, single reply */
/* the rest reserved for future */

/* legal response codes: */
#define DROK	0		/* okay response */
#define DRFORM	1		/* format error */
#define DRFAIL	2		/* their problem, server failed */
#define DRNAME	3		/* name error, we know name doesn't exist */
#define DRNOPE	4		/* no can do request */
#define DRNOWAY	5		/* name server refusing to do request */

#define DTYPEA		1	/* host address resource record (RR) */
#define DTYPEPTR	12	/* a domain name ptr */

#define DIN		1	/* ARPA internet class */
#define DWILD		255	/* wildcard for several of the classifications */

/*
 *  a resource record is made up of a compressed domain name followed by
 *  this structure.  All of these ints need to be byteswapped before use.
 */
struct rrpart {
    word   	rtype,		/* resource record type = DTYPEA */
		rclass;		/* RR class = DIN */
    longword	ttl;		/* time-to-live, changed to 32 bits */
    word	rdlength;	/* length of next field */
    byte 	rdata[DOMSIZE];	/* data field */
};

/*
 *  data for domain name lookup
 */
static struct useek {
    struct dhead h;
    byte         x[DOMSIZE];
} *question;


/*********************************************************************/
/*  packdom
*   pack a regular text string into a packed domain name, suitable
*   for the name server.
*
*   returns length
*/
static packdom(dst,src)
char *src,*dst;
{
    char *p,*q,*savedst;
    int i,dotflag,defflag;

    p = src;
    dotflag = defflag = 0;
    savedst = dst;

    do {			/* copy whole string */
	*dst = 0;
	q = dst + 1;
	while (*p && (*p != '.'))
	    *q++ = *p++;

	i = p - src;
	if (i > 0x3f)
	    return(-1);
	*dst = i;
	*q = 0;

	if (*p) {					/* update pointers */
	    dotflag = 1;
	    src = ++p;
	    dst = q;
	}
	else if (!dotflag && !defflag && loc_domain) {
	    p = loc_domain;		/* continue packing with default */
	    defflag = 1;
	    src = p;
	    dst = q;
	}
    }
    while (*p);
    q++;
    return(q-savedst);			/* length of packed string */
}

/*********************************************************************/
/*  unpackdom
*  Unpack a compressed domain name that we have received from another
*  host.  Handles pointers to continuation domain names -- buf is used
*  as the base for the offset of any pointer which is present.
*  returns the number of bytes at src which should be skipped over.
*  Includes the NULL terminator in its length count.
*/
static unpackdom(dst,src,buf)
char *src,*dst,buf[];
{
    int i,j,retval;
    char *savesrc;

    savesrc = src;
    retval = 0;

    while (*src) {
	j = *src;

	while ((j & 0xC0) == 0xC0) {
	    if (!retval)
		retval = src-savesrc+2;
	    src++;
	    src = &buf[(j & 0x3f)*256+*src];		/* pointer dereference */
	    j = *src;
	}

	src++;
	for (i=0; i < (j & 0x3f) ; i++)
	    *dst++ = *src++;

	*dst++ = '.';
    }

    *(--dst) = 0;			/* add terminator */
    src++;					/* account for terminator on src */

    if (!retval)
	retval = src-savesrc;

    return(retval);
}

/*********************************************************************/
/*  sendom
*   put together a domain lookup packet and send it
*   uses port 53
*	num is used as identifier
*/
static sendom(s,towho,num)
char *s;
longword towho;
word num;
{
    word i,ulen;
    byte *psave,*p;

    psave = (byte*)&(question->x);
    i = packdom(&(question->x),s);

    p = &(question->x[i]);
    *p++ = 0;				/* high byte of qtype */
    *p++ = DTYPEA;			/* number is < 256, so we know high byte=0 */
    *p++ = 0;				/* high byte of qclass */
    *p++ = DIN;				/* qtype is < 256 */

    question->h.ident = intel16(num);
    ulen = sizeof(struct dhead)+(p-psave);

    udp_open( dom_sock, 997, towho, 53, NULL );    /* divide err */

    sock_write( dom_sock, question, ulen );
    return( ulen);
}


/*********************************************************************/
/*  senrdom
*   put together a reverse domain lookup packet and send it
*   uses port 53
*	num is used as identifier
*/
static sendrdom(char *s, longword towhom, word num )
{
    word i,ulen;
    byte *psave,*p;



    psave = (byte*)&(question->x);
    i = packdom(&(question->x),s);

    p = &(question->x[i]);
    *p++ = 0;				/* high byte of qtype */
    *p++ = DTYPEA;                      /* want host address */
    *p++ = 0;				/* high byte of qclass */
    *p++ = DIN;				/* qtype is < 256 */

    question->h.ident = intel16(num);
    ulen = sizeof(struct dhead)+(p-psave);

    udp_open( dom_sock, 997, towho, 53, NULL );    /* divide err */

    sock_write( dom_sock, question, ulen );
    return( ulen);
}

static int countpaths(pathstring)
char *pathstring;
{
    int     count = 0;
    char    *p;

    for(p=pathstring; (*p != 0) || (*(p+1) != 0); p++) {
	if(*p == 0)
	    count++;
    }
    return(++count);
}

static char *getpath(pathstring,whichone)
char *pathstring;            /* the path list to search      */
int   whichone;               /* which path to get, starts at 1 */
{
    char    *retval;

    if(whichone > countpaths(pathstring))
	return(NULL);
    whichone--;
    for(retval = pathstring;whichone ; retval++ ) {
	if(*retval == 0)
	    whichone--;
    }
    return(retval);
}

/*********************************************************************/
/*  ddextract
*   extract the ip number from a response message.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美日韩| 亚洲欧美一区二区久久| 51午夜精品国产| 欧美群妇大交群的观看方式| 91久久精品一区二区三区| 在线观看一区日韩| 欧美日韩久久一区二区| 欧美精品 日韩| 91精品国产色综合久久不卡电影| 51精品国自产在线| 日韩一区二区免费在线电影| xvideos.蜜桃一区二区| 中文字幕精品一区| 日韩美女视频一区二区| 亚洲精品水蜜桃| 午夜精品爽啪视频| 久久69国产一区二区蜜臀| 国精产品一区一区三区mba桃花 | 亚洲免费在线观看| 亚洲一级二级在线| 日韩在线卡一卡二| 国产在线精品一区二区不卡了| 国产不卡视频在线观看| 色综合久久久久综合体| 91麻豆精品久久久久蜜臀| 精品福利在线导航| 国产精品国产三级国产aⅴ中文| 亚洲九九爱视频| 五月婷婷久久丁香| 国产福利视频一区二区三区| 99精品黄色片免费大全| 3d动漫精品啪啪| 久久蜜桃一区二区| 亚洲天堂a在线| 日韩av在线播放中文字幕| 国产精品综合一区二区| 色琪琪一区二区三区亚洲区| 欧美一区二区三区的| 国产无人区一区二区三区| 亚洲精品国久久99热| 七七婷婷婷婷精品国产| 成人丝袜高跟foot| 在线成人免费视频| 国产欧美一区二区精品性色| 亚洲一级在线观看| 国产精品亚洲成人| 欧美亚洲一区二区在线| 久久久青草青青国产亚洲免观| 一级中文字幕一区二区| 狠狠色狠狠色合久久伊人| 91女神在线视频| 欧美va天堂va视频va在线| 国产99久久久国产精品免费看| 日本高清不卡aⅴ免费网站| 日韩欧美不卡在线观看视频| 亚洲精品中文字幕在线观看| 精品亚洲成a人| 欧美三级电影在线观看| 国产日韩欧美制服另类| 麻豆国产精品一区二区三区| 一本大道av伊人久久综合| 日韩欧美一二区| 亚洲一区二区3| av影院午夜一区| 久久久精品日韩欧美| 视频一区二区三区在线| 91视频一区二区三区| 久久嫩草精品久久久久| 日韩电影免费在线看| 欧美综合一区二区三区| 国产精品久久久久久久午夜片| 久久国产夜色精品鲁鲁99| 欧美日本免费一区二区三区| 亚洲欧美区自拍先锋| 成人av免费观看| 久久午夜色播影院免费高清| 日本不卡视频一二三区| 欧美日韩在线播放三区四区| 亚洲婷婷在线视频| 国产69精品久久久久777| 欧美xxxx老人做受| 免费观看成人鲁鲁鲁鲁鲁视频| 欧洲在线/亚洲| 日韩美女视频19| av一区二区三区在线| 国产精品青草综合久久久久99| 韩国精品在线观看| 精品黑人一区二区三区久久 | 欧美日韩午夜在线| 亚洲另类一区二区| 色综合久久天天综合网| 亚洲日穴在线视频| 色综合视频在线观看| 亚洲视频综合在线| 91在线云播放| 亚洲视频免费在线观看| 色综合久久久网| 亚洲精品视频一区二区| 色网综合在线观看| 亚洲日本成人在线观看| 97se亚洲国产综合自在线| 亚洲欧洲精品天堂一级 | 亚洲特黄一级片| 91蝌蚪porny九色| 亚洲欧美成人一区二区三区| www.99精品| 亚洲欧美另类图片小说| 在线观看日韩高清av| 亚洲国产精品一区二区久久| 欧美三级电影一区| 蜜臀久久久99精品久久久久久| 日韩欧美一二区| 国产美女视频一区| 国产精品色呦呦| 国产精品免费久久久久| 97se亚洲国产综合自在线观| 一区二区三区精密机械公司| 欧美美女激情18p| 久久国产精品一区二区| 久久精品一区二区三区不卡牛牛 | 91免费国产视频网站| 一区二区高清免费观看影视大全| 欧美日韩国产另类一区| 另类小说视频一区二区| 国产欧美日韩不卡免费| 91在线码无精品| 午夜av电影一区| 久久久亚洲精品石原莉奈| 成人高清视频在线观看| 亚洲国产成人精品视频| 精品乱人伦一区二区三区| 国产成人精品综合在线观看 | 丁香激情综合国产| 亚洲精品中文字幕在线观看| 91精品国产综合久久精品麻豆 | 91丨九色丨国产丨porny| 亚洲一区二区视频在线观看| 欧美一级一区二区| 粉嫩蜜臀av国产精品网站| 亚洲欧美乱综合| 欧美电视剧免费全集观看| 国产a精品视频| 婷婷六月综合亚洲| 国产亚洲精品超碰| 欧美日韩亚洲高清一区二区| 国产精品一级黄| 亚洲国产精品自拍| 久久久久国产成人精品亚洲午夜| 色综合久久久久久久久| 美洲天堂一区二卡三卡四卡视频| 国产精品国产三级国产a| 欧美人伦禁忌dvd放荡欲情| 成人午夜在线播放| 舔着乳尖日韩一区| 国产精品美女一区二区| 91精品久久久久久久99蜜桃| 99久久婷婷国产综合精品| 美国三级日本三级久久99| 亚洲丝袜精品丝袜在线| 精品av综合导航| 欧洲一区二区三区在线| 国产91丝袜在线播放0| 婷婷中文字幕综合| 亚洲日穴在线视频| 久久久国际精品| 欧美一区二区免费观在线| 日本久久电影网| 大胆欧美人体老妇| 免费观看在线色综合| 一区二区欧美视频| 国产精品日日摸夜夜摸av| 日韩限制级电影在线观看| 色94色欧美sute亚洲线路一ni| 国产精品亚洲午夜一区二区三区| 日韩电影一区二区三区四区| 亚洲欧美日韩成人高清在线一区| 国产丶欧美丶日本不卡视频| 日本欧美一区二区三区| 亚洲国产中文字幕在线视频综合| 国产农村妇女精品| 26uuu精品一区二区在线观看| 在线综合+亚洲+欧美中文字幕| 一本大道av一区二区在线播放 | 久久久久九九视频| 日韩午夜在线观看| 制服丝袜日韩国产| 91国偷自产一区二区三区观看 | 精品久久一二三区| 欧美一区二区在线视频| 欧美视频中文字幕| 在线观看欧美日本| 一本久久综合亚洲鲁鲁五月天| 成人激情午夜影院| 大白屁股一区二区视频| 国产精品自产自拍| 国产精品一区二区在线观看网站| 久久99国内精品| 国产在线看一区| 极品少妇xxxx精品少妇| 精品一区二区三区蜜桃|