亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
狠狠v欧美v日韩v亚洲ⅴ| 亚洲最新在线观看| 美女爽到高潮91| 日韩你懂的电影在线观看| 老汉av免费一区二区三区| 欧美大片在线观看| 国产成人h网站| 国产欧美中文在线| 99热国产精品| 天天操天天色综合| 欧美大片在线观看| 丁香婷婷深情五月亚洲| 亚洲激情在线播放| 在线观看91精品国产麻豆| 久久99精品久久久久久动态图| 国产视频911| 91麻豆国产精品久久| 偷偷要91色婷婷| 久久久91精品国产一区二区精品| 99精品偷自拍| 日本麻豆一区二区三区视频| 国产欧美日韩三级| 欧美在线观看你懂的| 精品一区二区三区在线播放视频| 国产精品女同互慰在线看| 色综合久久综合网| 激情欧美一区二区| 夜夜嗨av一区二区三区四季av| 欧美大片国产精品| 91九色最新地址| 国产一区二区三区免费在线观看| 《视频一区视频二区| 欧美一区二区人人喊爽| www.在线成人| 麻豆中文一区二区| 亚洲视频免费在线观看| 精品国产自在久精品国产| 色久综合一二码| 国产精品2024| 日韩精品久久理论片| 亚洲国产精品t66y| 日韩欧美的一区| 欧美色综合天天久久综合精品| 国产精品原创巨作av| 日韩av中文字幕一区二区| 亚洲激情av在线| 国产日韩成人精品| 日韩一级视频免费观看在线| 欧美在线观看一区二区| 99久久伊人久久99| 国产成人精品免费在线| 奇米色777欧美一区二区| 亚洲与欧洲av电影| 最近日韩中文字幕| 国产精品美女视频| 久久久久国产免费免费| 欧美草草影院在线视频| 欧美另类高清zo欧美| 在线日韩一区二区| 97se亚洲国产综合在线| 日韩高清不卡一区二区| 国产精品久久久久久亚洲毛片 | 91精品国产91久久久久久最新毛片 | 奇米777欧美一区二区| 亚洲欧洲精品天堂一级| 精品国一区二区三区| 欧美日韩视频在线一区二区| av中文字幕一区| 国产精品1区2区| 日日噜噜夜夜狠狠视频欧美人| 亚洲精品水蜜桃| 国产精品久久毛片av大全日韩| 精品剧情在线观看| 欧美另类一区二区三区| 在线视频综合导航| 色综合久久天天| 成人国产精品免费网站| 国产专区综合网| 久久精品久久久精品美女| 亚洲人被黑人高潮完整版| 日韩理论电影院| 一区在线观看视频| 久久这里只有精品视频网| 7777精品伊人久久久大香线蕉的| 在线视频欧美区| 在线观看国产日韩| 在线欧美日韩精品| 日本精品免费观看高清观看| 97久久超碰国产精品| 91免费视频大全| 99久久精品免费| av欧美精品.com| 91亚洲大成网污www| 91亚洲精品久久久蜜桃| 97精品久久久久中文字幕| 91美女蜜桃在线| 色婷婷精品大在线视频| 在线看国产日韩| 欧美久久婷婷综合色| 欧美日韩黄色影视| 在线不卡a资源高清| 在线观看免费亚洲| 欧美午夜精品一区二区三区| 欧美美女黄视频| 欧美一区二区日韩| 精品福利二区三区| 国产精品视频九色porn| 欧美激情自拍偷拍| 亚洲欧美日韩在线不卡| 亚洲第一福利视频在线| 乱一区二区av| 国产乱码精品一区二区三区忘忧草 | 精品成人免费观看| 国产性做久久久久久| 国产精品乱子久久久久| 一区二区视频免费在线观看| 日韩黄色小视频| 国产综合一区二区| 97国产一区二区| 91理论电影在线观看| 欧美一级淫片007| 久久综合色天天久久综合图片| 日本一区二区动态图| 亚洲人成网站色在线观看| 亚洲电影一区二区三区| 国内精品免费**视频| 成人少妇影院yyyy| 欧美在线三级电影| 欧美成人免费网站| 中文一区二区在线观看| 一区二区高清免费观看影视大全| 男人操女人的视频在线观看欧美 | 国产伦精品一区二区三区免费迷| 国产91综合网| 欧美日韩一本到| 欧美一区二区在线看| 亚洲精品中文在线| 麻豆精品视频在线观看视频| thepron国产精品| 欧美电影精品一区二区| 亚洲欧洲www| 另类综合日韩欧美亚洲| 色综合久久久久综合99| 欧美福利一区二区| 一区二区三区**美女毛片| 激情综合色播激情啊| 91久久精品午夜一区二区| 久久这里只有精品6| 亚洲高清在线精品| av亚洲精华国产精华精| 久久综合久久综合亚洲| 一区二区三区四区在线播放| 成人av在线看| 久久久美女毛片| 日韩激情在线观看| 欧美伊人精品成人久久综合97| 国产日韩精品一区二区浪潮av | 性做久久久久久| 99综合电影在线视频| 久久久亚洲高清| 美国一区二区三区在线播放| 精品视频全国免费看| 国产精品久久久久一区二区三区| 国产激情91久久精品导航| 91精品国产综合久久精品麻豆 | 色88888久久久久久影院按摩| 国产欧美日韩视频一区二区 | 亚洲精品国产第一综合99久久| 国产高清不卡二三区| 精品日韩欧美在线| 热久久一区二区| 欧美日韩黄视频| 亚洲午夜视频在线观看| 色偷偷久久一区二区三区| 91麻豆精品国产91久久久久久久久| 午夜精品久久久久久久99樱桃| 91久久精品一区二区三| 亚洲日本va在线观看| 99精品国产热久久91蜜凸| 国产精品久久久久久久久免费相片| 久久99国产精品麻豆| 精品毛片乱码1区2区3区| 免费观看久久久4p| 精品少妇一区二区三区日产乱码| 免费人成精品欧美精品| 91麻豆精品国产自产在线| 日本午夜一区二区| 欧美成人伊人久久综合网| 国产一区二区不卡| 久久久蜜桃精品| 成人av网在线| 日本一区二区三区高清不卡| 成人免费视频网站在线观看| 国产精品美女久久久久久久| 成人网页在线观看| 自拍偷拍国产亚洲| 欧美一区二区免费| av毛片久久久久**hd| 日韩成人精品视频| 国产精品天干天干在线综合|