src/common/pcap-writer.cc
changeset 122 6b8f1eda5c57
parent 111 ad64f88919b5
child 131 f4fb87e77034
equal deleted inserted replaced
121:f8bc1a370b82 122:6b8f1eda5c57
    44 {
    44 {
    45     delete m_writer;
    45     delete m_writer;
    46 }
    46 }
    47 
    47 
    48 void
    48 void
    49 PcapWriter::open (char const *name)
    49 PcapWriter::Open (char const *name)
    50 {
    50 {
    51     m_writer = new SystemFile ();
    51     m_writer = new SystemFile ();
    52     m_writer->open (name);
    52     m_writer->Open (name);
    53 }
    53 }
    54 
    54 
    55 void 
    55 void 
    56 PcapWriter::writeHeaderEthernet (void)
    56 PcapWriter::WriteHeaderEthernet (void)
    57 {
    57 {
    58     write_32 (0xa1b2c3d4);
    58     Write32 (0xa1b2c3d4);
    59     write_16 (2);
    59     Write16 (2);
    60     write_16 (4);
    60     Write16 (4);
    61     write_32 (0);
    61     Write32 (0);
    62     write_32 (0);
    62     Write32 (0);
    63     write_32 (0xffff);
    63     Write32 (0xffff);
    64     write_32 (PCAP_ETHERNET);
    64     Write32 (PCAP_ETHERNET);
    65 }
    65 }
    66 
    66 
    67 void 
    67 void 
    68 PcapWriter::writePacket (Packet const packet)
    68 PcapWriter::WritePacket (Packet const packet)
    69 {
    69 {
    70     if (m_writer != 0) {
    70     if (m_writer != 0) {
    71         uint64_t current = Simulator::now ().us ();
    71         uint64_t current = Simulator::Now ().Us ();
    72         uint64_t s = current / 1000000;
    72         uint64_t s = current / 1000000;
    73         uint64_t us = current % 1000000;
    73         uint64_t us = current % 1000000;
    74         write_32 (s & 0xffffffff);
    74         Write32 (s & 0xffffffff);
    75         write_32 (us & 0xffffffff);
    75         Write32 (us & 0xffffffff);
    76         write_32 (packet.getSize ());
    76         Write32 (packet.GetSize ());
    77         write_32 (packet.getSize ());
    77         Write32 (packet.GetSize ());
    78     	m_writer->write (packet.peekData (), packet.getSize ());
    78     	m_writer->Write (packet.PeekData (), packet.GetSize ());
    79     }
    79     }
    80 }
    80 }
    81 
    81 
    82 void
    82 void
    83 PcapWriter::writeData (uint8_t *buffer, uint32_t size)
    83 PcapWriter::WriteData (uint8_t *buffer, uint32_t size)
    84 {
    84 {
    85     m_writer->write (buffer, size);
    85     m_writer->Write (buffer, size);
    86 }
    86 }
    87 void
    87 void
    88 PcapWriter::write_32 (uint32_t data)
    88 PcapWriter::Write32 (uint32_t data)
    89 {
    89 {
    90     m_writer->write ((uint8_t*)&data, 4);
    90     m_writer->Write ((uint8_t*)&data, 4);
    91 }
    91 }
    92 void
    92 void
    93 PcapWriter::write_16 (uint16_t data)
    93 PcapWriter::Write16 (uint16_t data)
    94 {
    94 {
    95     m_writer->write ((uint8_t*)&data, 2);
    95     m_writer->Write ((uint8_t*)&data, 2);
    96 }
    96 }
    97 
    97 
    98 }; // namespace ns3
    98 }; // namespace ns3