16#include "ns3/callback.h"
17#include "ns3/ipv6-address.h"
18#include "ns3/object.h"
19#include "ns3/socket.h"
182 bool addOnLinkRoute =
true) = 0;
L4 Protocol abstract base class.
Describes an IPv6 address.
virtual Ipv6InterfaceAddress GetAddress(uint32_t interface, uint32_t addressIndex) const =0
Get IPv6 address on specified IPv6 interface.
virtual Ipv6Address SourceAddressSelection(uint32_t interface, Ipv6Address dest)=0
Choose the source address to use with destination address.
~Ipv6() override
Destructor.
virtual void SetIpForward(bool forward)=0
Set IPv6 forwarding state.
static const uint32_t IF_ANY
Any interface magic number.
virtual bool RemoveAddress(uint32_t interface, Ipv6Address address)=0
Remove the given address on named Ipv6 interface.
virtual void Send(Ptr< Packet > packet, Ipv6Address source, Ipv6Address destination, uint8_t protocol, Ptr< Ipv6Route > route)=0
Higher-level layers call this method to send a packet down the stack to the MAC and PHY layers.
virtual uint16_t GetMtu(uint32_t interface) const =0
Get MTU for the specified IPv6 interface.
virtual void SetPmtu(Ipv6Address dst, uint32_t pmtu)=0
Set the Path MTU for the specified IPv6 destination address.
virtual void SetMtuDiscover(bool mtuDiscover)=0
Set IPv6 MTU discover state.
virtual int32_t GetInterfaceForDevice(Ptr< const NetDevice > device) const =0
Get the interface index of the specified NetDevice.
static TypeId GetTypeId()
Get the type ID.
virtual uint32_t GetNInterfaces() const =0
Get number of interfaces.
virtual bool IsUp(uint32_t interface) const =0
If the specified interface index is in "up" state.
virtual uint32_t AddInterface(Ptr< NetDevice > device)=0
Add a NetDevice interface.
virtual bool GetIpForward() const =0
Get IPv6 forwarding state.
virtual void RegisterExtensions()=0
Register the IPv6 Extensions.
virtual bool GetStrongEndSystemModel() const =0
Get the Strong End System Model status.
virtual int32_t GetInterfaceForPrefix(Ipv6Address address, Ipv6Prefix mask) const =0
Return the interface number of first interface found that has an IPv6 address within the prefix speci...
virtual uint16_t GetMetric(uint32_t interface) const =0
Get metric for the specified IPv6 interface.
virtual bool IsForwarding(uint32_t interface) const =0
If the specified IPv6 interface has forwarding enabled.
virtual Ptr< Ipv6RoutingProtocol > GetRoutingProtocol() const =0
Get the routing protocol to be used by this IPv6 stack.
virtual bool GetMtuDiscover() const =0
Get IPv6 MTU discover state.
virtual Ptr< IpL4Protocol > GetProtocol(int protocolNumber, int32_t interfaceIndex) const =0
Get L4 protocol by protocol number for the specified interface.
virtual void SetUp(uint32_t interface)=0
Set the interface into the "up" state.
virtual void SetForwarding(uint32_t interface, bool val)=0
Set forwarding on specified IPv6 interface.
virtual void RegisterOptions()=0
Register the IPv6 Options.
virtual int32_t GetInterfaceForAddress(Ipv6Address address) const =0
Return the interface number of the interface that has been assigned the specified IP address.
virtual void SetRoutingProtocol(Ptr< Ipv6RoutingProtocol > routingProtocol)=0
Register a new routing protocol to be used by this IPv6 stack.
virtual void SetMetric(uint32_t interface, uint16_t metric)=0
Set metric on specified Ipv6 interface.
virtual Ptr< IpL4Protocol > GetProtocol(int protocolNumber) const =0
Get L4 protocol by protocol number.
virtual void Insert(Ptr< IpL4Protocol > protocol, uint32_t interfaceIndex)=0
Add a L4 protocol to a specific interface.
virtual void Remove(Ptr< IpL4Protocol > protocol)=0
Remove a L4 protocol.
virtual bool AddAddress(uint32_t interface, Ipv6InterfaceAddress address, bool addOnLinkRoute=true)=0
Add an address on the specified IPv6 interface.
virtual uint32_t GetNAddresses(uint32_t interface) const =0
Get number of addresses on specified IPv6 interface.
virtual void Remove(Ptr< IpL4Protocol > protocol, uint32_t interfaceIndex)=0
Remove a L4 protocol from a specific interface.
virtual bool RemoveAddress(uint32_t interface, uint32_t addressIndex)=0
Remove an address on specified IPv6 interface.
virtual void SetDown(uint32_t interface)=0
Set the interface into the "down" state.
virtual void SetStrongEndSystemModel(bool model)=0
Set or unset the Strong End System Model.
virtual void Insert(Ptr< IpL4Protocol > protocol)=0
Add a L4 protocol.
virtual Ptr< NetDevice > GetNetDevice(uint32_t interface)=0
Get the NetDevice of the specified interface number.
IPv6 address associated with an interface.
Describes an IPv6 prefix.
Abstract base class for IPv6 routing protocols.
Network layer to device interface.
Smart pointer class similar to boost::intrusive_ptr.
a unique identifier for an interface.
Every class exported by the ns3 library is enclosed in the ns3 namespace.