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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? packet.h.h

?? 在網(wǎng)絡(luò)的邊緣路由器中并不能完全接受所到的包
?? H
字號(hào):
/* -*-	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: /usr/src/mash/repository/vint/ns-2/packet.h,v 1.59 1999/03/13 03:52:59 haoboy Exp $ (LBL)
 */

#ifndef ns_packet_h
#define ns_packet_h

#include <string.h>
#include <assert.h>

#include "config.h"
#include "scheduler.h"
#include "object.h"
#include "list.h"
#include "packet-stamp.h"
#define VIKI   //Viki,Viki i samo Viki verzija

#define RT_PORT		255	/* port that all route msgs are sent to */
#define HDR_CMN(p)      ((struct hdr_cmn*)(p)->access(hdr_cmn::offset_))
#define HDR_ARP(p)      ((struct hdr_arp*)(p)->access(off_arp_))
#define HDR_MAC(p)      ((struct hdr_mac*)(p)->access(hdr_mac::offset_))
#define HDR_MAC802_11(p) ((struct hdr_mac802_11*)(p)->access(hdr_mac::offset_))
#define HDR_LL(p)       ((struct hdr_ll*)(p)->access(hdr_ll::offset_))
#define HDR_IP(p)       ((struct hdr_ip*)(p)->access(hdr_ip::offset_))
#define HDR_RTP(p)      ((struct hdr_rtp*)(p)->access(hdr_rtp::offset_))
#define HDR_TCP(p)      ((struct hdr_tcp*)(p)->access(hdr_tcp::offset_))

enum packet_t {
	PT_TCP,
	PT_UDP,
	PT_CBR,
	PT_AUDIO,
	PT_VIDEO,
	PT_ACK,
	PT_START,
	PT_STOP,
	PT_PRUNE,
	PT_GRAFT,
	PT_GRAFTACK,
	PT_JOIN,
	PT_ASSERT,
	PT_MESSAGE,
	PT_RTCP,
	PT_RTP,
	PT_RTPROTO_DV,
	PT_CtrMcast_Encap,
	PT_CtrMcast_Decap,
	PT_SRM,
	/* simple signalling messages */
	PT_REQUEST,	
	PT_ACCEPT,	
	PT_CONFIRM,	
	PT_TEARDOWN,	
	PT_LIVE,	// packet from live network
	PT_REJECT,

	PT_TELNET,	// not needed: telnet use TCP
	PT_FTP,
	PT_PARETO,
	PT_EXP,
	PT_INVAL,
	PT_HTTP,

	/* new encapsulator */
	PT_ENCAPSULATED,
	PT_MFTP,

	/* CMU/Monarch's extnsions */
	PT_ARP,
	PT_MAC,
	PT_TORA,
	PT_DSR,
	PT_AODV,

	// RAP packets
	PT_RAP_DATA,
	PT_RAP_ACK,

        PT_PING,

	// insert new packet types here

	PT_NTYPE // This MUST be the LAST one
};

