📄 node149.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>14.4 MacClassifier Class</TITLE><META NAME="description" CONTENT="14.4 MacClassifier 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="next" HREF="node150.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node150.html"><LINK REL="previous" HREF="node145.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node145.html"><LINK REL="up" HREF="node142.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node142.html"><LINK REL="next" HREF="node150.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node150.html"></HEAD><BODY ><!--Navigation Panel--><A NAME="tex2html3576" HREF="node150.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node150.html"><IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="file:/usr/share/latex2html/icons/next.png"></A> <A NAME="tex2html3570" HREF="node142.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node142.html"><IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="file:/usr/share/latex2html/icons/up.png"></A> <A NAME="tex2html3564" HREF="node148.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node148.html"><IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="file:/usr/share/latex2html/icons/prev.png"></A> <A NAME="tex2html3572" 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="tex2html3574" 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="tex2html3577" HREF="node150.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node150.html">14.5 MAC Class</A><B> Up:</B> <A NAME="tex2html3571" HREF="node142.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node142.html">14. Local Area Networks</A><B> Previous:</B> <A NAME="tex2html3565" HREF="node148.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node148.html">14.3.3 Channel Class in</A>   <B> <A NAME="tex2html3573" HREF="node1.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node1.html">Contents</A></B>   <B> <A NAME="tex2html3575" HREF="node590.html" tppabs="http://www.isi.edu/nsnam/ns/doc/node590.html">Index</A></B> <BR><BR><!--End of Navigation Panel--><H1><A NAME="SECTION031140000000000000000"></A><A NAME="sec:mac_classifier"></A><BR>14.4 MacClassifier Class</H1><P>The <TT>MacClassifier</TT> class extends the <TT>Classifier</TT> class toimplement a simple broadcasting mechanism. It modifies the<TT>recv()</TT> method in the following way: since the replication of apacket is expensive, normally a unicast packet will be classified bythe MAC destination address <TT>macDA_</TT> and delivered directly tothe MAC object with such an address. However, if the destinationobject cannot be found or if the MAC destination address is explicitlyset to the broadcast address <TT>BCAST_ADDR</TT>, the packet will bereplicated and sent to all MACs on the lan excluding the one that isthe source of the packet. Finally, by setting the bound variable<TT>MacClassifier::bcast_</TT> to a non-zero value, will cause<TT>MacClassifier</TT> always to replicate packets.<P><PRE> class MacClassifier : public Classifier { public: void recv(Packet*, Handler*); }; void MacClassifier::recv(Packet* p, Handler*) { Mac* mac; hdr_mac* mh = hdr_mac::access(p); if (bcast_ || mh-\>macDA() == BCAST_ADDR || (mac = (Mac *)find(p)) == 0) { // Replicate packets to all slots (broadcast) . . . return; } mac-\>recv(p); }</PRE><P><BR><HR><ADDRESS>2003-09-23</ADDRESS></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -