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

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

?? datagram.c

?? 嵌入式小型TCPIP協議棧
?? C
?? 第 1 頁 / 共 2 頁
字號:
            printf("Can't open net driver '%s'\n", netcfg);
        else
        {                                           /* Save ether address */
            memcpy(np->mac, ether_addr(dtype), MACLEN);
            np->dtype = dtype;                      /* ..and driver type */
            b = (BYTE)(np->ip >> 24);
            if (read_cfgstr(fname, "mask", temps, 30))
                np->mask = atoip(temps);            /* Get netmask */
            else
                np->mask = b<128 ? 0xff000000L: b<192 ? 0xffff0000L:0xffffff00L;
            if (read_cfgstr(fname, "gate", temps, 30))
                np->gate = atoip(temps);            /* Get gateway IP addr */
            else
                np->gate = 0;
        }
    }
    return(dtype);
}

/* Return ptr to local node 'n' (n=0 for first), return 0 if doesn't exist
** Used by IP functions to get my netmask & gateway addresses */
NODE *locnode_n(int n)
{
    return(n==0 ? &locnode : 0);
}

/* Check for incoming packets, send response if required
** Return state-change value if ARP response or datagram received */
int do_receive(GENFRAME *gfp)
{
    NODE node;
    ARPKT *arp;
    IPKT *ip;
    ICMPKT *icmp;
    int rxlen, txlen, len, ret=0;

    if ((rxlen=get_frame(gfp)) > 0)                 /* Any incoming frames? */
    {
        ip = getframe_datap(gfp);
        if (is_arp(gfp, rxlen))
        {                                           /* ARP response? */
            arp = getframe_datap(gfp);
            if (arp->op==ARPREQ && arp->dip==locnode.ip)
            {                                       /* ARP request? */
                node.ip = arp->sip;                 /* Make ARP response */
                memcpy(node.mac, arp->smac, MACLEN);
                txlen = make_arp(gfp, &locnode, &node, ARPRESP);
                put_frame(gfp, txlen);              /* Send packet */
            }
            if (arp->op==ARPRESP && arp->dip==locnode.ip)
            {                                       /* ARP response? */
                memcpy(remnode.mac, arp->smac, MACLEN);
                ret = ARP_RX;
            }
        }
        else if ((rxlen=is_ip(gfp, rxlen))!=0 &&    /* IP datagram? */
                 ip->i.dip==locnode.ip || ip->i.dip==BCASTIP)
        {
            getip_srce(gfp, &node);
            if ((len=is_icmp(ip, rxlen))!=0)        /* ICMP? */
            {
                icmp = (ICMPKT *)ip;
                if (icmp->c.type == ICREQ)          /* Echo request? */
                {
                    len = (WORD)maxi(len, 0);       /* Make response */
                    txlen = make_icmp(gfp, &locnode, &node, ICREP,
                                      icmp->c.code, (WORD)len);
                    put_frame(gfp, txlen);          /* Send packet */
                }
                else if (icmp->c.type == ICUNREACH)
                    printf("ICMP: destination unreachable\n");
            }
            else if ((len=is_udp(ip, rxlen))!=0)    /* UDP? */
            {
                ret = udp_receive(gfp, maxi(len, 0));
            }
        }
    }
    return(ret);
}

/* Receive a UDP datagram: return non-0 if client state-change */
int udp_receive(GENFRAME *gfp, int len)
{
    UDPKT *udp;
    int ret=0;
    NODE loc, rem;
    char temps[30];
    time_t t;

    udp = getframe_datap(gfp);
    getudp_srce(gfp, &rem);                         /* Get srce & dest nodes */
    getudp_locdest(gfp, &loc);
    if (loc.port == locnode.port)                   /* Client response */
    {
        disp_data(udp->data, len);                  /* Display data.. */
        ret = CLIENT_DONE;                          /* ..and exit */
    }
    else if (loc.port == ECHOPORT)                  /* Echo req: resend data */
        udp_transmit(gfp, &loc, &rem, udp->data, len);
    else if (loc.port == DAYPORT)                   /* Daytime req: get date */
    {
        time(&t);                                   /* Get standard string */
        strcpy(temps, ctime(&t));
        strcpy(&temps[24], "\r\n");                 /* Patch newline chars */
        udp_transmit(gfp, &loc, &rem, (BYTE *)temps, 26);
    }
    else                                            /* Unreachable: send ICMP */
    {
        swap_udp(udp);
        put_frame(gfp, icmp_unreach(gfp, &loc, &rem, UNREACH_PORT));
    }
    return(ret);
}

