diff options
Diffstat (limited to 'dev/etherdump.cc')
-rw-r--r-- | dev/etherdump.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/dev/etherdump.cc b/dev/etherdump.cc index 60dc1559d..6d86adc32 100644 --- a/dev/etherdump.cc +++ b/dev/etherdump.cc @@ -106,7 +106,7 @@ EtherDump::init() } void -EtherDump::dumpPacket(PacketPtr packet) +EtherDump::dumpPacket(PacketPtr &packet) { pcap_pkthdr pkthdr; pkthdr.ts.tv_sec = curtime + (curTick / s_freq); @@ -126,13 +126,27 @@ END_DECLARE_SIM_OBJECT_PARAMS(EtherDump) BEGIN_INIT_SIM_OBJECT_PARAMS(EtherDump) - INIT_PARAM_DFLT(file, "file to dump packets to", "") + INIT_PARAM(file, "file to dump packets to") END_INIT_SIM_OBJECT_PARAMS(EtherDump) CREATE_SIM_OBJECT(EtherDump) { - return new EtherDump(getInstanceName(), file); + string filename; + if (file.isValid()) { + filename = file; + + if (filename[0] != '/' && !outputDirectory.empty()) + filename = outputDirectory + filename; + } else { + if (outputDirectory.empty()) { + filename = "etherdump"; + } else { + filename = outputDirectory + "etherdump"; + } + } + + return new EtherDump(getInstanceName(), filename); } REGISTER_SIM_OBJECT("EtherDump", EtherDump) |