class p_info {
public:
	p_info() {
		name_[PT_TCP]= "tcp";
		name_[PT_UDP]= "udp";
		name_[PT_CBR]= "cbr";
		name_[PT_AUDIO]= "audio";
		name_[PT_VIDEO]= "video";
		name_[PT_ACK]= "ack";
		name_[PT_START]= "start";
		name_[PT_STOP]= "stop";
		name_[PT_PRUNE]= "prune";
		name_[PT_GRAFT]= "graft";
		name_[PT_GRAFTACK]= "graftAck";
		name_[PT_JOIN]= "join";
		name_[PT_ASSERT]= "assert";
		name_[PT_MESSAGE]= "message";
		name_[PT_RTCP]= "rtcp";
		name_[PT_RTP]= "rtp";
		name_[PT_RTPROTO_DV]= "rtProtoDV";
		name_[PT_CtrMcast_Encap]= "CtrMcast_Encap";
		name_[PT_CtrMcast_Decap]= "CtrMcast_Decap";
		name_[PT_SRM]= "SRM";

		name_[PT_REQUEST]= "sa_req";	
		name_[PT_ACCEPT]= "sa_accept";
		name_[PT_CONFIRM]= "sa_conf";
		name_[PT_TEARDOWN]= "sa_teardown";
		name_[PT_LIVE]= "live"; 
		name_[PT_REJECT]= "sa_reject";

		name_[PT_TELNET]= "telnet";
		name_[PT_FTP]= "ftp";
		name_[PT_PARETO]= "pareto";
		name_[PT_EXP]= "exp";
		name_[PT_INVAL]= "httpInval";
		name_[PT_HTTP]= "http";
		name_[PT_ENCAPSULATED]= "encap";
		name_[PT_MFTP]= "mftp";
		name_[PT_ARP]= "ARP";
		name_[PT_MAC]= "MAC";
		name_[PT_TORA]= "TORA";
		name_[PT_DSR]= "DSR";
		name_[PT_AODV]= "AODV";

		name_[PT_RAP_DATA] = "rap_data";
		name_[PT_RAP_ACK] = "rap_ack";

                name_[PT_PING] = "Ping";

		name_[PT_NTYPE]= "undefined";
	}
	const char* name(packet_t p) const { 
		if ( p <= PT_NTYPE ) return name_[p];
		return 0;
	}
	static bool data_packet(packet_t type) {
		return ( (type) == PT_TCP || \
			 (type) == PT_TELNET || \
			 (type) == PT_CBR || \
			 (type) == PT_AUDIO || \
			 (type) == PT_VIDEO || \
			 (type) == PT_ACK \
			 );
	}
private:
	static char* name_[PT_NTYPE+1];
};
extern p_info packet_info; /* map PT_* to string name */
//extern char* p_info::name_[];

#define OFFSET(type, field)	((int) &((type *)0)->field)

//Monarch ext
typedef void (*FailureCallback)(Packet *,void *);
//
class Packet : public Event {
private:
	unsigned char* bits_;	// header bits
	unsigned char* data_;	// variable size buffer for 'data'
	unsigned int datalen_;	// length of variable size buffer
       //void init();            // initialize pkts getting freed.
	bool fflag_;
protected:
	static Packet* free_;	// packet free list
public:
	Packet* next_;		// for queues and the free list
	static int hdrlen_;
	Packet() : bits_(0), datalen_(0), next_(0) {
		#ifdef VIKI
		//verzija za 599 pocetak
		//default_deadline=0.003;	
	        //next_deadline=default_deadline;
		//departure_time=0;
		//verzija za 599 kraj
		local_deadline=-100;
		#endif
 }
	unsigned char* const bits() { return (bits_); }
	Packet* copy() const;
	static Packet* alloc();
	static Packet* alloc(int);
	inline void allocdata(int);
	static void free(Packet*);
	//Start of Viki
	#ifdef VIKI
	//verzija za 599 pocetak
	//double current_deadline;
	//double default_deadline;
	//double departure_time;
        //double next_deadline;
        //double arrival_time;
        //double saved_deadline;
	//verzija za 599 kraj
	double local_deadline;
	double local_deadline_increment;
	int egress_node;
	#endif
	//End of Viki
	inline unsigned char* access(int off) const {
		if (off < 0)
			abort();
		return (&bits_[off]);
	}
	inline unsigned char* accessdata() const { return data_; }
	inline int datalen() const { return datalen_; }

	//Monarch extn
	// the pkt stamp carries all info about how/where the pkt
        // was sent needed for a receiver to determine if it correctly
        // receives the pkt

        PacketStamp	txinfo_;  

	//monarch extns end;

};

/* 
 * static constant associations between interface special (negative) 
 * values and their c-string representations that are used from tcl
 */
class iface_literal {
public:
	enum iface_constant { 
		UNKN_IFACE= -1, /* iface value for locally originated packets 
				 */
		ANY_IFACE= -2   /* hashnode with iif == ANY_IFACE_                           
				 * matches any pkt iface (imported from TCL);                
				 * this value should be different from hdr_cmn::UNKN_IFACE   
				 * from packet.h                                             
				 */                                                          
	};
	iface_literal(const iface_constant i, const char * const n) : 
		value_(i), name_(n) {}
	inline int value() const { return value_; }
	inline const char * const name() const { return name_; }
private:
	const iface_constant value_;
	const char * const name_; /* strings used in TCL to access those special values */
};

