#include <wired-phy.h>
Inheritance diagram for WiredPhy:


Public Member Functions | |
| WiredPhy (void) | |
| void | sendDown (Packet *p) |
| int | sendUp (Packet *p) |
| void | recv (Packet *p, Handler *h) |
| virtual void | recv (Packet *p, const char *s) |
| double | txtime (Packet *p) |
| double | txtime (int bytes) |
| virtual double | bittime () const |
| Phy * | nextchnl (void) const |
| void | insertchnl (struct if_head *head) |
| Phy * | nextnode (void) const |
| void | insertnode (struct if_head *head) |
| void | removechnl () |
| void | setchnl (Channel *chnl) |
| virtual void | setnode (Node *node) |
| virtual Node * | node (void) const |
| virtual Channel * | channel (void) const |
| virtual void | dump (void) const |
| LinkHead * | head () |
| NsObject * | uptarget () |
| NsObject * | downtarget () |
| virtual void | drop (Packet *p) |
| virtual void | recvOnly (Packet *) |
| virtual void | delay_bind_init_all () |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| int | isdebug () const |
| virtual void | debug (const char *fmt,...) |
Protected Member Functions | |
| int | command (int argc, const char *const *argv) |
| virtual void | sendDown (Packet *p, Handler *h) |
| virtual void | sendUp (Packet *p, Handler *h) |
| LIST_ENTRY (Phy) chnl_link_ | |
| LIST_ENTRY (Phy) node_link_ | |
| virtual void | drop (Packet *p, const char *s) |
| virtual void | reset () |
| void | handle (Event *) |
Protected Attributes | |
| int | index_ |
| Node * | node_ |
| LinkHead * | head_ |
| double | bandwidth_ |
| Channel * | channel_ |
| NsObject * | uptarget_ |
| NsObject * | downtarget_ |
| NsObject * | drop_ |
| int | debug_ |
Private Member Functions | |
| int | initialized () |
|
|
Definition at line 47 of file wired-phy.cc. References Phy::bandwidth_.
00047 : Phy() 00048 { 00049 //propagation_ = 0; 00050 //bandwidth_ = 10*1e6; // 10M 00051 bind_bw("bandwidth_", &bandwidth_); 00052 } |
|
|
Definition at line 85 of file phy.h. References Phy::bandwidth_.
00085 { return 1/bandwidth_; }
|
|
|
Definition at line 105 of file phy.h. References Phy::channel_. Referenced by SatLL::channel(), SatRouteObject::compute_topology(), SatChannel::find_peer_mac_addr(), LinkHandoffMgr::get_peer(), LinkHandoffMgr::get_peer_linkhead(), LinkHandoffMgr::get_peer_next_linkhead(), SatLinkHandoffMgr::handoff(), Mac802_3::sendDown(), and Channel::sendUp().
00105 {return channel_;}
|
|
||||||||||||
|
Reimplemented from Phy. Definition at line 56 of file wired-phy.cc. References Phy::command().
00056 {
00057 if (argc == 3) {
00058 TclObject *obj;
00059 if( (obj = TclObject::lookup(argv[2])) == 0) {
00060 fprintf(stderr, "%s lookup failed\n", argv[1]);
00061 return TCL_ERROR;
00062 }
00063
00064 //if (strcmp(argv[1], "propagation") == 0) {
00065 //assert(propagation_ == 0);
00066 //propagation_ = (TclObject*) obj;
00067 //return TCL_OK;
00068 //}
00069 }
00070
00071 return Phy::command(argc, argv);
00072 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 102 of file object.cc. References NsObject::debug_.
00103 {
00104 if (!debug_)
00105 return;
00106 va_list ap;
00107 va_start(ap, fmt);
00108 vprintf(fmt, ap);
00109 }
|
|
||||||||||||||||
|
Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 63 of file object.cc. References NsObject::debug_. Referenced by MPLSAddressClassifier::delay_bind_dispatch(), and Agent::delay_bind_dispatch().
00064 {
00065 if (delay_bind_bool(varName, localName, "debug_", &debug_, tracer))
00066 return TCL_OK;
00067 return TclObject::delay_bind_dispatch(varName, localName, tracer);
00068 }
|
|
|
Reimplemented in BayFullTcpAgent, Agent, MPLSAddressClassifier, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 57 of file object.cc. Referenced by MPLSAddressClassifier::delay_bind_init_all(), and Agent::delay_bind_init_all().
00058 {
00059 delay_bind_init_one("debug_");
00060 }
|
|
|
Definition at line 49 of file bi-connector.h. References BiConnector::downtarget_. Referenced by SatLL::channel().
00049 { return downtarget_; }
|
|
||||||||||||
|
Definition at line 144 of file bi-connector.cc. References BiConnector::drop_, Packet::free(), and NsObject::recv().
00145 {
00146 if (drop_ != 0)
00147 drop_->recv(p, s);
00148 else
00149 Packet::free(p);
00150 }
|
Here is the call graph for this function:
|
|
Definition at line 135 of file bi-connector.cc. References BiConnector::drop_, Packet::free(), and NsObject::recv(). Referenced by Mac802_3::collision(), Mac802_11::discard(), SMAC::drop_CTS(), SMAC::drop_DATA(), SMAC::drop_RTS(), SMAC::drop_SYNC(), UnslottedAlohaMac::end_of_contention(), MacTdma::recvHandler(), Mac::resume(), MacCsma::resume(), UnslottedAlohaMac::sendUp(), SatMac::sendUp(), Mac::sendUp(), MacTdma::TX_Time(), and Mac802_11::txtime().
00136 {
00137 if (drop_ != 0)
00138 drop_->recv(p);
00139 else
00140 Packet::free(p);
00141 }
|
Here is the call graph for this function:
|
|
Reimplemented in WirelessPhy. Definition at line 183 of file phy.cc. References Phy::channel_, Phy::index_, u_int32_t, and BiConnector::uptarget_. Referenced by WirelessPhy::dump(), MobileNode::dump(), and Channel::dump().
00184 {
00185 fprintf(stdout, "\tINDEX: %d\n",
00186 index_);
00187 fprintf(stdout, "\tuptarget: %x, channel: %x",
00188 (u_int32_t) uptarget_, (u_int32_t) channel_);
00189
00190 }
|
|
|
Implements Handler. Reimplemented in LinkDelay, LL, AckRecons, and Snoop. Definition at line 91 of file object.cc. References NsObject::recv().
|
Here is the call graph for this function:

|
|
Definition at line 108 of file phy.h. References Phy::head_. Referenced by SatRouteObject::compute_topology(), SatChannel::find_peer_mac_addr(), LinkHandoffMgr::get_peer(), LinkHandoffMgr::get_peer_linkhead(), and SatPhy::sendDown().
00108 { return head_; }
|
|
|
Definition at line 68 of file wired-phy.h. References BiConnector::downtarget_, Phy::node_, and BiConnector::uptarget_. Referenced by sendDown(), and sendUp().
00068 {
00069 return (node_ && uptarget_ && downtarget_ );
00070 }
|
|
|
Definition at line 89 of file phy.h. References LIST_INSERT_HEAD. Referenced by SatChannel::add_interface(), SatLinkHandoffMgr::handoff(), and TermLinkHandoffMgr::handoff().
00089 {
00090 LIST_INSERT_HEAD(head, this, chnl_link_);
00091 //channel_ = chnl;
00092 }
|
|
|
Definition at line 95 of file phy.h. References LIST_INSERT_HEAD. Referenced by SatNode::command(), and MobileNode::command().
00095 {
00096 LIST_INSERT_HEAD(head, this, node_link_);
00097 //node_ = node;
00098 }
|
|
|
Definition at line 61 of file object.h. References NsObject::debug_.
00061 { return debug_; }
|
|
|
|
|
|
|
|
|
Definition at line 88 of file phy.h. Referenced by SatRouteObject::compute_topology(), Channel::dump(), SatChannel::find_peer_mac_addr(), LinkHandoffMgr::get_peer(), LinkHandoffMgr::get_peer_linkhead(), NoDupChannel::sendUp(), and Channel::sendUp().
00088 { return chnl_link_.le_next; }
|
|
|
Definition at line 94 of file phy.h. Referenced by MobileNode::dump(), and Channel::sendUp().
00094 { return node_link_.le_next; }
|
|
|
Reimplemented in WirelessPhy. Definition at line 104 of file phy.h. References Phy::node_. Referenced by SatRouteObject::compute_topology(), SatChannel::find_peer_mac_addr(), SatLinkHandoffMgr::handoff(), TermLinkHandoffMgr::handoff(), MacTdma::radioSwitch(), Mac802_11::recv_timer(), Mac802_11::send(), and Channel::sendUp().
00104 { return node_; }
|
|
||||||||||||
|
Reimplemented in CMUTrace. Definition at line 96 of file object.cc. References Packet::free().
00097 {
00098 Packet::free(p);
00099 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented from BiConnector. Reimplemented in RepeaterPhy. Definition at line 106 of file phy.cc. References hdr_cmn::DOWN, Packet::free(), HDR_CMN, NsObject::recv(), Phy::sendDown(), Phy::sendUp(), hdr_cmn::UP, and BiConnector::uptarget_. Referenced by NoDupChannel::sendUp().
00107 {
00108 struct hdr_cmn *hdr = HDR_CMN(p);
00109 //struct hdr_sr *hsr = HDR_SR(p);
00110
00111 /*
00112 * Handle outgoing packets
00113 */
00114 switch(hdr->direction()) {
00115 case hdr_cmn::DOWN :
00116 /*
00117 * The MAC schedules its own EOT event so we just
00118 * ignore the handler here. It's only purpose
00119 * it distinguishing between incoming and outgoing
00120 * packets.
00121 */
00122 sendDown(p);
00123 return;
00124 case hdr_cmn::UP :
00125 if (sendUp(p) == 0) {
00126 /*
00127 * XXX - This packet, even though not detected,
00128 * contributes to the Noise floor and hence
00129 * may affect the reception of other packets.
00130 */
00131 Packet::free(p);
00132 return;
00133 } else {
00134 uptarget_->recv(p, (Handler*) 0);
00135 }
00136 break;
00137 default:
00138 printf("Direction for pkt-flow not specified; Sending pkt up the stack on default.\n\n");
00139 if (sendUp(p) == 0) {
00140 /*
00141 * XXX - This packet, even though not detected,
00142 * contributes to the Noise floor and hence
00143 * may affect the reception of other packets.
00144 */
00145 Packet::free(p);
00146 return;
00147 } else {
00148 uptarget_->recv(p, (Handler*) 0);
00149 }
00150 }
00151
00152 }
|
Here is the call graph for this function:

|
|
Reimplemented in Agent, and Trace. Definition at line 56 of file object.h. Referenced by Trace::recvOnly().
00056 {};
|
|
|
Definition at line 99 of file phy.h. References LIST_REMOVE. Referenced by SatLinkHandoffMgr::handoff(), TermLinkHandoffMgr::handoff(), and SatChannel::remove_interface().
00099 {
00100 LIST_REMOVE(this, chnl_link_);
00101 }
|
|
|
Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, and Queue< T >. Definition at line 70 of file object.cc. Referenced by NsObject::command().
00071 {
00072 }
|
|
||||||||||||
|
Reimplemented in Mac802_3. Definition at line 55 of file bi-connector.h. References BiConnector::downtarget_, and NsObject::recv(). Referenced by BiConnector::recv().
00056 { downtarget_->recv(p, h); }
|
Here is the call graph for this function:
|
|
Implements Phy. Definition at line 76 of file wired-phy.cc. References Phy::channel_, initialized(), and Channel::recv().
00077 {
00078 /*
00079 * Sanity Check
00080 */
00081 assert(initialized());
00082
00083 /*
00084 * Stamp the packet with the interface arguments, txtime and
00085 * info reqd by recving interface to determine
00086 * collision/contention
00087 */
00088
00089
00090 // and then send the packet
00091 channel_->recv(p, this);
00092 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in Mac802_3. Definition at line 57 of file bi-connector.h. References NsObject::recv(), and BiConnector::uptarget_. Referenced by BiConnector::recv().
|
Here is the call graph for this function:
|
|
Implements Phy. Definition at line 95 of file wired-phy.cc. References initialized().
00096 {
00097 /*
00098 * Sanity Check
00099 */
00100 assert(initialized());
00101
00102 /* check with propagation model for collision, channel
00103 contention */
00104 /* Return one if pkt recv , else return zero.*/
00105 return 1;
00106 }
|
Here is the call graph for this function:

|
|
Definition at line 102 of file phy.h. References Phy::channel_. Referenced by SatChannel::add_interface(), SatLinkHandoffMgr::handoff(), TermLinkHandoffMgr::handoff(), and SatChannel::remove_interface().
00102 { channel_ = chnl; }
|
|
|
Definition at line 103 of file phy.h. References Phy::node_. Referenced by SatNode::command(), and MobileNode::command().
00103 { node_ = node; }
|
|
|
Definition at line 83 of file phy.h. References Phy::bandwidth_.
00083 {
00084 return (8.0 * bytes / bandwidth_); }
|
|
|
Definition at line 81 of file phy.h. References hdr_cmn::access(), Phy::bandwidth_, and hdr_cmn::size(). Referenced by Mac802_3::collision(), Mac8023HandlerSend::handle(), Mac802_3::recv_complete(), MacHandlerRetx::schedule(), WirelessPhy::sendDown(), Mac802_3::sendDown(), Mac802_3::sendUp(), and Mac802_3::transmit().
00081 {
00082 return (hdr_cmn::access(p)->size() * 8.0) / bandwidth_; }
|
Here is the call graph for this function:

|
|
Definition at line 48 of file bi-connector.h. References BiConnector::uptarget_. Referenced by SatChannel::find_peer_mac_addr().
00048 { return uptarget_; }
|
|
|
Definition at line 137 of file phy.h. Referenced by Phy::bittime(), Phy::Phy(), Phy::txtime(), and WiredPhy(). |
|
|
Definition at line 138 of file phy.h. Referenced by Phy::channel(), Phy::command(), Phy::dump(), Phy::Phy(), WirelessPhy::sendDown(), sendDown(), RepeaterPhy::sendDown(), SatPhy::sendDown(), and Phy::setchnl(). |
|
|
Reimplemented in FECModel, FloodAgent, and LandmarkAgent. Definition at line 66 of file object.h. Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), RedPDQueue::enque(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), and REDQueue::reset(). |
|
|
Definition at line 63 of file bi-connector.h. Referenced by Phy::command(), BiConnector::command(), BiConnector::downtarget(), WirelessPhy::initialized(), initialized(), SMAC::initialized(), Mac::initialized(), FECModel::recv(), MacTdma::send(), UnslottedAlohaMac::sendDown(), SatMac::sendDown(), Mac::sendDown(), BiConnector::sendDown(), SMAC::transmit(), and Mac802_3::transmit(). |
|
|
Definition at line 64 of file bi-connector.h. Referenced by BiConnector::command(), and BiConnector::drop(). |
|
|
Definition at line 116 of file phy.h. Referenced by Phy::command(), Phy::head(), and Phy::Phy(). |
|
|
Definition at line 113 of file phy.h. Referenced by Phy::command(), Phy::dump(), and Phy::Phy(). |
|
|
Definition at line 115 of file phy.h. Referenced by WirelessPhy::command(), Phy::command(), WirelessPhy::initialized(), initialized(), WirelessPhy::node(), Phy::node(), Phy::Phy(), Phy::setnode(), WirelessPhy::UpdateIdleEnergy(), and WirelessPhy::WirelessPhy(). |
|
1.3.3