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

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

?? arp.cc

?? 用C++編寫的GPRS協議棧源代碼
?? CC
字號:
/*-*-	Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- * * Copyright (c) 1997 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the Computer Systems *	Engineering Group at Lawrence Berkeley Laboratory. * 4. Neither the name of the University nor of the Laboratory may be used *    to endorse or promote products derived from this software without *    specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Header: /nfs/jade/vint/CVSROOT/ns-2/arp.cc,v 1.11 2000/09/01 03:04:05 haoboy Exp $ *//*  * Ported from CMU/Monarch's code, nov'98 -Padma. * * basic arp cache and MAC addr resolution * * Note: code in this file violates the convention that addresses of * type Af_INET stored in nsaddr_t variables are stored in 24/8 format. * Many variables in nsaddr_t's in this file store ip addrs as simple ints. */#include <errno.h>#include "delay.h"//#include "debug.h"#include "mac.h"#include "arp.h"#include "topography.h"#include "cmu-trace.h"#include "mobilenode.h"#include "ll.h"#include "packet.h"#include <address.h>// #define DEBUGstatic class ARPTableClass : public TclClass {public:        ARPTableClass() : TclClass("ARPTable") {}        TclObject* create(int, const char*const* argv) {                return (new ARPTable(argv[4], argv[5]));        }} class_arptable;int hdr_arp::offset_;static class ARPHeaderClass : public PacketHeaderClass {public:        ARPHeaderClass() : PacketHeaderClass("PacketHeader/ARP",                                             sizeof(hdr_arp)) { 		bind_offset(&hdr_arp::offset_);	}} class_arphdr;/* ======================================================================   Address Resolution (ARP) Table   ====================================================================== */ARPTable_List ARPTable::athead_ = { 0 };voidARPTable::Terminate(){	ARPEntry *ll;	for(ll = arphead_.lh_first; ll; ll = ll->arp_link_.le_next) {		if(ll->hold_) {			drop(ll->hold_, DROP_END_OF_SIMULATION);			ll->hold_ = 0;		}	}}ARPTable::ARPTable(const char *tclnode, const char *tclmac) : LinkDelay() {	LIST_INIT(&arphead_);        node_ = (MobileNode*) TclObject::lookup(tclnode);	assert(node_);	mac_ = (Mac*) TclObject::lookup(tclmac);	assert(mac_);	LIST_INSERT_HEAD(&athead_, this, link_);}intARPTable::command(int argc, const char*const* argv){	if (argc == 2 && strcasecmp(argv[1], "reset") == 0) {		Terminate();		//FALL-THROUGH to give parents a chance to reset	}	return LinkDelay::command(argc, argv);}intARPTable::arpresolve(nsaddr_t dst, Packet *p, LL *ll){        ARPEntry *llinfo ;		assert(initialized());	llinfo = arplookup(dst);#ifdef DEBUG        fprintf(stderr, "%d - %s\n", node_->address(), __FUNCTION__);#endif		if(llinfo && llinfo->up_) {		mac_->hdr_dst((char*) HDR_MAC(p), llinfo->macaddr_);		return 0;	}	if(llinfo == 0) {		/*		 *  Create a new ARP entry		 */		llinfo = new ARPEntry(&arphead_, dst);	}        if(llinfo->count_ >= ARP_MAX_REQUEST_COUNT) {                /*                 * Because there is not necessarily a scheduled event between                 * this callback and the point where the callback can return                 * to this point in the code, the order of operations is very                 * important here so that we don't get into an infinite loop.                 *                                      - josh                 */                Packet *t = llinfo->hold_;                llinfo->count_ = 0;                llinfo->hold_ = 0;		hdr_cmn* ch;		                if(t) {                        ch = HDR_CMN(t);                        if (ch->xmit_failure_) {                                ch->xmit_reason_ = 0;                                ch->xmit_failure_(t, ch->xmit_failure_data_);                        }                        else {                                drop(t, DROP_IFQ_ARP_FULL);                        }                }                ch = HDR_CMN(p);		if (ch->xmit_failure_) {                        ch->xmit_reason_ = 0;                        ch->xmit_failure_(p, ch->xmit_failure_data_);                }                else {                        drop(p, DROP_IFQ_ARP_FULL);                }                return EADDRNOTAVAIL;        }	llinfo->count_++;	if(llinfo->hold_)		drop(llinfo->hold_, DROP_IFQ_ARP_FULL);	llinfo->hold_ = p;	/*	 *  We don't have a MAC address for this node.  Send an ARP Request.	 *	 *  XXX: Do I need to worry about the case where I keep ARPing	 *	 for the SAME destination.	 */	int src = node_->address(); // this host's IP addr	arprequest(src, dst, ll);	return EADDRNOTAVAIL;}ARPEntry*ARPTable::arplookup(nsaddr_t dst){	ARPEntry *a;	for(a = arphead_.lh_first; a; a = a->nextarp()) {		if(a->ipaddr_ == dst)			return a;	}	return 0;}voidARPTable::arprequest(nsaddr_t src, nsaddr_t dst, LL *ll){		Scheduler& s = Scheduler::instance();	Packet *p = Packet::alloc();	hdr_cmn *ch = HDR_CMN(p);	char	*mh = (char*) HDR_MAC(p);	hdr_ll	*lh = HDR_LL(p);	hdr_arp	*ah = HDR_ARP(p);	ch->uid() = 0;	ch->ptype() = PT_ARP;	ch->size() = ARP_HDR_LEN;	ch->iface() = -2;	ch->error() = 0;	mac_->hdr_dst(mh, MAC_BROADCAST);	mac_->hdr_src(mh, ll->mac_->addr());	mac_->hdr_type(mh, ETHERTYPE_ARP);	lh->seqno() = 0;	lh->lltype() = LL_DATA;	ch->direction() = hdr_cmn::DOWN; // send this pkt down	ah->arp_hrd = ARPHRD_ETHER;	ah->arp_pro = ETHERTYPE_IP;	ah->arp_hln = ETHER_ADDR_LEN;	ah->arp_pln = sizeof(nsaddr_t);	ah->arp_op  = ARPOP_REQUEST;	ah->arp_sha = ll->mac_->addr();	ah->arp_spa = src;	ah->arp_tha = 0;		// what were're looking for	ah->arp_tpa = dst;	s.schedule(ll->downtarget_, p, delay_);}voidARPTable::arpinput(Packet *p, LL *ll){	Scheduler& s = Scheduler::instance();	hdr_arp *ah = HDR_ARP(p);	ARPEntry *llinfo;	assert(initialized());#ifdef DEBUG	fprintf(stderr,                "%d - %s\n\top: %x, sha: %x, tha: %x, spa: %x, tpa: %x\n",		node_->address(), __FUNCTION__, ah->arp_op,                ah->arp_sha, ah->arp_tha, ah->arp_spa, ah->arp_tpa);#endif	if((llinfo = arplookup(ah->arp_spa)) == 0) {		/*		 *  Create a new ARP entry		 */		llinfo = new ARPEntry(&arphead_, ah->arp_spa);	}        assert(llinfo);	llinfo->macaddr_ = ah->arp_sha;	llinfo->up_ = 1;	/*	 *  Can we send whatever's being held?	 */	if(llinfo->hold_) {		hdr_cmn *ch = HDR_CMN(llinfo->hold_);		char *mh = (char*) HDR_MAC(llinfo->hold_);                hdr_ip *ih = HDR_IP(llinfo->hold_);                		// XXXHACK for now: 		// Future work: separate port-id from IP address ??		int dst = Address::instance().get_nodeaddr(ih->daddr());				if((ch->addr_type() == NS_AF_NONE &&                    dst == ah->arp_spa) ||                   (NS_AF_INET == ch->addr_type() &&                    ch->next_hop() == ah->arp_spa)) {#ifdef DEBUG			fprintf(stderr, "\tsending HELD packet.\n");#endif			mac_->hdr_dst(mh, ah->arp_sha);			ll->fragDATA(llinfo->hold_); //for sandy's LL			//s.schedule(ll->downtarget_, llinfo->hold_, delay_);			llinfo->hold_ = 0;		}                else {                        fprintf(stderr, "\tfatal ARP error...\n");                        exit(1);                }	}	if(ah->arp_op == ARPOP_REQUEST &&		ah->arp_tpa == node_->address()) {				hdr_cmn *ch = HDR_CMN(p);		char	*mh = (char*)HDR_MAC(p);		hdr_ll  *lh = HDR_LL(p);		ch->size() = ARP_HDR_LEN;		ch->error() = 0;		ch->direction() = hdr_cmn::DOWN; // send this pkt down		mac_->hdr_dst(mh, ah->arp_sha);		mac_->hdr_src(mh, ll->mac_->addr());		mac_->hdr_type(mh, ETHERTYPE_ARP);		lh->seqno() = 0;		lh->lltype() = LL_DATA;		// ah->arp_hrd = 		// ah->arp_pro =		// ah->arp_hln =		// ah->arp_pln =		ah->arp_op  = ARPOP_REPLY;		ah->arp_tha = ah->arp_sha;		ah->arp_sha = ll->mac_->addr();		nsaddr_t t = ah->arp_spa;		ah->arp_spa = ah->arp_tpa;		ah->arp_tpa = t;		s.schedule(ll->downtarget_, p, delay_);		return;	}	Packet::free(p);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡视频一二三区| 99久久亚洲一区二区三区青草 | 亚洲三级在线播放| 精品国产乱码久久久久久闺蜜| 欧美三级电影在线看| 91网站最新网址| 欧美喷潮久久久xxxxx| 91毛片在线观看| 在线免费观看日本欧美| 在线观看不卡一区| 欧美三级日韩三级| 欧美精品在线观看播放| 7777精品久久久大香线蕉 | 日韩三级精品电影久久久| 欧美欧美欧美欧美首页| 91精品国产综合久久福利| 欧美视频在线观看一区| 制服.丝袜.亚洲.另类.中文 | 精品综合免费视频观看| 国产黄色成人av| 99视频一区二区三区| 91精品91久久久中77777| 欧美日韩一区不卡| 日韩一区二区三区视频在线观看| 精品国产一区二区亚洲人成毛片| 久久色中文字幕| 日韩伦理电影网| 亚洲一区二区三区美女| 美女一区二区视频| 福利一区二区在线| 欧美三级电影在线看| 久久理论电影网| 亚洲综合视频网| 极品瑜伽女神91| 91电影在线观看| 精品不卡在线视频| 一区二区欧美国产| 国产美女娇喘av呻吟久久| 色妹子一区二区| 欧美成人一区二区三区| 亚洲精品国产精品乱码不99| 日韩av网站在线观看| 成人在线一区二区三区| 91麻豆精品国产91久久久 | 色老头久久综合| 久久亚洲二区三区| 亚洲一二三级电影| 色综合天天综合网国产成人综合天| 91精品在线观看入口| 日本一区二区三区在线观看| 亚洲bdsm女犯bdsm网站| 成人av在线资源网站| 欧美视频在线播放| 专区另类欧美日韩| 国产精品69毛片高清亚洲| 欧美一区二区在线看| 亚洲欧美另类综合偷拍| 国产精品影视在线观看| 91麻豆精品国产综合久久久久久| 亚洲免费av在线| 成人av在线电影| 精品剧情v国产在线观看在线| 亚洲一二三四在线观看| 99精品久久99久久久久| 国产婷婷精品av在线| 久久99精品久久久久久国产越南| 欧美系列日韩一区| 亚洲一区二区三区四区五区中文 | 日精品一区二区三区| 欧洲中文字幕精品| 亚洲女同女同女同女同女同69| 从欧美一区二区三区| 国产欧美一区二区三区沐欲 | 1024精品合集| 波多野结衣91| 亚洲视频免费看| 97久久超碰国产精品| 中文字幕日本不卡| 91蜜桃网址入口| 亚洲欧美国产77777| 91久久精品一区二区二区| 亚洲精品乱码久久久久| 日本精品一区二区三区四区的功能| 亚洲欧美经典视频| 欧美日韩中文一区| 免费人成黄页网站在线一区二区| 日韩欧美一级特黄在线播放| 激情成人综合网| 国产欧美日韩精品一区| 99久久伊人精品| 亚洲小少妇裸体bbw| 这里只有精品免费| 国产一区二区久久| 中文字幕一区二区三区蜜月| 在线观看精品一区| 精品一区二区三区久久| 中文字幕av一区 二区| 色综合夜色一区| 日韩国产精品久久| 国产色婷婷亚洲99精品小说| 97久久人人超碰| 午夜精品久久一牛影视| 久久综合色综合88| 99re这里只有精品视频首页| 日韩黄色免费网站| 日本一区二区动态图| 欧美在线小视频| 国产精品一区二区免费不卡| 亚洲男人的天堂一区二区| 欧美一区日本一区韩国一区| 成人视屏免费看| 日韩精品91亚洲二区在线观看 | 亚洲免费毛片网站| 91精品蜜臀在线一区尤物| 成人性视频免费网站| 亚洲成人av在线电影| 国产亚洲精品aa| 欧美一区二区三区在线视频| 夫妻av一区二区| 日韩黄色免费网站| 亚洲欧美激情一区二区| 久久免费国产精品| 欧美日韩精品一区视频| 成人av影院在线| 久久av资源网| 日一区二区三区| 亚洲欧洲成人av每日更新| 精品理论电影在线| 欧美日本在线看| 91看片淫黄大片一级在线观看| 久久成人av少妇免费| 一级做a爱片久久| 综合久久久久久| 国产婷婷色一区二区三区四区| 欧美一二三在线| 欧美日韩午夜在线视频| 91在线视频官网| 成人美女在线观看| 国产精品资源站在线| 美女一区二区三区| 日韩精品电影在线| 日本美女一区二区| 午夜在线电影亚洲一区| 一区二区三区丝袜| 亚洲另类春色校园小说| 国产精品天干天干在观线| 久久九九久精品国产免费直播| 在线播放日韩导航| 欧美亚一区二区| 欧美三级日本三级少妇99| 欧洲国内综合视频| 欧美日韩免费电影| 欧美日韩亚洲综合一区| 欧美高清视频在线高清观看mv色露露十八| 99久久免费国产| 一本色道久久综合亚洲aⅴ蜜桃| 成人高清免费观看| 91网址在线看| 欧美性xxxxxx少妇| 69久久99精品久久久久婷婷| 777久久久精品| 日韩欧美你懂的| 精品国产免费视频| 日本一区二区视频在线| 国产精品人人做人人爽人人添| 国产精品美女久久久久av爽李琼| 国产蜜臀av在线一区二区三区| 国产蜜臀97一区二区三区| 1024亚洲合集| 亚洲成va人在线观看| 麻豆91精品视频| 国产传媒日韩欧美成人| 成人精品gif动图一区| 色8久久人人97超碰香蕉987| 91精品国产一区二区| 久久亚洲一区二区三区明星换脸| 久久欧美一区二区| 亚洲天堂中文字幕| 日韩国产一二三区| 国产福利一区二区三区视频| 一本一本大道香蕉久在线精品| 欧美日韩不卡一区| 国产欧美一区二区三区在线老狼| 一区二区三区自拍| 狂野欧美性猛交blacked| 国产99久久久国产精品免费看| 91麻豆文化传媒在线观看| 4438亚洲最大| 国产精品久久久久久亚洲伦| 亚洲电影在线免费观看| 国产一区二区伦理片| 欧美婷婷六月丁香综合色| 久久久国产精华| 五月婷婷综合网| 9i在线看片成人免费| 2023国产精品| 五月天精品一区二区三区| 波多野结衣欧美| 久久久国产午夜精品| 日韩成人dvd|