static const iface_literal UNKN_IFACE(iface_literal::UNKN_IFACE, "?");
static const iface_literal ANY_IFACE(iface_literal::ANY_IFACE, "*");


struct hdr_cmn {
	packet_t ptype_;		// packet type (see above)
	int	size_;		// simulated packet size
	int	uid_;		// unique id
	int	error_;		// error flag
	double	ts_;		// timestamp: for q-delay measurement

//begin archanakrishna

        double arrivalts_;     // this is going to be the same through out the flow
        double servicets_;     // will get update after passing each node
        int pktingressnode_;   // packets ingress node is maintained
        int pktegressnode_;    // packets egress node is maintained 
        int classofpacket_;    // This is used for class based queueing

//end archanakrishna

	int	iface_;		// receiving interface (label)
	int	direction_;	// direction: 0=none, 1=up, -1=down
	int	ref_count_;	// free the pkt until count to 0

	//Monarch extn begins
	nsaddr_t next_hop_;	// next hop for this packet
	int      addr_type_;    // type of next_hop_ addr
#define AF_NONE 0
#define AF_ILINK 1
#define AF_INET 2

        // called if pkt can't obtain media or isn't ack'd. not called if
        // droped by a queue
        FailureCallback xmit_failure_; 
        void *xmit_failure_data_;

        /*
         * MONARCH wants to know if the MAC layer is passing this back because
         * it could not get the RTS through or because it did not receive
         * an ACK.
         */
        int     xmit_reason_;
#define XMIT_REASON_RTS 0x01
#define XMIT_REASON_ACK 0x02

        // filled in by GOD on first transmission, used for trace analysis
        int num_forwards_;	// how many times this pkt was forwarded
        int opt_num_forwards_;   // optimal #forwards
// Monarch extn ends;

	static int offset_;	// offset for this header
	inline static int& offset() { return offset_; }
	inline static hdr_cmn* access(Packet* p) {
		return (hdr_cmn*) p->access(offset_);
	}
	
        /* per-field member functions */
	inline packet_t& ptype() { return (ptype_); }
	inline int& size() { return (size_); }
	inline int& uid() { return (uid_); }
	inline int& error() { return error_; }
	inline double& timestamp() { return (ts_); }

// begin archanakrishna

        inline double& arrivaltimestamp() { return (arrivalts_); }
        inline double& servicetimestamp() { return (servicets_); }

        inline int& pktingressnode() { return (pktingressnode_); }
        inline int& pktegressnode() { return (pktegressnode_); }
        inline int& classofpacket() { return (classofpacket_); }


// end archanakrishna
 

	inline int& iface() { return (iface_); }
	inline int& direction() { return (direction_); }
	inline int& ref_count() { return (ref_count_); }
	// monarch_begin
	inline nsaddr_t& next_hop() { return (next_hop_); }
	inline int& addr_type() { return (addr_type_); }
	inline int& num_forwards() { return (num_forwards_); }
	inline int& opt_num_forwards() { return (opt_num_forwards_); }
        //monarch_end
};


class PacketHeaderClass : public TclClass {
protected:
	PacketHeaderClass(const char* classname, int hdrsize);
	virtual int method(int argc, const char*const* argv);
	void field_offset(const char* fieldname, int offset);
	inline void bind_offset(int* off) { offset_ = off; }
	inline void offset(int* off) {offset_= off;}
	int hdrlen_;		// # of bytes for this header
	int* offset_;		// offset for this header
public:
	virtual void bind();
	virtual void export_offsets();
	TclObject* create(int argc, const char*const* argv);
};


inline Packet* Packet::alloc()
{
	Packet* p = free_;
	if (p != 0) {
		assert(p->fflag_ == FALSE);
		free_ = p->next_;
		if (p->datalen_) {
			delete[] p->data_;
			// p->data_ = 0;
			p->datalen_ = 0;
		}
		p->uid_ = 0;
		p->time_ = 0;
	}
	else {
		p = new Packet;
		p->bits_ = new unsigned char[hdrlen_];
		if (p == 0 || p->bits_ == 0)
			abort();
//		p->data_ = 0;
//		p->datalen_ = 0;
		bzero(p->bits_, hdrlen_);
	}
	p->fflag_ = TRUE;
       
	p->next_ = 0;
	//test Violeta
	//verzija za 599 pocetak
	//p->default_deadline=0.003;	
	//p->next_deadline=p->default_deadline;
	//p->departure_time=0;
	//verzija za 599 kraj
	p->local_deadline=-100;
		//end test (viki)
	return (p);
}

