⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet.h.svn-base

📁 diff serve for ns-2, work for version 2.29
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
/* -*-	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/common/packet.h,v 1.98 2005/09/18 23:33:31 tomh 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 "lib/bsd-list.h"#include "packet-stamp.h"#include "ns-process.h"// Used by wireless routing code to attach routing agent#define RT_PORT		255	/* port that all route msgs are sent to */#define HDR_CMN(p)      (hdr_cmn::access(p))#define HDR_ARP(p)      (hdr_arp::access(p))#define HDR_MAC(p)      (hdr_mac::access(p))#define HDR_MAC802_11(p) ((hdr_mac802_11 *)hdr_mac::access(p))#define HDR_MAC_TDMA(p) ((hdr_mac_tdma *)hdr_mac::access(p))#define HDR_SMAC(p)     ((hdr_smac *)hdr_mac::access(p))#define HDR_LL(p)       (hdr_ll::access(p))#define HDR_HDLC(p)     ((hdr_hdlc *)hdr_ll::access(p))#define HDR_IP(p)       (hdr_ip::access(p))#define HDR_RTP(p)      (hdr_rtp::access(p))#define HDR_TCP(p)      (hdr_tcp::access(p))#define HDR_SCTP(p)     (hdr_sctp::access(p))#define HDR_SR(p)       (hdr_sr::access(p))#define HDR_TFRC(p)     (hdr_tfrc::access(p))#define HDR_TORA(p)     (hdr_tora::access(p))#define HDR_IMEP(p)     (hdr_imep::access(p))#define HDR_CDIFF(p)    (hdr_cdiff::access(p))  /* chalermak's diffusion*///#define HDR_DIFF(p)     (hdr_diff::access(p))  /* SCADD's diffusion ported into ns */#define HDR_LMS(p)		(hdr_lms::access(p))/* --------------------------------------------------------------------*/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,	PT_IMEP,	// RAP packets	PT_RAP_DATA,	PT_RAP_ACK,	PT_TFRC,	PT_TFRC_ACK,	PT_PING,	// Diffusion packets - Chalermek	PT_DIFF,	// LinkState routing update packets	PT_RTPROTO_LS,	// MPLS LDP header	PT_LDP,	// GAF packet        PT_GAF,  	// ReadAudio traffic	PT_REALAUDIO,	// Pushback Messages	PT_PUSHBACK,#ifdef HAVE_STL	// Pragmatic General Multicast	PT_PGM,#endif //STL	// LMS packets	PT_LMS,	PT_LMS_SETUP,	PT_SCTP,	PT_SCTP_APP1,	// SMAC packet	PT_SMAC,	// XCP packet	PT_XCP,		// HDLC packet	PT_HDLC,	// 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_IMEP]= "IMEP";		name_[PT_RAP_DATA] = "rap_data";		name_[PT_RAP_ACK] = "rap_ack"; 		name_[PT_TFRC]= "tcpFriend";		name_[PT_TFRC_ACK]= "tcpFriendCtl";		name_[PT_PING]="ping";	 	/* For diffusion : Chalermek */ 		name_[PT_DIFF] = "diffusion";		// Link state routing updates		name_[PT_RTPROTO_LS] = "rtProtoLS";		// MPLS LDP packets		name_[PT_LDP] = "LDP";		// for GAF                name_[PT_GAF] = "gaf";      		// RealAudio packets		name_[PT_REALAUDIO] = "ra";		//pushback 		name_[PT_PUSHBACK] = "pushback";#ifdef HAVE_STL		// for PGM		name_[PT_PGM] = "PGM";#endif //STL		// LMS entries		name_[PT_LMS]="LMS";		name_[PT_LMS_SETUP]="LMS_SETUP";		name_[PT_SCTP]= "sctp"; 		name_[PT_SCTP_APP1] = "sctp_app1";				// smac		name_[PT_SMAC]="smac";		// HDLC		name_[PT_HDLC]="HDLC";		// XCP		name_[PT_XCP]="xcp";				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 || \			 (type) == PT_SCTP || \			 (type) == PT_SCTP_APP1 || \			 (type) == PT_HDLC \			);	}private:	static char* name_[PT_NTYPE+1];};extern p_info packet_info; /* map PT_* to string name *///extern char* p_info::name_[];#define DATA_PACKET(type) ( (type) == PT_TCP || \                            (type) == PT_TELNET || \                            (type) == PT_CBR || \                            (type) == PT_AUDIO || \                            (type) == PT_VIDEO || \                            (type) == PT_ACK || \                            (type) == PT_SCTP || \                            (type) == PT_SCTP_APP1 \                            )#define OFFSET(type, field)	((long) &((type *)0)->field)class PacketData : public AppData {public:	PacketData(int sz) : AppData(PACKET_DATA) {		datalen_ = sz;		if (datalen_ > 0)			data_ = new unsigned char[datalen_];		else			data_ = NULL;	}	PacketData(PacketData& d) : AppData(d) {		datalen_ = d.datalen_;		if (datalen_ > 0) {			data_ = new unsigned char[datalen_];			memcpy(data_, d.data_, datalen_);		} else			data_ = NULL;	}	virtual ~PacketData() { 		if (data_ != NULL) 			delete []data_; 	}	unsigned char* data() { return data_; }	virtual int size() const { return datalen_; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -