亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品一区二区三区香蕉蜜桃| 欧美视频完全免费看| 欧洲一区二区三区免费视频| 日韩欧美一级二级三级| 亚洲黄色性网站| 高清国产一区二区| 日韩一区二区三区av| 一级做a爱片久久| av中文字幕不卡| 久久免费偷拍视频| 麻豆中文一区二区| 欧美日韩精品电影| 亚洲精品va在线观看| 不卡的av中国片| 国产色一区二区| 国产中文字幕一区| 欧美精品一区二区三区视频| 亚洲成人av一区二区| 在线观看成人免费视频| 国产精品电影一区二区三区| 国产成人亚洲综合色影视| 精品久久人人做人人爰| 免费亚洲电影在线| 91麻豆精品国产91久久久久久久久| 一区二区三区av电影| 一本大道久久a久久精品综合| 亚洲国产成人午夜在线一区| 国产盗摄精品一区二区三区在线| 国产亚洲一区二区三区| 韩国一区二区在线观看| 欧美成人乱码一区二区三区| 亚洲国产美女搞黄色| 欧美性猛交xxxx黑人交| 亚洲一二三四久久| 欧美综合一区二区| 亚洲高清免费视频| 91麻豆精品国产91久久久久久久久| 午夜婷婷国产麻豆精品| 69精品人人人人| 久久精品国产一区二区三| 日韩一区二区三区免费观看| 久草中文综合在线| 久久久久九九视频| 99在线视频精品| 一区二区免费在线| 91精品免费观看| 久久99久国产精品黄毛片色诱| 久久香蕉国产线看观看99| 国产91清纯白嫩初高中在线观看 | 欧美xxxxxxxxx| 国产一区二区不卡| 国产精品理论在线观看| 日本韩国精品在线| 免费久久精品视频| 国产精品白丝在线| 欧美撒尿777hd撒尿| 九九在线精品视频| 综合自拍亚洲综合图不卡区| 欧美亚洲国产一区二区三区va| 亚洲国产一区视频| 2023国产精品自拍| 日本高清不卡视频| 精久久久久久久久久久| 精品99久久久久久| 一区二区三区成人在线视频| 欧美卡1卡2卡| 国产精品一区专区| 一区二区三区高清| 久久精品视频一区二区| 91美女片黄在线观看91美女| 免费视频最近日韩| 亚洲欧美一区二区三区孕妇| 日韩限制级电影在线观看| www.日韩在线| 国内成人免费视频| 一个色综合网站| 中文字幕 久热精品 视频在线| 欧美天堂一区二区三区| 国产1区2区3区精品美女| 日韩成人免费电影| ●精品国产综合乱码久久久久| 91精品国产综合久久精品app| 成人av午夜电影| 免费看日韩精品| 亚洲一区影音先锋| 国产精品人妖ts系列视频| 日韩一区二区三| 欧美美女网站色| 色爱区综合激月婷婷| 国产精品白丝jk白祙喷水网站| 天天操天天干天天综合网| 亚洲欧美日韩在线| 久久精品欧美一区二区三区不卡 | 在线一区二区观看| 国产成人a级片| 久久精品国产**网站演员| 日欧美一区二区| 伊人婷婷欧美激情| 一区在线观看视频| 中文字幕+乱码+中文字幕一区| 精品国产电影一区二区| 欧美一区二区三区系列电影| 欧美综合色免费| 欧美影院精品一区| 91网上在线视频| 色呦呦国产精品| 99re这里都是精品| 不卡的av在线| 99精品热视频| 色婷婷av一区| 91久久香蕉国产日韩欧美9色| 91亚洲男人天堂| 91丨九色丨黑人外教| 9i看片成人免费高清| 成人午夜在线视频| 成人国产视频在线观看| 成人app网站| 91蜜桃网址入口| 91麻豆国产香蕉久久精品| 99re热这里只有精品视频| 99精品欧美一区二区三区小说| gogogo免费视频观看亚洲一| 99久久er热在这里只有精品15| 91猫先生在线| 欧美日韩免费一区二区三区| 欧美日韩日日夜夜| 日韩欧美一区二区免费| 久久综合成人精品亚洲另类欧美 | 精品成a人在线观看| 国产亚洲一区二区三区在线观看| 欧美国产乱子伦 | 久久精品网站免费观看| 日本一区二区电影| 一区二区三区四区视频精品免费| 亚洲国产中文字幕在线视频综合| 奇米在线7777在线精品| 国产精品一级片| eeuss鲁片一区二区三区在线看| 在线免费观看日韩欧美| 日韩一区二区三区免费看| 国产无一区二区| 亚洲精品久久7777| 毛片基地黄久久久久久天堂| 高潮精品一区videoshd| 欧美性做爰猛烈叫床潮| 精品黑人一区二区三区久久| 国产精品久久久久影院老司| 亚洲国产精品久久久男人的天堂| 青娱乐精品在线视频| 粉嫩aⅴ一区二区三区四区| 欧洲生活片亚洲生活在线观看| 91精选在线观看| 亚洲国产精品ⅴa在线观看| 午夜精品福利一区二区蜜股av| 国产成人精品免费看| 欧美人与z0zoxxxx视频| 久久久久久久久久久电影| 亚洲综合色视频| 国产成人高清在线| 91精品国产综合久久久久久久| 1区2区3区欧美| 国产真实乱偷精品视频免| 精品视频一区 二区 三区| 欧美极品美女视频| 七七婷婷婷婷精品国产| 色噜噜狠狠成人网p站| 国产日韩三级在线| 日本欧美大码aⅴ在线播放| 色综合天天综合给合国产| 久久影院电视剧免费观看| 亚洲va在线va天堂| 99国产精品久久久久久久久久| 精品精品国产高清a毛片牛牛 | 欧美亚洲高清一区| 欧美国产精品中文字幕| 久草精品在线观看| 91精品国产91久久久久久最新毛片| 亚洲欧美一区二区视频| 国产精品99久久久久久久vr| 欧美男生操女生| 亚洲一区免费视频| 91亚洲资源网| ...av二区三区久久精品| 国产精品性做久久久久久| 欧美不卡视频一区| 日产国产欧美视频一区精品| 精品视频一区三区九区| 亚洲综合色在线| 欧美偷拍一区二区| 亚洲综合男人的天堂| 色999日韩国产欧美一区二区| 自拍偷在线精品自拍偷无码专区| 国产成人精品亚洲午夜麻豆| 久久中文字幕电影| 国产精品主播直播| 一区二区激情小说| 欧美日韩一区二区三区视频| 悠悠色在线精品| 欧美天堂亚洲电影院在线播放| 一区二区三区在线视频观看|