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

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

?? arp.c

?? Redboot 源碼
?? C
字號:
//==========================================================================
//
//      net/arp.c
//
//      Stand-alone ARP support for RedBoot
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
// Copyright (C) 2002 Gary Thomas
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s):    gthomas
// Contributors: gthomas
// Date:         2000-07-14
// Purpose:      
// Description:  
//              
// This code is part of RedBoot (tm).
//
//####DESCRIPTIONEND####
//
//==========================================================================

#include <net/net.h>

static struct {
    int      waiting;
    char     *eth;
    char     *ip;
} arp_req;

/*
 * Handle incoming ARP packets.
 */
void
__arp_handler(pktbuf_t *pkt)
{
    arp_header_t *arp = pkt->arp_hdr;
    int hw_type, protocol;

    /*
     * Only handle ethernet hardware and IP protocol.
     */
    protocol = ntohs(arp->protocol);
    hw_type = ntohs(arp->hw_type);
    if ((hw_type == ARP_HW_ETHER) && (protocol == ETH_TYPE_IP)) {
	/*
	 * Handle requests for our ethernet address.
	 */
	if (!memcmp(arp->target_ip, __local_ip_addr, 4)) {
	    if (ntohs(arp->opcode) == ARP_REQUEST) {
		/* format response. */
		arp->opcode = htons(ARP_REPLY);
		memcpy(arp->target_ip, arp->sender_ip,
		       sizeof(ip_addr_t));
		memcpy(arp->target_enet, arp->sender_enet,
		       sizeof(enet_addr_t));
		memcpy(arp->sender_ip, __local_ip_addr,
		       sizeof(ip_addr_t));
		memcpy(arp->sender_enet, __local_enet_addr,
		       sizeof(enet_addr_t));
		pkt->pkt_bytes = sizeof(arp_header_t);
		__enet_send(pkt, &arp->target_enet, ETH_TYPE_ARP);

	    } else if (ntohs(arp->opcode) == ARP_REPLY && arp_req.waiting) {
		if (!memcmp(arp_req.ip, arp->sender_ip, sizeof(ip_addr_t))) {
                    memcpy(arp_req.eth, arp->sender_enet, sizeof(enet_addr_t));
		    arp_req.waiting = 0;
		}
	    }
	}
    }
    __pktbuf_free(pkt);
}


/* 
 * Find the ethernet address of the machine with the given
 * ip address.
 * Return 0 and fills in 'eth_addr' if successful,
 *       -1 if unsuccessful.
 */
int
__arp_request(ip_addr_t *ip_addr, enet_addr_t *eth_addr)
{
    pktbuf_t *pkt;
    arp_header_t *arp;
    unsigned long retry_start;
    enet_addr_t   bcast_addr;
    int           retry;

    // Special case request for self
    if (!memcmp(ip_addr, __local_ip_addr, 4)) {
        memcpy(eth_addr, __local_enet_addr, sizeof(enet_addr_t));
        return 0;
    }

    /* just fail if can't get a buffer */
    if ((pkt = __pktbuf_alloc(ARP_PKT_SIZE)) == NULL)
	return -1;

    arp = pkt->arp_hdr;
    arp->opcode = htons(ARP_REQUEST);
    arp->hw_type = htons(ARP_HW_ETHER);
    arp->protocol = htons(0x800);
    arp->hw_len = sizeof(enet_addr_t);
    arp->proto_len = sizeof(ip_addr_t);

    memcpy(arp->sender_ip, __local_ip_addr, sizeof(ip_addr_t));
    memcpy(arp->sender_enet, __local_enet_addr, sizeof(enet_addr_t));
    memcpy(arp->target_ip, ip_addr, sizeof(ip_addr_t));

    bcast_addr[0] = 255;
    bcast_addr[1] = 255;
    bcast_addr[2] = 255;
    bcast_addr[3] = 255;
    bcast_addr[4] = 255;
    bcast_addr[5] = 255;

    arp_req.eth = (char *)eth_addr;
    arp_req.ip = (char *)ip_addr;
    arp_req.waiting = 1;

    retry = 8;
    while (retry-- > 0) {

        /* send the packet */
	pkt->pkt_bytes = sizeof(arp_header_t);
        __enet_send(pkt, &bcast_addr, ETH_TYPE_ARP);

        retry_start = MS_TICKS();
	while ((MS_TICKS_DELAY() - retry_start) < 250) {
	    __enet_poll();
	    if (!arp_req.waiting) {
		__pktbuf_free(pkt);
		return 0;
	    }
	}
    }
    __pktbuf_free(pkt);
    return -1;
}

#define NUM_ARP 16
static ip_route_t routes[NUM_ARP];

int
__arp_lookup(ip_addr_t *host, ip_route_t *rt)
{
    int i;
    static int next_arp = 0;

    for (i = 0;  i < NUM_ARP;  i++) {
        if (memcmp(host, &routes[i].ip_addr, sizeof(*host)) == 0) {
            // This is a known host
            memcpy(rt, &routes[i], sizeof(*rt));
            return 0;
        }
    }
    memcpy(&rt->ip_addr, host, sizeof(*host));
    if (((*host)[0] == 0xFF) && ((*host)[1] == 0xFF) && ((*host)[2] == 0xFF)) {
        memset(&rt->enet_addr, 0xFF, sizeof(&rt->enet_addr));
        return 0;
#ifdef CYGSEM_REDBOOT_NETWORKING_USE_GATEWAY
    } else if (!__ip_addr_local(host)) {
        // non-local IP address -- look up Gateway's Ethernet address
        host = &__local_ip_gate;
#endif
    }
    if (__arp_request(host, &rt->enet_addr) < 0) {
        return -1;
    } else {
        memcpy(&routes[next_arp], rt, sizeof(*rt));
        if (++next_arp == NUM_ARP) next_arp = 0;
        return 0;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久一二区| 91久久精品一区二区三| 亚洲伊人色欲综合网| 国产精品天美传媒| 国产欧美日韩久久| 国产女同性恋一区二区| 中文字幕成人网| 亚洲色图丝袜美腿| 亚洲自拍另类综合| 奇米色777欧美一区二区| 蜜臀va亚洲va欧美va天堂| 精品一区二区三区在线播放| 国内精品国产成人国产三级粉色| 国产尤物一区二区| www.久久久久久久久| 91在线观看地址| 欧美日韩黄色影视| 欧美精品一区二区在线播放| 国产三级欧美三级日产三级99| 国产精品久久久久婷婷| 亚洲欧美激情在线| 蜜臀久久99精品久久久画质超高清| 精品一区二区三区在线观看| 成人免费高清在线观看| 色综合天天天天做夜夜夜夜做| 欧美性猛交xxxxxxxx| 欧美一级二级三级蜜桃| 久久久久久久久久美女| 亚洲欧美日韩久久| 久久丁香综合五月国产三级网站| 国产成人一区在线| 欧美日韩色综合| 久久看人人爽人人| 亚洲成在线观看| 国产精品66部| 欧美精品日韩一区| 国产精品你懂的在线欣赏| 亚洲图片欧美视频| 国产福利一区二区三区| 欧美精品99久久久**| 中文字幕免费一区| 免费xxxx性欧美18vr| 97国产一区二区| 精品国产乱码久久久久久闺蜜| 亚洲欧美在线aaa| 精品午夜久久福利影院| 欧美视频中文字幕| 国产精品毛片久久久久久| 日韩av一区二区在线影视| 99精品欧美一区二区三区小说| 日韩精品专区在线| 亚洲成人中文在线| 99久久久免费精品国产一区二区| 精品少妇一区二区三区视频免付费| 亚洲欧美日韩一区| 成人黄动漫网站免费app| 精品噜噜噜噜久久久久久久久试看| 亚洲精品福利视频网站| 成人福利电影精品一区二区在线观看| 日韩一级完整毛片| 午夜视频久久久久久| 91高清在线观看| 亚洲视频在线观看一区| 成人av片在线观看| 欧美高清在线视频| 国产成人精品综合在线观看 | 人人爽香蕉精品| 一本到三区不卡视频| 国产精品初高中害羞小美女文| 久久精品av麻豆的观看方式| 337p亚洲精品色噜噜狠狠| 亚洲国产日日夜夜| 99久久国产综合精品色伊 | 国产精品国产a| 国产精品夜夜嗨| 久久九九全国免费| 国产精品一区专区| 国产欧美日韩精品在线| 成人理论电影网| 亚洲国产精品二十页| 成人一区二区三区视频在线观看 | 亚洲午夜精品17c| 欧洲视频一区二区| 午夜精品在线看| 欧美日韩aaaaa| 日本欧美一区二区| 精品奇米国产一区二区三区| 美女性感视频久久| 久久精品一区二区三区不卡| 国产成人av电影免费在线观看| 欧美激情一区三区| 91免费观看视频| 亚洲国产精品影院| 9191久久久久久久久久久| 蜜臀精品一区二区三区在线观看| 欧美videossexotv100| 国产福利不卡视频| 亚洲精品中文在线| 欧美精品一级二级| 国产白丝网站精品污在线入口 | 色狠狠综合天天综合综合| 亚洲日本在线天堂| 8x福利精品第一导航| 精品一区在线看| 国产精品久久久久国产精品日日| 欧美影院一区二区| 国产一区三区三区| 亚洲美女电影在线| 日韩精品综合一本久道在线视频| 国产suv一区二区三区88区| 亚洲综合色丁香婷婷六月图片| 欧美吻胸吃奶大尺度电影| 久久99精品久久久| 亚洲人成亚洲人成在线观看图片| 欧美精品123区| 99视频一区二区| 天天影视涩香欲综合网| 国产精品天天看| 日韩一区二区在线看| 一本色道久久综合狠狠躁的推荐| 久久精品72免费观看| 亚洲精品久久嫩草网站秘色| 精品福利一二区| 欧美日韩国产在线观看| 成人免费电影视频| 久久成人18免费观看| 一区二区三区四区av| 国产亚洲一区二区三区| 欧美一区午夜精品| 91成人免费在线| 99久久精品国产一区| 国产福利一区在线| 精品一二线国产| 偷拍一区二区三区| 一区二区成人在线观看| 国产精品久久久久影视| 久久久久久久久久久久久女国产乱 | 精品久久久久久久久久久久久久久 | 26uuu精品一区二区| 欧美日韩一区不卡| 91福利精品第一导航| 99久久99久久免费精品蜜臀| 国产美女娇喘av呻吟久久| 日本不卡免费在线视频| 午夜久久久久久久久| 亚洲自拍另类综合| 一区二区欧美精品| 怡红院av一区二区三区| 亚洲卡通动漫在线| 亚洲精品欧美激情| 樱桃视频在线观看一区| 亚洲人成网站色在线观看| 亚洲欧美色图小说| 亚洲综合在线第一页| 亚洲一区电影777| 亚洲第一精品在线| 三级影片在线观看欧美日韩一区二区 | 色婷婷综合久久久中文一区二区| 成人18精品视频| av午夜一区麻豆| 91麻豆免费视频| 欧美做爰猛烈大尺度电影无法无天| 色噜噜狠狠成人中文综合| 欧洲中文字幕精品| 制服丝袜亚洲色图| 欧美精品一区二区三| 日本一区免费视频| 亚洲欧美偷拍三级| 亚洲一二三区视频在线观看| 偷偷要91色婷婷| 国内精品视频一区二区三区八戒 | 亚洲丝袜自拍清纯另类| 一级日本不卡的影视| 日韩黄色片在线观看| 黑人精品欧美一区二区蜜桃| 国产不卡视频在线观看| 91久久一区二区| 日韩一区二区视频| 国产精品网站在线播放| 亚洲国产精品一区二区久久恐怖片| 日韩av电影免费观看高清完整版 | 另类小说视频一区二区| 国产成人免费视频一区| 在线亚洲免费视频| 欧美成人一区二区三区在线观看| 国产亚洲成av人在线观看导航| 亚洲女与黑人做爰| 美女爽到高潮91| 91小视频在线免费看| 日韩三级在线免费观看| 最新成人av在线| 久久99国产精品尤物| 91行情网站电视在线观看高清版| 日韩欧美亚洲一区二区| 亚洲欧美区自拍先锋| 九九**精品视频免费播放| 日本韩国欧美一区二区三区| 精品国产一区二区亚洲人成毛片 | 波多野结衣中文字幕一区 | 国产一区二区调教|