?? forwarder.cc
字號:
#include <template.h>#include <random.h>#include <address.h>#include <iostream.h>#include <rtp.h>#include <forwarder.h>static class ForwardAgentClass : public TclClass {public: ForwardAgentClass():TclClass("Agent/Forwarder") {} TclObject* create(int, const char*const*) { return (new ForwardAgent()); }} class_forwarderagent;ForwardAgent::ForwardAgent() : Agent(PT_UDP),ragent_(0){ dst_addr_=-1; comm_type=0; }int ForwardAgent::command(int argc, const char*const* argv){ if (argc == 3) { if (strcmp(argv[1], "ragent") == 0) { cout << "set ragent " << endl; ragent_ = (NsObject *)TclObject::lookup(argv[2]); return TCL_OK; } if (strcmp(argv[1], "dst-addr") == 0) { dst_addr_ = atoi(argv[2]); return TCL_OK; } if (strcmp(argv[1], "comm-type") == 0) { comm_type = atoi(argv[2]); // 0 broastcast 1 unicast return TCL_OK; } } return (Agent::command(argc, argv));}void ForwardAgent::recv(Packet* p, Handler *){ Tcl& tcl = Tcl::instance(); hdr_rtp *rh = hdr_rtp::access(p); hdr_ip *iph = hdr_ip::access(p); hdr_cmn *ch = hdr_cmn::access(p); // cout << addr() <<"\t recieving a packet dp " << iph->dport() << " dst_addr" << iph->daddr()<< endl; // ch->next_hop_ = IP_BROADCAST; iph->sport()=port(); iph->saddr()=addr(); if(comm_type==0) { iph->daddr() = IP_BROADCAST; }else { iph->daddr()=dst_addr_; } iph->dport() = 3; ragent_->recv(p, (Handler*)0); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -