76 Ptr<PcapWriter> pcap = Create<PcapWriter> (); |
76 Ptr<PcapWriter> pcap = Create<PcapWriter> (); |
77 pcap->Open (oss.str ()); |
77 pcap->Open (oss.str ()); |
78 pcap->WriteEthernetHeader (); |
78 pcap->WriteEthernetHeader (); |
79 |
79 |
80 oss.str (""); |
80 oss.str (""); |
81 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
81 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/Sniffer"; |
82 "/$ns3::EmuNetDevice/Rx"; |
82 Config::ConnectWithoutContext (oss.str (), MakeBoundCallback (&EmuHelper::SniffEvent, pcap)); |
83 Config::ConnectWithoutContext (oss.str (), |
|
84 MakeBoundCallback (&EmuHelper::RxEvent, pcap)); |
|
85 |
|
86 oss.str (""); |
|
87 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
|
88 "/$ns3::EmuNetDevice/TxQueue/Enqueue"; |
|
89 Config::ConnectWithoutContext (oss.str (), |
|
90 MakeBoundCallback (&EmuHelper::EnqueueEvent, pcap)); |
|
91 } |
83 } |
92 |
84 |
93 void |
85 void |
94 EmuHelper::EnablePcap (std::string filename, NetDeviceContainer d) |
86 EmuHelper::EnablePcap (std::string filename, NetDeviceContainer d) |
95 { |
87 { |
129 { |
121 { |
130 NS_LOG_FUNCTION (&os << nodeid << deviceid); |
122 NS_LOG_FUNCTION (&os << nodeid << deviceid); |
131 Packet::EnablePrinting (); |
123 Packet::EnablePrinting (); |
132 std::ostringstream oss; |
124 std::ostringstream oss; |
133 |
125 |
134 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
126 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/MacRx"; |
135 "/$ns3::EmuNetDevice/Rx"; |
127 Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiRxEvent, &os)); |
136 Config::Connect (oss.str (), |
128 |
137 MakeBoundCallback (&EmuHelper::AsciiRxEvent, &os)); |
129 oss.str (""); |
138 |
130 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Enqueue"; |
139 oss.str (""); |
131 Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiEnqueueEvent, &os)); |
140 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
132 |
141 "/$ns3::EmuNetDevice/TxQueue/Enqueue"; |
133 oss.str (""); |
142 Config::Connect (oss.str (), |
134 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Dequeue"; |
143 MakeBoundCallback (&EmuHelper::AsciiEnqueueEvent, &os)); |
135 Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiDequeueEvent, &os)); |
144 |
136 |
145 oss.str (""); |
137 oss.str (""); |
146 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
138 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << "/$ns3::EmuNetDevice/TxQueue/Drop"; |
147 "/$ns3::EmuNetDevice/TxQueue/Dequeue"; |
139 Config::Connect (oss.str (), MakeBoundCallback (&EmuHelper::AsciiDropEvent, &os)); |
148 Config::Connect (oss.str (), |
|
149 MakeBoundCallback (&EmuHelper::AsciiDequeueEvent, &os)); |
|
150 |
|
151 oss.str (""); |
|
152 oss << "/NodeList/" << nodeid << "/DeviceList/" << deviceid << |
|
153 "/$ns3::EmuNetDevice/TxQueue/Drop"; |
|
154 Config::Connect (oss.str (), |
|
155 MakeBoundCallback (&EmuHelper::AsciiDropEvent, &os)); |
|
156 } |
140 } |
157 |
141 |
158 void |
142 void |
159 EmuHelper::EnableAscii (std::ostream &os, NetDeviceContainer d) |
143 EmuHelper::EnableAscii (std::ostream &os, NetDeviceContainer d) |
160 { |
144 { |
226 |
210 |
227 return device; |
211 return device; |
228 } |
212 } |
229 |
213 |
230 void |
214 void |
231 EmuHelper::EnqueueEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet) |
215 EmuHelper::SniffEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet) |
232 { |
216 { |
233 NS_LOG_FUNCTION (writer << packet); |
217 NS_LOG_FUNCTION (writer << packet); |
234 writer->WritePacket (packet); |
218 writer->WritePacket (packet); |
235 } |
219 } |
236 |
220 |
237 void |
221 void |
238 EmuHelper::RxEvent (Ptr<PcapWriter> writer, Ptr<const Packet> packet) |
|
239 { |
|
240 NS_LOG_FUNCTION (writer << packet); |
|
241 writer->WritePacket (packet); |
|
242 } |
|
243 |
|
244 void |
|
245 EmuHelper::AsciiEnqueueEvent ( |
222 EmuHelper::AsciiEnqueueEvent ( |
246 std::ostream *os, |
223 std::ostream *os, |
247 std::string path, |
224 std::string path, |
248 Ptr<const Packet> packet) |
225 Ptr<const Packet> packet) |
249 { |
226 { |