📄 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 + -