/* allocate a packet with an n byte data buffer */

inline Packet* Packet::alloc(int n)
{
	Packet* p = alloc();
	if (n > 0) 
		p->allocdata(n);
	return (p);
}

/* allocate an n byte data buffer to an existing packet */

inline void Packet::allocdata(int n)
{
	datalen_ = n;
	data_ = new unsigned char[n];
	if (data_ == 0)
		abort();

}

inline void Packet::free(Packet* p)
{
	int off_cmn_ = hdr_cmn::offset_;
	hdr_cmn* ch = (hdr_cmn*)p->access(off_cmn_);
	if (p->fflag_) {
		if (ch->ref_count() == 0) {
			/*
			 * A packet's uid may be < 0 (out of a event queue), or 
			 * == 0 (newed but never gets into the event queue.
			 */
			assert(p->uid_ <= 0);
			p->next_ = free_;
			free_ = p;
			//init();
			p->fflag_ = FALSE;
		} else {
			ch->ref_count() = ch->ref_count() - 1;
		}
	}
}

inline Packet* Packet::copy() const
{
	Packet* p = alloc();
	memcpy(p->bits(), bits_, hdrlen_);
	if (datalen_) {
		p->datalen_ = datalen_;
		p->data_ = new unsigned char[datalen_];
		memcpy(p->data_, data_, datalen_);
	}
	p->txinfo_.init(&txinfo_);
	return (p);
}

#endif



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕中文字幕一区| 日本aⅴ免费视频一区二区三区| 国产精品香蕉一区二区三区| 午夜精品久久久久| 亚洲综合激情另类小说区| 亚洲欧洲av另类| 亚洲欧洲精品一区二区三区| 成人免费小视频| 亚洲视频网在线直播| 国产精品成人在线观看| 亚洲欧洲日韩女同| 亚洲精选视频在线| 精品三级在线观看| 久久久久久电影| 国产精品色婷婷久久58| 国产精品久久久久影院色老大| 日韩视频一区二区三区在线播放| 国产成人精品综合在线观看| 亚洲一区二区美女| 国产亚洲精久久久久久| 国产欧美精品一区二区色综合| 在线成人小视频| 日韩亚洲欧美在线观看| 欧美mv日韩mv国产网站app| 色偷偷久久一区二区三区| 日本精品裸体写真集在线观看| 成人午夜视频在线| av在线综合网| 国产高清不卡一区| 成人app网站| 精品视频色一区| 日韩三级伦理片妻子的秘密按摩| 欧美日免费三级在线| 99久久久无码国产精品| 91黄色免费版| 日韩欧美综合一区| 国产欧美日韩不卡免费| 一区二区三区不卡视频| 亚洲男女一区二区三区| 日本伊人精品一区二区三区观看方式 | 蜜臀久久久99精品久久久久久| 亚洲激情在线播放| 首页国产丝袜综合| 国产精品一品视频| 91久久奴性调教| 精品成人一区二区三区| 国产精品久久久久久久浪潮网站 | 最新不卡av在线| 亚洲国产精品av| 亚洲自拍偷拍麻豆| 激情丁香综合五月| 欧美性大战久久久久久久| 91在线无精精品入口| 99re热视频精品| 欧美一区二区视频在线观看2022| 欧美片网站yy| 久久精品欧美日韩| 欧美国产在线观看| 午夜a成v人精品| 日本中文字幕一区| 99re成人在线| 久久影院午夜片一区| 伊人开心综合网| 国产精品亚洲第一区在线暖暖韩国| 国产一区二区免费视频| 色综合色综合色综合| 欧美精品一区二区久久婷婷| 久久久久久久综合| 亚洲成人免费视频| 成+人+亚洲+综合天堂| 日韩免费观看高清完整版 | 成人精品视频.| 91丨九色丨蝌蚪丨老版| 99在线精品免费| 精品国产伦一区二区三区观看方式 | 国产精品亚洲午夜一区二区三区| 成人一级视频在线观看| 91精品国产一区二区三区| 精品少妇一区二区三区免费观看| 久久久精品一品道一区| 性欧美疯狂xxxxbbbb| 99视频国产精品| 久久久久久亚洲综合影院红桃| 国产精品久久久久久久久久久免费看| 亚洲乱码国产乱码精品精小说| 亚洲一线二线三线视频| 成人毛片在线观看| 欧美日韩亚洲高清一区二区| 国产精品二三区| 亚洲h精品动漫在线观看| av午夜一区麻豆| 欧美国产成人精品| 国产精品99久久久久| 精品国产污网站| 亚洲欧美综合色| 婷婷开心激情综合| 欧美在线一区二区三区| 亚洲人成在线播放网站岛国| 成人天堂资源www在线| 久久精品人人爽人人爽| 国产麻豆成人传媒免费观看| 欧美中文字幕一二三区视频| 亚洲美女电影在线| 日本乱人伦一区| 久久久久国产成人精品亚洲午夜| 亚洲黄色在线视频| 91老师片黄在线观看| 中文字幕一区二区三区四区| 成人午夜电影小说| 国产精品国产三级国产专播品爱网 | 欧美三级电影精品| 亚洲成人自拍偷拍| 欧美日韩美少妇| 日韩高清不卡一区二区| 欧美精品乱码久久久久久| 亚洲成人第一页| 91麻豆精品国产91久久久更新时间| 中文字幕亚洲在| 色网站国产精品| 日韩制服丝袜先锋影音| 日韩精品最新网址| 国产精品一区在线观看乱码| 国产日本一区二区| 99免费精品视频| 国产午夜精品在线观看| 五月婷婷色综合| 日韩一卡二卡三卡四卡| 国产精品一区三区| 精品久久久久久久久久久院品网| 亚洲福中文字幕伊人影院| 在线电影院国产精品| 亚洲综合一区二区三区| 欧美日韩国产在线观看| 男人的j进女人的j一区| 欧美国产一区视频在线观看| 色999日韩国产欧美一区二区| 国产精品美女久久久久久久久久久 | 欧美一区二区三区在线视频| 综合激情网...| 欧美视频一区二区三区四区| 蜜桃av噜噜一区| 国产亲近乱来精品视频| 精品午夜久久福利影院| 国产精品传媒在线| 欧美久久久影院| 国产精品一区二区视频| 亚洲色图制服诱惑| 日韩精品一区在线| 日本不卡视频在线| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 91丝袜呻吟高潮美腿白嫩在线观看| 国产视频一区二区在线观看| 91麻豆自制传媒国产之光| 天堂久久久久va久久久久| 国产欧美一区二区精品久导航 | 亚洲成人高清在线| 久久这里都是精品| 欧美日韩一区二区在线观看视频| 亚洲一区二区五区| 欧美伊人久久久久久久久影院| 亚洲柠檬福利资源导航| 欧美不卡一区二区| 在线视频观看一区| 国产精品一区二区视频| 国产网站一区二区三区| 9191成人精品久久| 美国三级日本三级久久99 | 久久这里只有精品视频网| 色婷婷精品久久二区二区蜜臀av| 亚洲免费伊人电影| 久久综合资源网| 在线播放/欧美激情| 91麻豆123| 高清av一区二区| 日韩美女啊v在线免费观看| 色哟哟在线观看一区二区三区| 亚洲激情图片一区| 亚洲国产精品99久久久久久久久| 99综合影院在线| 韩国欧美国产1区| 国产精品美女久久久久久 | 91女人视频在线观看| 精品一区二区综合| 亚洲国产精品黑人久久久| 欧美成va人片在线观看| 国产精品99久久久久久有的能看| 欧美国产日产图区| 精品国产伦一区二区三区观看方式 | 亚洲视频一区在线| 国产日韩欧美a| 久久先锋影音av鲁色资源| 91精品久久久久久久91蜜桃| 色久优优欧美色久优优| 裸体一区二区三区| 亚洲成人免费视频| 亚洲影视在线观看| 亚洲一区二区av在线| 亚洲男人的天堂在线观看| 亚洲色图制服诱惑| 亚洲日本乱码在线观看|