- **network/weight-S:** :ref:`cfg=network/weight-S`
- **ns3/TcpModel:** :ref:`options_pls`
+- **ns3/seed:** :ref:`options_pls`
- **path:** :ref:`cfg=path`
- **plugin:** :ref:`cfg=plugin`
'default' (no change to the ns-3 configuration), 'NewReno' or 'Reno' or
'Tahoe'.
+**Option** ``ns3/seed`` **Default:** "" (don't set the seed in ns-3)
+
+This option is the random seed to provide to ns-3 with
+``ns3::RngSeedManager::SetSeed`` and ``ns3::RngSeedManager::SetRun``.
+
+If left blank, no seed is set in ns-3. If the value 'time' is
+provided, the current amount of seconds since epoch is used as a seed.
+Otherwise, the provided value must be a number to use as a seed.
+
Configuring the Storage model
.............................
#include <unordered_set>
#include "xbt/config.hpp"
+#include "xbt/str.h"
#include "xbt/string.hpp"
#include "xbt/utility.hpp"
}
static simgrid::config::Flag<std::string>
- ns3_tcp_model("ns3/TcpModel", "The ns-3 tcp model can be : NewReno or Reno or Tahoe", "default");
+ ns3_tcp_model("ns3/TcpModel", "The ns-3 tcp model can be: NewReno or Reno or Tahoe", "default");
+static simgrid::config::Flag<std::string> ns3_seed(
+ "ns3/seed",
+ "The random seed provided to ns-3. Either 'time' to seed with time(), blank to not set (default), or a number.", "",
+ [](std::string val) {
+ if (val.length() == 0)
+ return;
+ if (strcasecmp(val.c_str(), "time") == 0) {
+ std::srand(time(NULL));
+ ns3::RngSeedManager::SetSeed(std::rand());
+ ns3::RngSeedManager::SetRun(std::rand());
+ } else {
+ int v = xbt_str_parse_int(
+ val.c_str(), "Invalid value for option ns3/seed. It must be either 'time', a number, or left empty.");
+ ns3::RngSeedManager::SetSeed(v);
+ ns3::RngSeedManager::SetRun(v);
+ }
+ });
namespace simgrid {
namespace kernel {
s4u::Link::SharingPolicy sharing_policy_;
void apply_event(profile::Event* event, double value) override;
- void set_bandwidth(double value) override { THROW_UNIMPLEMENTED; }
- void set_latency(double value) override { THROW_UNIMPLEMENTED; }
+ void set_bandwidth(double) override { THROW_UNIMPLEMENTED; }
+ void set_latency(double) override { THROW_UNIMPLEMENTED; }
void set_bandwidth_profile(profile::Profile* profile) override;
void set_latency_profile(profile::Profile* profile) override;
s4u::Link::SharingPolicy get_sharing_policy() override {return sharing_policy_;}