equal
deleted
inserted
replaced
35 |
35 |
36 namespace ns3 { |
36 namespace ns3 { |
37 |
37 |
38 CsmaCdNetDevice::CsmaCdNetDevice (Ptr<Node> node, Eui48Address addr, |
38 CsmaCdNetDevice::CsmaCdNetDevice (Ptr<Node> node, Eui48Address addr, |
39 CsmaCdEncapsulationMode encapMode) |
39 CsmaCdEncapsulationMode encapMode) |
40 : NetDevice(node, addr.ConvertTo ()), |
40 : NetDevice(node, addr), |
41 m_bps (DataRate (0xffffffff)) |
41 m_bps (DataRate (0xffffffff)) |
42 { |
42 { |
43 NS_DEBUG ("CsmaCdNetDevice::CsmaCdNetDevice (" << node << ")"); |
43 NS_DEBUG ("CsmaCdNetDevice::CsmaCdNetDevice (" << node << ")"); |
44 m_encapMode = encapMode; |
44 m_encapMode = encapMode; |
45 |
45 |
47 } |
47 } |
48 |
48 |
49 CsmaCdNetDevice::CsmaCdNetDevice (Ptr<Node> node, Eui48Address addr, |
49 CsmaCdNetDevice::CsmaCdNetDevice (Ptr<Node> node, Eui48Address addr, |
50 CsmaCdEncapsulationMode encapMode, |
50 CsmaCdEncapsulationMode encapMode, |
51 bool sendEnable, bool receiveEnable) |
51 bool sendEnable, bool receiveEnable) |
52 : NetDevice(node, addr.ConvertTo ()), |
52 : NetDevice(node, addr), |
53 m_bps (DataRate (0xffffffff)) |
53 m_bps (DataRate (0xffffffff)) |
54 { |
54 { |
55 NS_DEBUG ("CsmaCdNetDevice::CsmaCdNetDevice (" << node << ")"); |
55 NS_DEBUG ("CsmaCdNetDevice::CsmaCdNetDevice (" << node << ")"); |
56 m_encapMode = encapMode; |
56 m_encapMode = encapMode; |
57 |
57 |
94 m_txMachineState = READY; |
94 m_txMachineState = READY; |
95 m_tInterframeGap = Seconds(0); |
95 m_tInterframeGap = Seconds(0); |
96 m_channel = 0; |
96 m_channel = 0; |
97 m_queue = 0; |
97 m_queue = 0; |
98 |
98 |
99 EnableBroadcast (Eui48Address ("ff:ff:ff:ff:ff:ff").ConvertTo ()); |
99 EnableBroadcast (Eui48Address ("ff:ff:ff:ff:ff:ff")); |
100 EnableMulticast(); |
100 EnableMulticast(); |
101 EnablePointToPoint(); |
101 EnablePointToPoint(); |
102 |
102 |
103 SetSendEnable (sendEnable); |
103 SetSendEnable (sendEnable); |
104 SetReceiveEnable (receiveEnable); |
104 SetReceiveEnable (receiveEnable); |
158 { |
158 { |
159 return; |
159 return; |
160 } |
160 } |
161 EthernetHeader header (false); |
161 EthernetHeader header (false); |
162 EthernetTrailer trailer; |
162 EthernetTrailer trailer; |
163 Eui48Address source = Eui48Address::ConvertFrom (GetAddress ()); |
163 Eui48Address source = GetAddress (); |
164 header.SetSource(source); |
164 header.SetSource(source); |
165 header.SetDestination(dest); |
165 header.SetDestination(dest); |
166 |
166 |
167 uint16_t lengthType = 0; |
167 uint16_t lengthType = 0; |
168 switch (m_encapMode) |
168 switch (m_encapMode) |
199 |
199 |
200 p.RemoveTrailer(trailer); |
200 p.RemoveTrailer(trailer); |
201 trailer.CheckFcs(p); |
201 trailer.CheckFcs(p); |
202 p.RemoveHeader(header); |
202 p.RemoveHeader(header); |
203 |
203 |
204 Eui48Address broadcast = Eui48Address::ConvertFrom (GetBroadcast ()); |
204 Eui48Address broadcast = GetBroadcast (); |
205 Eui48Address destination = Eui48Address::ConvertFrom (GetAddress ()); |
205 Eui48Address destination = GetAddress (); |
206 if ((header.GetDestination() != broadcast) && |
206 if ((header.GetDestination() != broadcast) && |
207 (header.GetDestination() != destination)) |
207 (header.GetDestination() != destination)) |
208 { |
208 { |
209 return false; |
209 return false; |
210 } |
210 } |
250 |
250 |
251 // Only transmit if send side of net device is enabled |
251 // Only transmit if send side of net device is enabled |
252 if (!IsSendEnabled()) |
252 if (!IsSendEnabled()) |
253 return false; |
253 return false; |
254 |
254 |
255 Eui48Address address = Eui48Address::ConvertFrom (dest); |
255 Eui48Address address = dest; |
256 AddHeader(p, address, protocolNumber); |
256 AddHeader(p, address, protocolNumber); |
257 |
257 |
258 // Place the packet to be sent on the send queue |
258 // Place the packet to be sent on the send queue |
259 if (m_queue->Enqueue(p) == false ) |
259 if (m_queue->Enqueue(p) == false ) |
260 { |
260 { |