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

📄 node135.html

📁 相关搜索: ns2仿真结果分析 all-awk ns2 ns2 无限网络中awk文件 ... [2.tcl.rar] - 在ns2平台上实现对AODV协议的模拟
💻 HTML
字号:
<html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><!--Converted with jLaTeX2HTML 2002 (1.62) JA patch-1.4patched version by:  Kenshi Muto, Debian Project.LaTeX2HTML 2002 (1.62),original version by:  Nikos Drakos, CBLU, University of Leeds* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan* with significant contributions from:  Jens Lippmann, Marek Rouchal, Martin Wilck and others --><HTML><HEAD><TITLE>12.2.4 The PacketHeaderManager Class</TITLE><META NAME="description" CONTENT="12.2.4 The PacketHeaderManager Class"><META NAME="keywords" CONTENT="everything"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"><META NAME="Generator" CONTENT="jLaTeX2HTML v2002 JA patch-1.4"><META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"><LINK REL="STYLESHEET" HREF="everything.css" tppabs="http://www.isi.edu/nsnam/ns/doc/everything.css"><LINK REL="previous" HREF="node134.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node134.html"><LINK REL="up" HREF="node131.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node131.html"><LINK REL="next" HREF="node136.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node136.html"></HEAD><BODY ><!--Navigation Panel--><A NAME="tex2html3360"  HREF="node136.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node136.html"><IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="file:/usr/share/latex2html/icons/next.png"></A> <A NAME="tex2html3354"  HREF="node131.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node131.html"><IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="file:/usr/share/latex2html/icons/up.png"></A> <A NAME="tex2html3350"  HREF="node134.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node134.html"><IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="file:/usr/share/latex2html/icons/prev.png"></A> <A NAME="tex2html3356"  HREF="node1.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node1.html"><IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="file:/usr/share/latex2html/icons/contents.png"></A> <A NAME="tex2html3358"  HREF="node590.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node590.html"><IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="file:/usr/share/latex2html/icons/index.png"></A> <BR><B> Next:</B> <A NAME="tex2html3361"  HREF="node136.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node136.html">12.3 Commands at a</A><B> Up:</B> <A NAME="tex2html3355"  HREF="node131.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node131.html">12.2 Packet Classes</A><B> Previous:</B> <A NAME="tex2html3351"  HREF="node134.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node134.html">12.2.3 The hdr_cmn Class</A> &nbsp <B>  <A NAME="tex2html3357"  HREF="node1.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node1.html">Contents</A></B>  &nbsp <B>  <A NAME="tex2html3359"  HREF="node590.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node590.html">Index</A></B> <BR><BR><!--End of Navigation Panel--><H2><A NAME="SECTION03924000000000000000"></A><A NAME="sec:packethdrmgr"></A><BR>12.2.4 The PacketHeaderManager Class</H2><P>An object of the PacketHeaderManager../ns-2/packet.h is usedto manage the set of currently-active packet header types andassign each of them unique offsets in the BOB.It is defined in both the C++ and OTcl code:<PRE>{\rm From tcl/lib/ns-packet.tcl:}        PacketHeaderManager set hdrlen_ 0        ......        foreach prot {                AODV                ARP                aSRM                 Common                 CtrMcast                 Diffusion                ......                TORA                UMP         } {                add-packet-header $prot        }        Simulator instproc create_packetformat {} {                PacketHeaderManager instvar tab_                set pm [new PacketHeaderManager]                foreach cl [PacketHeader info subclass] {                        if [info exists tab_($cl)] {                                set off [$pm allochdr $cl]                                $cl offset $off                        }                }                $self set packetManager_ $pm        }        PacketHeaderManager instproc allochdr cl {                set size [$cl set hdrlen_]                $self instvar hdrlen_                set NS_ALIGN 8 # round up to nearest NS_ALIGN bytes, (needed on sparc/solaris);                set incr [expr ($size + ($NS_ALIGN-1)) &amp; ~($NS_ALIGN-1)]                set base $hdrlen_                incr hdrlen_ $incr                return $base        }{\rm From packet.cc:}        /* manages active packet header types */        class PacketHeaderManager : public TclObject {        public:                PacketHeaderManager() {                        bind("hdrlen_", &amp;Packet::hdrlen_);                }        };</PRE> The code in tcl/lib/ns-packet.tcl is executedwhen the simulator initializes.Thus, the <TT>foreach</TT> statement is executed before thesimulation begins, and initializes the OTcl class array<TT>tab_</TT> to contain the mapping between classthe name and the names of the currently active packet header classes.As discussed above (<A HREF="node128.html#sec:ppackethdr" tppabs="http://www.isi.edu/nsnam/ns/doc/node128.html#sec:ppackethdr">12.1</A>), packet headers shouldbe accessed using <TT>hdr_hdrname::access()</TT>. <P>The []create_packetformat instance procedure is part of thebasic Simulator class and is called one time during simulatorconfiguration.It first creates a single <TT>PacketHeaderManager</TT> object.The C++ constructor links the OTcl instancevariable <TT>hdrlen_</TT> (of class <TT>PacketHeaderManager</TT>)to the C++ variable <TT>Packet::hdrlen_</TT> (a staticmember of the <TT>Packet</TT> class).This has the effect of setting <TT>Packet::hdrlen_</TT> tozero.Note that binding across class types in this fashion isunusual.<P><A NAME="sec:configpacket"></A>After creating the packet manager, the <TT>foreach</TT>loop enables each of the packet headers of interest.This loop iterates through the list of definedpacket headers of the form where  is the name of the  th headerand  is the name of the variable containing thelocation of the  header in BOB.The placement of headers is performed by the <TT>allochdr</TT>instproc of the <TT>PacketHeaderManager</TT> OTcl class.The procedure keeps a running variable <TT>hdrlen_</TT> withthe current length of BOB as new packet headers are enabled.It also arranges for 8-byte alignment for any newly-enabled packetheader.This is needed to ensure that when double-world length quantitiesare used in packet headers on machines where double-word alignmentis required, access faults are not produced.<A NAME="tex2html22"  HREF="footnode.html#foot5328" tppabs="http://www.isi.edu/nsnam/ns/doc/footnode.html#foot5328"><SUP>12.3</SUP></A>.<P><HR><!--Navigation Panel--><A NAME="tex2html3360"  HREF="node136.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node136.html"><IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="file:/usr/share/latex2html/icons/next.png"></A> <A NAME="tex2html3354"  HREF="node131.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node131.html"><IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="file:/usr/share/latex2html/icons/up.png"></A> <A NAME="tex2html3350"  HREF="node134.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node134.html"><IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="file:/usr/share/latex2html/icons/prev.png"></A> <A NAME="tex2html3356"  HREF="node1.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node1.html"><IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="file:/usr/share/latex2html/icons/contents.png"></A> <A NAME="tex2html3358"  HREF="node590.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node590.html"><IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="file:/usr/share/latex2html/icons/index.png"></A> <BR><B> Next:</B> <A NAME="tex2html3361"  HREF="node136.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node136.html">12.3 Commands at a</A><B> Up:</B> <A NAME="tex2html3355"  HREF="node131.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node131.html">12.2 Packet Classes</A><B> Previous:</B> <A NAME="tex2html3351"  HREF="node134.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node134.html">12.2.3 The hdr_cmn Class</A> &nbsp <B>  <A NAME="tex2html3357"  HREF="node1.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node1.html">Contents</A></B>  &nbsp <B>  <A NAME="tex2html3359"  HREF="node590.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node590.html">Index</A></B> <!--End of Navigation Panel--><ADDRESS>2003-09-23</ADDRESS></BODY></HTML>

⌨️ 快捷键说明

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