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

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

?? dns.c

?? 完整的Bell實驗室的嵌入式文件系統TFS
?? C
字號:
/* dns.c: *  Support a basic DNS query. *  NOT READY YET!!! * *  General notice: *  This code is part of a boot-monitor package developed as a generic base *  platform for embedded system designs.  As such, it is likely to be *  distributed to various projects beyond the control of the original *  author.  Please notify the author of any enhancements made or bugs found *  so that all may benefit from the changes.  In addition, notification back *  to the author will allow the new user to pick up changes that may have *  been made by other users after this version of the code was distributed. * *  Note1: the majority of this code was edited with 4-space tabs. *  Note2: as more and more contributions are accepted, the term "author" *         is becoming a mis-representation of credit. * *  Original author:    Ed Sutter *  Email:              esutter@lucent.com *  Phone:              908-582-2351 */#include "config.h"#if INCLUDE_DNSQUERY#include "endian.h"#include "genlib.h"#include "ether.h"#include "stddefs.h"#include "cli.h"char *DnsHelp[] = {    "DNS query",    "-[c:d:f:v:] {operation} [args]",    "Options...",    " -c {#}    echo count",    " -d {#}    delta (hours) relative to GMT",    " -f {x|d}  hex or decimal output (default is ascii)",    " -r        check server resolution",    " -v {var}  load result in shellvar 'var'",    "Operations...",    " time {IP}",    " echo {IP}",    "Notes...",    " If '.ns' is appended to time, then time is non-standard.",    " The 'dfrv' options are used by icmp time, option 'c' is used by echo.",    0,};intDns(int argc,char *argv[]){    int     timestamp, hour, min, sec, opt, gmt_delta, timeout, count;    char    *varname, format, *nonstandard, *operation, *ipadd;    uchar   binip[8], binenet[8], buf[32];    ushort  seqno;    gmt_delta = 0;    count = 1;    varname = (char *)0;    format = 'a';    nonstandard = "";    CheckSrvrResolution = 0;    while ((opt=getopt(argc,argv,"c:d:f:rv:")) != -1) {        switch(opt) {        case 'c':   /* count used by ping */            count = strtol(optarg,(char **)0,0);            break;        case 'd':   /* difference between this time zone and Greenwich */            gmt_delta = strtol(optarg,(char **)0,0);            break;        case 'f':            format = *optarg;            break;        case 'r':            CheckSrvrResolution = 1;            break;        case 'v':            varname = optarg;            break;        default:            return(CMD_PARAM_ERROR);        }    }    if (argc == optind)        return(-1);    operation = argv[optind];    ipadd = argv[optind+1];        /* If time or echo, do the common up-front stuff here... */    if (!strcmp(operation,"time") || !strcmp(operation,"echo")) {        if (argc != optind + 2)            return(CMD_PARAM_ERROR);        /* Convert IP address to binary: */        if (IpToBin(ipadd,binip) < 0)            return(CMD_SUCCESS);    }    if (!strcmp(operation, "time")) {        /* Get the ethernet address for the IP: */        if (!ArpEther(binip,binenet,0)) {            printf("ARP failed for %s\n",ipadd);            return(CMD_FAILURE);        }        ICMPTimeStamp = INVALID_TIMESTAMP;        SendICMPRequest(ICMP_TIMEREQUEST,binip,binenet,0,0);        /* Timeout waiting for timestamp after waiting about 2 seconds. */        timeout = LoopsPerSecond * 2;        while(timeout > 0) {            pollethernet();            timeout--;            if (ICMPTimeStamp != INVALID_TIMESTAMP)                break;        }        if (timeout == 0) {            printf("No response\n");            return(CMD_FAILURE);        }        if (ICMPTimeStamp & NONSTANDARD_TIMESTAMP) {            ICMPTimeStamp &= ~NONSTANDARD_TIMESTAMP;            nonstandard = ".ns";        }        if (format == 'a') {            timestamp = ICMPTimeStamp + (gmt_delta*MSECS_PER_HOUR);            hour = timestamp/MSECS_PER_HOUR;            timestamp -= hour*MSECS_PER_HOUR;            min = timestamp/MSECS_PER_MINUTE;            timestamp -= min*MSECS_PER_MINUTE;            sec = timestamp/MSECS_PER_SECOND;            timestamp -= sec*MSECS_PER_SECOND;            sprintf(buf,"%02d:%02d:%02d.%03d%s",hour,min,sec,timestamp,                nonstandard);        }        else if (format == 'x')            sprintf(buf,"0x%lx%s",ICMPTimeStamp,nonstandard);        else if (format == 'd')            sprintf(buf,"%ld%s",ICMPTimeStamp,nonstandard);        else            return(CMD_PARAM_ERROR);        if (varname)            setenv(varname,buf);        else if (!CheckSrvrResolution)            printf("%s\n",buf);        CheckSrvrResolution = 0;    }    else if (!strcmp(operation, "echo")) {        seqno = 0;        while (count-- > 0) {            /* Is this a self-ping? */            if (memcmp(binip,BinIpAddr,4) == 0) {                printf("Yes, I am alive!\n");                break;            }            /* Get the ethernet address for the IP: */            if (!ArpEther(binip,binenet,0)) {                printf("ARP failed for %s\n",ipadd);                continue;            }            ICMPEchoReplyId = 0;            SendICMPRequest(ICMP_ECHOREQUEST,binip,binenet,0,seqno);            /* Timeout waiting for reply after waiting about 2 secs. */            timeout = LoopsPerSecond * 2;            while(timeout > 0) {                pollethernet();                timeout--;                if (ICMPEchoReplyId == ICMP_ECHO_ID)                    break;            }            if (timeout == 0)                printf("no answer from %s\n",ipadd);            else {                printf("%s is alive",ipadd);                if (count) {                    printf(" icmp_seq=%d",ICMPSeqNoRcvd);                    timeout = LoopsPerSecond;                    while(timeout-- > 0)                        pollethernet();                    seqno++;                }                printf("\n");            }        }    }    else        printf("Unrecognized ICMP op: %s\n",operation);    return(CMD_SUCCESS);}intprocessDNS(struct ether_header *ehdr,ushort size){    struct  ip *ipp;    struct  icmp_hdr *icmpp;    int len, i;    ipp = (struct ip *)(ehdr + 1);    /* Compute size of ICMP message (IP len - size of IP header): */    len = ipp->ip_len - ((ipp->ip_vhl & 0x0f) * 4);    icmpp = (struct icmp_hdr *)((char *)ipp+IP_HLEN(ipp));    if (icmpp->type == ICMP_ECHOREQUEST) {      /* 3rdEd Comer pg 127 */        SendEchoResp(ehdr);        return(0);    }    else if (icmpp->type == ICMP_ECHOREPLY) {        struct icmp_echo_hdr *icmpecho;        icmpecho = (struct icmp_echo_hdr *)icmpp;        ICMPEchoReplyId = ecs(icmpecho->id);        ICMPSeqNoRcvd = ecs(icmpecho->seq);    }    else if (icmpp->type == ICMP_DESTUNREACHABLE) { /* 3rdEd Comer pg 129 */        if (EtherVerbose & SHOW_INCOMING) {            i = icmpp->code;            if ((i > 5) || (i < 0))                i = 6;            printf("  ICMP: %s (code=%d)\n",                IcmpDestUnreachableCode[i],icmpp->code);        }        return(0);    }    else if (icmpp->type == ICMP_TIMEREPLY) {        struct icmp_time_hdr *icmptime;        ulong orig, recv, xmit;        icmptime = (struct icmp_time_hdr *)icmpp;        memcpy((char *)&orig,(char *)&icmptime->orig,4);        memcpy((char *)&recv,(char *)&icmptime->recv,4);        memcpy((char *)&xmit,(char *)&icmptime->xmit,4);        ICMPSeqNoRcvd = icmptime->seq;        if (EtherVerbose & SHOW_INCOMING) {            printf("    ICMP_TIMEREPLY: orig=0x%lx,recv=0x%lx,xmit=0x%lx\n",                orig,recv,xmit);        }        if (CheckSrvrResolution) {            static int ICMPTimeStampTbl[20];                if (icmptime->seq < 20) {                ICMPTimeStampTbl[icmptime->seq] = xmit;                SendICMPRequest(ICMP_TIMEREQUEST,(uchar *)&ipp->ip_src,                    (uchar *)&ehdr->ether_shost,0,icmptime->seq+1);            } else {                                printf("TS00: %d\n",ICMPTimeStampTbl[0]);                for(i=1;i<20;i++) {                    printf("TS%02d: %d (dlta=%d)\n",i,                        ICMPTimeStampTbl[i],                        ICMPTimeStampTbl[i]-ICMPTimeStampTbl[i-1]);                }                ICMPTimeStamp = xmit;            }        }        else {            ICMPTimeStamp = xmit;        }    }    else {        if (EtherVerbose & SHOW_INCOMING) {            printf("    ICMPTYPE=%d\n",icmpp->type);        }        return(-1);    }    return(0);}/* SendDNSQuery(): */intSendDNSQuery(ulong addr,char *tftpsrvr,char *mode, char *hostfile,char *tfsfile,    char *tfsflags,char *tfsinfo){    int     done;    char    buf[32];    uchar   binip[8], binenet[8], *enetaddr;    setenv("TFTPGET",0);    /* Convert IP address to binary: */    if (IpToBin(tftpsrvr,binip) < 0)        return(0);    /* Get the ethernet address for the IP: */    /* Give ARP the same verbosity (if any) set up for TFTP: */    if (EtherVerbose & SHOW_TFTP)        EtherVerbose |= SHOW_ARP;    enetaddr = ArpEther(binip,binenet,0);    EtherVerbose &= ~SHOW_ARP;    if (!enetaddr) {        printf("ARP failed for %s\n",tftpsrvr);        return(0);    }    /* Initialize the retransmission delay calculator: */    RetransmitDelay(DELAY_INIT_TFTP);    printf("Retrieving %s from %s...",hostfile,tftpsrvr);    if (EtherVerbose & SHOW_TFTP)        printf("\n");    /* Send the TFTP RRQ to initiate the transfer. */    if (SendTFTPRRQ(binip,binenet,hostfile,mode,(uchar *)addr) < 0) {        printf("RRQ failed\n");        return(0);    }    /* Wait for TftpState to indicate that the transaction has completed... */    done = 0;    while(!done) {        pollethernet();        switch(TftpState) {            case TFTPIDLE:                printf(" %d bytes",TftpCount);                done = 1;                break;            case TFTPERROR:                printf(" host error: %s\n",TftpErrString);                done = 2;                break;            case TFTPTIMEOUT:                printf(" timing out (%d bytes rcvd)\n",TftpCount);                done = 2;                break;            default:                break;        }    }    if (done == 2)        return(0);    if (tfsfile) {        int err, filesize;        filesize = TftpCount - TftpChopCount;        printf("\nAdding %s (size=%d) to TFS...",tfsfile,filesize);        err = tfsadd(tfsfile,tfsinfo,tfsflags,(uchar *)addr,filesize);        if (err != TFS_OKAY)            printf("%s: %s\n",tfsfile,(char *)tfsctrl(TFS_ERRMSG,err,0));    }    printf("\n");    sprintf(buf,"%d",TftpCount);    setenv("TFTPGET",buf);    return(TftpCount);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线无精精品入口| 午夜精品福利一区二区蜜股av| 国产精品麻豆久久久| ...xxx性欧美| 图片区小说区国产精品视频| 久久精品99国产精品日本| 国产激情一区二区三区| 91论坛在线播放| 在线综合视频播放| 国产精品―色哟哟| 亚洲电影一区二区三区| 国产在线看一区| 91美女精品福利| 欧美精品一区二区三区视频| 亚洲婷婷国产精品电影人久久| 日韩精品久久久久久| 成人伦理片在线| 8v天堂国产在线一区二区| 国产日韩精品一区二区浪潮av| 一区二区三区电影在线播| 久久精品国产一区二区| 99re亚洲国产精品| 精品捆绑美女sm三区| 亚洲乱码国产乱码精品精小说| 精品中文字幕一区二区| 色天天综合色天天久久| 久久久久久免费网| 午夜伦欧美伦电影理论片| 成人福利视频网站| 日韩亚洲欧美高清| 亚洲一二三专区| 国产suv精品一区二区三区| 欧美一三区三区四区免费在线看| 亚洲视频免费观看| 国产精品一二三| 91精品欧美综合在线观看最新| 亚洲男人的天堂av| 国产91在线观看丝袜| 欧美一区二区三区的| 亚洲午夜精品久久久久久久久| 成人高清在线视频| 国产亚洲精品超碰| 美女久久久精品| 欧美另类久久久品| 亚洲精品成a人| 国产91丝袜在线播放| 精品久久久久av影院| 午夜精品久久久久| 欧美亚洲图片小说| 1024成人网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品一品二品| 日韩精品一区二区三区四区视频| 婷婷开心激情综合| 欧美三级日韩三级| 一级特黄大欧美久久久| 色婷婷综合久色| |精品福利一区二区三区| 成人av先锋影音| 中文字幕国产一区| 福利电影一区二区| 国产日韩欧美一区二区三区综合| 久久97超碰色| 精品久久久久久久久久久院品网 | 91精品在线观看入口| 亚洲成av人**亚洲成av**| 欧美体内she精视频| 亚洲一区视频在线观看视频| 91官网在线免费观看| 亚洲永久精品国产| 欧美性生活久久| 午夜伊人狠狠久久| 91精品国产免费久久综合| 蜜乳av一区二区三区| 日韩精品一区二区三区在线播放| 另类小说一区二区三区| 精品久久久三级丝袜| 激情综合色丁香一区二区| 精品国产一区久久| 国产精品自在在线| 国产精品天美传媒沈樵| 成年人国产精品| 洋洋av久久久久久久一区| 欧美亚洲一区二区三区四区| 日韩精品亚洲专区| 精品久久久久久无| 成人免费看黄yyy456| 亚洲激情第一区| 欧美日韩二区三区| 美日韩一区二区三区| 久久精品水蜜桃av综合天堂| jlzzjlzz国产精品久久| 亚洲一区二三区| 欧美一区二区三区四区高清| 麻豆精品在线观看| 国产色一区二区| 色婷婷综合久久久久中文| 亚洲成人综合视频| 欧美videossexotv100| 国产成人久久精品77777最新版本| |精品福利一区二区三区| 欧美日韩精品一二三区| 国产一区二区三区久久悠悠色av| 中文字幕国产一区二区| 欧洲精品中文字幕| 免费在线观看视频一区| 国产日韩视频一区二区三区| 色八戒一区二区三区| 免费成人av在线| 国产精品国产三级国产普通话99 | 日韩成人午夜电影| 国产午夜精品美女毛片视频| 91丝袜美腿高跟国产极品老师| 婷婷久久综合九色国产成人| 久久精品一区二区| 色综合一区二区| 日本欧美在线看| 国产精品久久久久精k8 | 国内精品不卡在线| 亚洲色图制服诱惑| 日韩一区二区在线免费观看| 波多野结衣的一区二区三区| 日本中文字幕不卡| **欧美大码日韩| 日韩三级视频在线观看| 99精品黄色片免费大全| 免费的成人av| 亚洲日本中文字幕区| 欧美大尺度电影在线| 日本高清不卡一区| 国产精品一二三四| 视频一区二区中文字幕| 1024成人网色www| 久久久精品影视| 666欧美在线视频| 91蜜桃网址入口| 国产精品自拍av| 欧美aaaaaa午夜精品| 亚洲精品一二三四区| 国产人久久人人人人爽| 69堂成人精品免费视频| 99精品欧美一区| 国内精品第一页| 全部av―极品视觉盛宴亚洲| 亚洲美女淫视频| 国产精品无码永久免费888| 日韩欧美国产综合在线一区二区三区| 91论坛在线播放| 福利电影一区二区三区| 激情文学综合网| 欧美a级一区二区| 午夜精品一区二区三区电影天堂| 国产精品超碰97尤物18| 国产无人区一区二区三区| 日韩欧美不卡在线观看视频| 欧美精三区欧美精三区| 在线视频一区二区三区| bt欧美亚洲午夜电影天堂| 国产精品一二三| 极品少妇xxxx偷拍精品少妇| 丝袜美腿亚洲一区二区图片| 一区二区三区资源| 亚洲欧美区自拍先锋| 国产精品毛片大码女人| 国产欧美日韩精品a在线观看| 精品奇米国产一区二区三区| 555www色欧美视频| 3d成人动漫网站| 欧美日本乱大交xxxxx| 欧美系列亚洲系列| 欧美色网站导航| 91福利社在线观看| 91传媒视频在线播放| 91视频精品在这里| 色婷婷亚洲精品| 91国偷自产一区二区使用方法| 色综合色狠狠综合色| 99久久国产免费看| 一本大道综合伊人精品热热| 99国产精品国产精品毛片| 91网站视频在线观看| 色哟哟精品一区| 在线免费不卡电影| 欧美少妇一区二区| 欧美日韩夫妻久久| 欧美一级高清片| 精品国产免费久久| 久久久久久久久岛国免费| 久久久噜噜噜久久中文字幕色伊伊| 久久久久久夜精品精品免费| 中文字幕乱码久久午夜不卡| 中文字幕av一区 二区| 日韩一区日韩二区| 亚洲一二三四区| 日韩黄色片在线观看| 激情文学综合插| 成人av高清在线| 在线亚洲人成电影网站色www| 欧美日韩国产在线播放网站| 日韩欧美中文字幕一区|