A single link record for a link state advertisement. More...
#include "global-router-interface.h"
Public Types | |
enum | LinkType { Unknown = 0 , PointToPoint , TransitNetwork , StubNetwork , VirtualLink } |
Enumeration of the possible types of Global Routing Link Records. More... | |
Public Member Functions | |
GlobalRoutingLinkRecord () | |
Construct an empty ("uninitialized") Global Routing Link Record. | |
GlobalRoutingLinkRecord (LinkType linkType, Ipv4Address linkId, Ipv4Address linkData, uint16_t metric) | |
Construct an initialized Global Routing Link Record. | |
~GlobalRoutingLinkRecord () | |
Destroy a Global Routing Link Record. | |
Ipv4Address | GetLinkData () const |
Get the Link Data field of the Global Routing Link Record. | |
Ipv4Address | GetLinkId () const |
Get the Link ID field of the Global Routing Link Record. | |
LinkType | GetLinkType () const |
Get the Link Type field of the Global Routing Link Record. | |
uint16_t | GetMetric () const |
Get the Metric Data field of the Global Routing Link Record. | |
void | SetLinkData (Ipv4Address addr) |
Set the Link Data field of the Global Routing Link Record. | |
void | SetLinkId (Ipv4Address addr) |
Set the Link ID field of the Global Routing Link Record. | |
void | SetLinkType (LinkType linkType) |
Set the Link Type field of the Global Routing Link Record. | |
void | SetMetric (uint16_t metric) |
Set the Metric Data field of the Global Routing Link Record. | |
Private Attributes | |
Ipv4Address | m_linkData |
m_linkId and m_linkData are defined by OSPF to have different meanings depending on the type of link a given link records represents. | |
Ipv4Address | m_linkId |
m_linkId and m_linkData are defined by OSPF to have different meanings depending on the type of link a given link records represents. | |
LinkType | m_linkType |
The type of the Global Routing Link Record. | |
uint16_t | m_metric |
The metric for a given link. | |
Friends | |
class | GlobalRoutingLSA |
Friend class. | |
A single link record for a link state advertisement.
The GlobalRoutingLinkRecord is modeled after the OSPF link record field of a Link State Advertisement. Right now we will only see two types of link records corresponding to a stub network and a point-to-point link (channel).
Definition at line 42 of file global-router-interface.h.
Enumeration of the possible types of Global Routing Link Records.
These values are defined in the OSPF spec. We currently only use PointToPoint and StubNetwork types.
Definition at line 54 of file global-router-interface.h.
ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord | ( | ) |
Construct an empty ("uninitialized") Global Routing Link Record.
The Link ID and Link Data Ipv4 addresses are set to "0.0.0.0"; The Link Type is set to Unknown; The metric is set to 0.
Definition at line 37 of file global-router-interface.cc.
References NS_LOG_FUNCTION.
ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord | ( | LinkType | linkType, |
Ipv4Address | linkId, | ||
Ipv4Address | linkData, | ||
uint16_t | metric ) |
Construct an initialized Global Routing Link Record.
linkType | The type of link record to construct. |
linkId | The link ID for the record. |
linkData | The link data field for the record. |
metric | The metric field for the record. |
Definition at line 46 of file global-router-interface.cc.
References NS_LOG_FUNCTION.
ns3::GlobalRoutingLinkRecord::~GlobalRoutingLinkRecord | ( | ) |
Destroy a Global Routing Link Record.
Currently does nothing. Here as a placeholder only.
Definition at line 58 of file global-router-interface.cc.
References NS_LOG_FUNCTION.
Ipv4Address ns3::GlobalRoutingLinkRecord::GetLinkData | ( | ) | const |
Get the Link Data field of the Global Routing Link Record.
For an OSPF type 1 link (PointToPoint) the Link Data will be the IP address of the node of the local side of the link.
For an OSPF type 3 link (StubNetwork), the Link Data will be the network mask
Definition at line 78 of file global-router-interface.cc.
References m_linkData, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouteManagerImpl::CheckForStubNode(), ns3::GlobalRoutingLSA::CopyLinkRecords(), ns3::GlobalRouteManagerLSDB::GetLSAByLinkData(), ns3::GlobalRouteManagerImpl::SPFGetNextLink(), ns3::GlobalRouteManagerImpl::SPFIntraAddRouter(), ns3::GlobalRouteManagerImpl::SPFIntraAddStub(), and ns3::GlobalRouteManagerImpl::SPFNexthopCalculation().
Ipv4Address ns3::GlobalRoutingLinkRecord::GetLinkId | ( | ) | const |
Get the Link ID field of the Global Routing Link Record.
For an OSPF type 1 link (PointToPoint) the Link ID will be the Router ID of the neighboring router.
For an OSPF type 3 link (StubNetwork), the Link ID will be the adjacent neighbor's IP address
Definition at line 64 of file global-router-interface.cc.
References m_linkId, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouteManagerImpl::CheckForStubNode(), ns3::GlobalRoutingLSA::CopyLinkRecords(), ns3::GlobalRouteManagerImpl::SPFGetNextLink(), ns3::GlobalRouteManagerImpl::SPFIntraAddStub(), ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::GlobalRouteManagerImpl::SPFProcessStubs().
GlobalRoutingLinkRecord::LinkType ns3::GlobalRoutingLinkRecord::GetLinkType | ( | ) | const |
Get the Link Type field of the Global Routing Link Record.
The Link Type describes the kind of link a given record represents. The values are defined by OSPF.
Definition at line 92 of file global-router-interface.cc.
References m_linkType, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouteManagerImpl::CheckForStubNode(), ns3::GlobalRoutingLSA::CopyLinkRecords(), ns3::GlobalRouteManagerLSDB::GetLSAByLinkData(), ns3::GlobalRouteManagerImpl::SPFIntraAddRouter(), ns3::GlobalRouteManagerImpl::SPFNext(), and ns3::GlobalRouteManagerImpl::SPFProcessStubs().
uint16_t ns3::GlobalRoutingLinkRecord::GetMetric | ( | ) | const |
Get the Metric Data field of the Global Routing Link Record.
The metric is an abstract cost associated with forwarding a packet across a link. A sum of metrics must have a well-defined meaning. That is, you shouldn't use bandwidth as a metric (how does the sum of the bandwidth of two hops relate to the cost of sending a packet); rather you should use something like delay.
Definition at line 106 of file global-router-interface.cc.
References m_metric, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRoutingLSA::CopyLinkRecords(), and ns3::GlobalRouteManagerImpl::SPFNext().
void ns3::GlobalRoutingLinkRecord::SetLinkData | ( | Ipv4Address | addr | ) |
Set the Link Data field of the Global Routing Link Record.
For an OSPF type 1 link (PointToPoint) the Link Data must be the IP address of the node of the local side of the link.
For an OSPF type 3 link (StubNetwork), the Link Data must be set to the network mask
addr | An Ipv4Address to store in the Link Data field of the record. |
Definition at line 85 of file global-router-interface.cc.
References m_linkData, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouter::ProcessBridgedBroadcastLink(), and ns3::GlobalRouter::ProcessPointToPointLink().
void ns3::GlobalRoutingLinkRecord::SetLinkId | ( | Ipv4Address | addr | ) |
Set the Link ID field of the Global Routing Link Record.
For an OSPF type 1 link (PointToPoint) the Link ID must be the Router ID of the neighboring router.
For an OSPF type 3 link (StubNetwork), the Link ID must be the adjacent neighbor's IP address
addr | An Ipv4Address to store in the Link ID field of the record. |
Definition at line 71 of file global-router-interface.cc.
References m_linkId, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouter::ProcessBridgedBroadcastLink(), and ns3::GlobalRouter::ProcessPointToPointLink().
void ns3::GlobalRoutingLinkRecord::SetLinkType | ( | GlobalRoutingLinkRecord::LinkType | linkType | ) |
Set the Link Type field of the Global Routing Link Record.
The Link Type describes the kind of link a given record represents. The values are defined by OSPF.
linkType | The new LinkType for the current Global Routing Link Record. |
Definition at line 99 of file global-router-interface.cc.
References m_linkType, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRoutingLSA::CopyLinkRecords(), ns3::GlobalRouter::ProcessBridgedBroadcastLink(), and ns3::GlobalRouter::ProcessPointToPointLink().
void ns3::GlobalRoutingLinkRecord::SetMetric | ( | uint16_t | metric | ) |
Set the Metric Data field of the Global Routing Link Record.
The metric is an abstract cost associated with forwarding a packet across a link. A sum of metrics must have a well-defined meaning. That is, you shouldn't use bandwidth as a metric (how does the sum of the bandwidth of two hops relate to the cost of sending a packet); rather you should use something like delay.
metric | The new metric for the current Global Routing Link Record. |
Definition at line 113 of file global-router-interface.cc.
References m_metric, and NS_LOG_FUNCTION.
Referenced by ns3::GlobalRouter::ProcessBridgedBroadcastLink(), and ns3::GlobalRouter::ProcessPointToPointLink().
|
friend |
Friend class.
Definition at line 45 of file global-router-interface.h.
|
private |
m_linkId and m_linkData are defined by OSPF to have different meanings depending on the type of link a given link records represents.
They work together.
For Type 1 link (PointToPoint), set m_linkData to local IP address
For Type 3 link (Stub), set m_linkData to mask
Definition at line 217 of file global-router-interface.h.
Referenced by GetLinkData(), ns3::GlobalRoutingLSA::Print(), and SetLinkData().
|
private |
m_linkId and m_linkData are defined by OSPF to have different meanings depending on the type of link a given link records represents.
They work together.
For Type 1 link (PointToPoint), set m_linkId to Router ID of neighboring router.
For Type 3 link (Stub), set m_linkId to neighbor's IP address
Definition at line 206 of file global-router-interface.h.
Referenced by GetLinkId(), ns3::GlobalRoutingLSA::Print(), and SetLinkId().
|
private |
The type of the Global Routing Link Record.
Defined in the OSPF spec. We currently only use PointToPoint and StubNetwork types.
Definition at line 223 of file global-router-interface.h.
Referenced by GetLinkType(), ns3::GlobalRoutingLSA::Print(), and SetLinkType().
|
private |
The metric for a given link.
A metric is abstract cost associated with forwarding a packet across a link. A sum of metrics must have a well-defined meaning. That is, you shouldn't use bandwidth as a metric (how does the sum of the bandwidth of two hops relate to the cost of sending a packet); rather you should use something like delay.
Definition at line 234 of file global-router-interface.h.
Referenced by GetMetric(), ns3::GlobalRoutingLSA::Print(), and SetMetric().