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

📄 destclassifier.cc

📁 This documentation is based on the following versions:- pre-release of the wimax model developed by
💻 CC
字号:
/* This software was developed at the National Institute of Standards and * Technology by employees of the Federal Government in the course of * their official duties. Pursuant to title 17 Section 105 of the United * States Code this software is not subject to copyright protection and * is in the public domain. * NIST assumes no responsibility whatsoever for its use by other parties, * and makes no guarantees, expressed or implied, about its quality, * reliability, or any other characteristic. * <BR> * We would appreciate acknowledgement if the software is used. * <BR> * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING * FROM THE USE OF THIS SOFTWARE. * </PRE></P> * @author  rouil */#include "destclassifier.h"#include "mac802_16.h"#include "scheduling/wimaxscheduler.h"  /** * TCL Hooks for the simulator for classifier */static class DestClassifierClass : public TclClass {public:  DestClassifierClass() : TclClass("SDUClassifier/Dest") {}  TclObject* create(int, const char*const*) {    return (new DestClassifier());      }} class_destclassifier;/** * Create a classifier in the given mac * Constructor to be used by TCL */DestClassifier::DestClassifier (): SDUClassifier () {  }/** * Classify a packet and return the CID to use (or -1 if unknown) * @param p The packet to classify * @return The CID or -1 */int DestClassifier::classify (Packet * p) {  struct hdr_mac *dh = HDR_MAC(p);  int dst = dh->macDA();  mac_->debug ("At %f in Mac %d DestClassifier classifying packet for %d(size=%d, type=%s)\n",\	       NOW, mac_->addr(), dst, HDR_CMN(p)->size(), packet_info.name(HDR_CMN(p)->ptype()));  //here we look at the list of peer nodes until we find the one with   //the same destination address. Then we return its data communication  //if broadcast, then send to broadcast CID  if (dst == -1) {    if (mac_->getScheduler()->getNodeType ()==STA_BS)      return BROADCAST_CID;    else {      //I am a MN, check if I am connected      PeerNode *n = mac_->getPeerNode_head ();      //i should classify depending on the packet type.TBD      if (n && n->getSecondary())	return n->getSecondary()->get_cid();    }  }    for (PeerNode *n = mac_->getPeerNode_head (); n ; n=n->next_entry()) {    //printf ("Checking peer %d for %d\n", n->getPeerNode(), dst);    if (dst == n->getPeerNode ()) {      switch (HDR_CMN(p)->ptype()) {      case PT_ARP:#ifdef USE_802_21      case PT_RRED:      case PT_RADS:      case PT_RSOL:#endif	if (n->getSecondary())	  return n->getSecondary()->get_cid();	break;      default:	if (n->getOutData())	  return n->getOutData()->get_cid();	else //this node is not ready to send data	  break;      }    }  }  return -1;}

⌨️ 快捷键说明

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