/* Send a UDP datagram, given destination node, data and length */
void udp_transmit(GENFRAME *gfp, NODE *sp, NODE *dp, void *dat, int len)
{
    UDPKT *udp;

    udp = getframe_datap(gfp);
    memmove(udp->data, dat, len);
    put_frame(gfp, make_udp(gfp, sp, dp, (WORD)maxi(len, 0)));
}

/* Send a UDP datagram, given destination node, data and length */
void udp_transmit_file(GENFRAME *gfp, NODE *sp, NODE *dp, FILE *in)
{
    UDPKT *udp;
    WORD len;

    udp = getframe_datap(gfp);
    len = fread(udp->data, 1, sizeof(udp->data), in);
    put_frame(gfp, make_udp(gfp, sp, dp, len));
}

/* Poll the network interface to keep it alive */
void do_poll(GENFRAME *gfp)
{
    poll_net(gfp->g.dtype);
}

/* Convert string (numeric or alphabetic) into a port number, 0 if error */
WORD str2service(char *str)
{
    WORD port=0;

    if (isdigit(*str))
        port = atoi(str);
    else if (!stricmp(str, "echo"))
        port = ECHOPORT;
    else if (!stricmp(str, "daytime"))
        port = DAYPORT;
    else if (!stricmp(str, "time"))
        port = TIMEPORT;
    else if (!stricmp(str, "snmp"))
        port = SNMPORT;
    return(port);
}

/* Display the incoming UDP data */
void disp_data(BYTE *data, int len)
{
    BYTE b;
    int i, n, oset=0;

    if (!binmode)
    {
        while (len--)
        {
            b = *data++;
            if ((b>=' '&&b<='~') || b=='\n')
                putchar(b);
            else
                putchar(' ');
        }
    }
    else while (len > 0)
    {
        n = mini(len, 24);
        printf("%04X: ", oset);
        for (i=0; i<n; i++)
            printf("%02X ", data[i]);
        printf("\n      ");
        for (i=0; i<n; i++, data++)
        {
            putchar(' ');
            putchar(*data>=' ' && *data<='~' ? *data : 0);
            putchar(' ');
        }
        len -= n;
        oset += n;
        putchar('\n');
    }
}

/* Display usage help */
void disp_usage(void)
{
    printf("Usage:    DATAGRAM [options] [IP_addr [portnum [data]]]\n");
    printf("                    Default port number is %u\n", DEFPORT);
    printf("Options:  -b        Binary data (hexadecimal data display)\n");
    printf("          -i name   Input data filename\n");
    printf("          -c name   Config filename (default %s)\n", cfgfile);
    printf("          -u        UDP datagram display\n");
    printf("          -v        Verbose (frame) display\n\n");
    printf("Example:  DATAGRAM -c test.cfg 10.1.1.1 echo \"test string\"\n");
}

/* Ctrl-break handler: set flag and return */
void break_handler(int sig)
{
    breakflag = sig;
}

/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色丁香婷婷综合久久片| 欧美激情一区二区在线| 亚洲成人av中文| 欧美中文字幕亚洲一区二区va在线 | 欧美日韩成人综合天天影院 | 一个色综合网站| 欧美日韩五月天| 视频一区二区国产| 2020日本不卡一区二区视频| 国产精品一区二区在线观看网站 | 亚洲精品网站在线观看| 欧美性大战久久久| 日本大胆欧美人术艺术动态 | 中文字幕第一区第二区| 99视频精品在线| 午夜视频在线观看一区二区| 日韩写真欧美这视频| 国产福利一区在线| 一区二区三区高清| 精品日韩在线观看| 91在线精品一区二区三区| 午夜久久福利影院| 国产精品私人影院| 欧美精品日韩精品| 国产ts人妖一区二区| 亚洲一区二区精品久久av| 日韩美女一区二区三区四区| 99视频一区二区| 美国毛片一区二区| 亚洲欧美色一区| 精品日韩欧美在线| 欧美色成人综合| 国产成人午夜片在线观看高清观看| 亚洲欧美一区二区三区国产精品| 51精品国自产在线| 色综合中文字幕国产| 日韩高清在线观看| 亚洲欧美国产高清| 久久精品一区二区| 欧美一级免费大片| 色哟哟日韩精品| 国产91精品精华液一区二区三区| 午夜精品福利视频网站| 国产精品成人午夜| 久久一留热品黄| 欧美精品乱人伦久久久久久| 99热精品一区二区| 国产一区二区三区四区五区入口| 亚洲一区二区三区四区五区中文| 国产日韩成人精品| 欧美电影免费观看高清完整版| 色网站国产精品| www.久久久久久久久| 国产一区二区视频在线播放| 天堂久久一区二区三区| 亚洲一区二区美女| 亚洲永久精品国产| 亚洲视频一二三区| 亚洲欧洲成人自拍| 国产精品无人区| 国产情人综合久久777777| 日韩欧美一区二区免费| 欧美高清激情brazzers| 欧美日韩日本视频| 欧美亚洲丝袜传媒另类| 色av成人天堂桃色av| 高清不卡在线观看| 高潮精品一区videoshd| 国产91露脸合集magnet| 国产精品一区二区久久精品爱涩 | 国产精品天美传媒| 久久久久久97三级| 久久精品夜色噜噜亚洲a∨| 精品国产乱码久久久久久闺蜜| 制服丝袜一区二区三区| 制服.丝袜.亚洲.另类.中文| 欧美日韩国产经典色站一区二区三区 | 精品99久久久久久| 2019国产精品| 国产女同性恋一区二区| 日本一区二区不卡视频| 国产精品久久久久久久久晋中| 中文字幕国产一区二区| 国产精品久久一卡二卡| 亚洲色图丝袜美腿| 亚洲成人福利片| 午夜免费久久看| 麻豆高清免费国产一区| 国产又粗又猛又爽又黄91精品| 国产成人亚洲精品狼色在线| 成人免费高清在线观看| 色综合一区二区| 欧美一区二视频| xfplay精品久久| 国产精品毛片久久久久久| 最新国产成人在线观看| 亚洲国产精品人人做人人爽| 无码av免费一区二区三区试看| 麻豆91精品视频| 国产成人福利片| 91美女视频网站| 91精品国产综合久久久蜜臀图片 | 国产精品久久久久久福利一牛影视 | 久久嫩草精品久久久久| 欧美激情综合在线| 亚洲精品乱码久久久久久久久| 午夜不卡在线视频| 国内精品不卡在线| 91香蕉视频在线| 日韩午夜精品视频| 国产精品理论在线观看| 性做久久久久久免费观看| 国产精品一区在线| 在线观看亚洲精品视频| 精品日本一线二线三线不卡| √…a在线天堂一区| 日韩不卡免费视频| 成人高清免费观看| 欧美一区二区三区免费大片| 国产日韩欧美激情| 日韩一区欧美二区| 97久久精品人人爽人人爽蜜臀| 欧美日韩国产成人在线91| 亚洲国产精品精华液2区45| 亚洲综合在线五月| 国产精品香蕉一区二区三区| 91福利国产精品| 国产精品日产欧美久久久久| 污片在线观看一区二区| 91伊人久久大香线蕉| 精品国产sm最大网站| 亚洲午夜精品网| 不卡一二三区首页| 久久久久亚洲综合| 美女网站在线免费欧美精品| 色8久久人人97超碰香蕉987| 精品电影一区二区| 日韩精品免费专区| 欧美性猛交xxxxxx富婆| 中文在线资源观看网站视频免费不卡 | 亚洲精品在线观| 午夜精品成人在线| 欧美在线短视频| 中文字幕一区二区三区在线不卡| 精品一区二区三区免费毛片爱| 欧美日韩视频专区在线播放| 亚洲欧美日韩国产另类专区| 国产精品一区久久久久| 久久综合九色综合欧美98 | 黄色精品一二区| 555www色欧美视频| 午夜精品一区二区三区电影天堂| 91免费国产在线| 日韩理论片在线| 色国产综合视频| 亚洲天堂免费看| av午夜一区麻豆| 国产精品久久久久久久久图文区 | 久久久影视传媒| 国产一区二区三区av电影| 精品少妇一区二区三区日产乱码 | 7777精品伊人久久久大香线蕉| 亚洲乱码国产乱码精品精小说| av在线这里只有精品| 欧美国产禁国产网站cc| 高清成人免费视频| 《视频一区视频二区| 91一区二区在线观看| 亚洲欧美日韩电影| 在线免费一区三区| 亚洲国产精品久久人人爱蜜臀 | 美女视频黄a大片欧美| 日韩三级视频在线观看| 麻豆精品精品国产自在97香蕉| 欧美电影免费观看高清完整版在 | 国内精品国产成人国产三级粉色| 久久综合国产精品| 国产成人综合亚洲网站| 国产精品素人一区二区| 94色蜜桃网一区二区三区| 亚洲欧洲综合另类在线| 欧美日韩在线播放| 美女性感视频久久| 中文字幕国产一区| 欧洲精品一区二区| 日韩电影网1区2区| 久久一日本道色综合| 成人精品视频一区| 一区二区三区久久久| 在线成人av网站| 国产一区激情在线| 亚洲人成人一区二区在线观看| 欧美日韩精品免费观看视频| 久久99深爱久久99精品| 国产精品不卡在线观看| 在线免费亚洲电影| 国产尤物一区二区| 一区二区三区产品免费精品久久75| 制服丝袜中文字幕一区| 成人免费黄色在线|