static TypeId tid = TypeId ("ns3::MooseBridgeNetDevice")
.SetParent<BridgeNetDevice> ()
.AddConstructor<MooseBridgeNetDevice> ()
+ .AddAttribute ("MooseAddress",
+ "Bridge MOOSE Address",
+ MooseAddressValue(),
+ MakeMooseAddressAccessor (&MooseBridgeNetDevice::m_mooseAddress),
+ MakeMooseAddressChecker ())
.AddAttribute ("MooseExpirationTime",
"Time it takes for learned MOOSE state entry to expire.",
TimeValue (Seconds (30)),
NS_LOG_LOGIC("Using Allocated MOOSE Suffix: (" << moose.GetMoosePrefix().GetInt() << "," << moose.GetMooseSuffix().GetInt() << ")");
- state.expirationTime = now + m_expirationTime;
+ if(now + m_expirationTime > state.expirationTime){
+ state.expirationTime = now + m_expirationTime;
+ }
} else {
// Delete old and alloc new
}
+void MooseBridgeNetDevice::AddRoutes(std::map<MoosePrefixAddress, Ptr<BridgePortNetDevice> > routes){
+
+ for(std::map<MoosePrefixAddress, Ptr<BridgePortNetDevice> >::iterator it = routes.begin(); it != routes.end(); it ++){
+
+ PrefixState &state = m_prefixState[it->first];
+ state.associatedPort = it->second;
+ state.expirationTime = Simulator::GetMaximumSimulationTime();
+
+ }
+
+}
+
void MooseBridgeNetDevice::Learn(MooseAddress const& addr, Ptr<BridgePortNetDevice> port){
NS_LOG_FUNCTION_NOARGS ();
PrefixState &state = m_prefixState[addr.GetMoosePrefix()];
state.associatedPort = port;
- state.expirationTime = now + m_expirationTime;
+ if(now + m_expirationTime > state.expirationTime){
+ state.expirationTime = now + m_expirationTime;
+ }
} else {
PortState &state = m_portState[addr.GetMooseSuffix()];
state.associatedPort = port;
- state.expirationTime = now + m_expirationTime;
+ if(now + m_expirationTime > state.expirationTime){
+ state.expirationTime = now + m_expirationTime;
+ }
}
MooseAddress ToMoose(MooseAddress const& addr);
MooseAddress FromMoose(MooseAddress const& addr);
+ void AddRoutes(std::map<MoosePrefixAddress, Ptr<BridgePortNetDevice> > routes);
+
+ void SetMoosePrefixAddress(MoosePrefixAddress const& prefix);
+ MoosePrefixAddress GetMoosePrefixAddress();
protected:
virtual void ForwardUnicast (Ptr<BridgePortNetDevice> incomingPort, Ptr<const Packet> packet, uint16_t protocol, Mac48Address src, Mac48Address dst);
-
-// From NetDevice
-
-// Unconvinced we need these...
-
-// virtual bool Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber);
-// virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
-
-// From BridgeNetDevice
-
-/*
-
- virtual void Forward (Ptr<BridgePortNetDevice> port, Ptr<const Packet> packet, uint16_t protocol, Address const &src, Address const &dst, PacketType packetType);
- virtual void ForwardBroadcast (Ptr<BridgePortNetDevice> incomingPort, Ptr<const Packet> packet, uint16_t protocol, Mac48Address src, Mac48Address dst);
- virtual void Learn (Address const &src, Ptr<BridgePortNetDevice> port);
- virtual Ptr<BridgePortNetDevice> GetLearnedState (Mac48Address source); */
+
virtual Ptr<BridgePortNetDevice> CreateBridgePort(Ptr<BridgeNetDevice> bridge, Ptr<NetDevice> device, Ptr<Node> node);