[ip6] allow hop limit 0 (#3077)

This commit is contained in:
Yakun Xu
2018-09-18 06:29:50 -10:00
committed by Jonathan Hui
parent 7132effa91
commit 136a444565
4 changed files with 35 additions and 5 deletions
+2 -2
View File
@@ -138,7 +138,7 @@ otError Ip6::AddTunneledMplOption(Message &aMessage, Header &aHeader, MessageInf
messageInfo.GetPeerAddr().mFields.m16[7] = HostSwap16(0x00fc);
tunnelHeader.Init();
tunnelHeader.SetHopLimit(static_cast<uint8_t>(kDefaultHopLimit));
tunnelHeader.SetHopLimit(kDefaultHopLimit);
tunnelHeader.SetPayloadLength(aHeader.GetPayloadLength() + sizeof(tunnelHeader));
tunnelHeader.SetDestination(messageInfo.GetPeerAddr());
tunnelHeader.SetNextHeader(kProtoIp6);
@@ -361,7 +361,7 @@ otError Ip6::SendDatagram(Message &aMessage, MessageInfo &aMessageInfo, IpProto
header.Init();
header.SetPayloadLength(payloadLength);
header.SetNextHeader(aIpProto);
header.SetHopLimit(aMessageInfo.mHopLimit ? aMessageInfo.mHopLimit : static_cast<uint8_t>(kDefaultHopLimit));
header.SetHopLimit(aMessageInfo.mHopLimit);
if (aMessageInfo.GetSockAddr().IsUnspecified() || aMessageInfo.GetSockAddr().IsMulticast())
{
+2 -2
View File
@@ -103,8 +103,8 @@ class Ip6 : public InstanceLocator
public:
enum
{
kDefaultHopLimit = 64,
kMaxDatagramLength = 1280,
kDefaultHopLimit = OPENTHREAD_CONFIG_IPV6_DEFAULT_HOP_LIMIT,
kMaxDatagramLength = OPENTHREAD_CONFIG_IPV6_DEFAULT_MAX_DATAGRAM,
};
/**
+11 -1
View File
@@ -59,7 +59,11 @@ public:
* This constructor initializes the object.
*
*/
MessageInfo(void) { memset(this, 0, sizeof(*this)); }
MessageInfo(void)
{
memset(this, 0, sizeof(*this));
mHopLimit = kDefaultHopLimit;
}
/**
* This method returns a reference to the local socket address.
@@ -180,6 +184,12 @@ public:
*
*/
void SetLinkInfo(const void *aLinkInfo) { mLinkInfo = aLinkInfo; }
private:
enum
{
kDefaultHopLimit = OPENTHREAD_CONFIG_IPV6_DEFAULT_HOP_LIMIT,
};
};
/**
+20
View File
@@ -1830,4 +1830,24 @@
#ifndef OPENTHREAD_CONFIG_DEFAULT_SED_DATAGRAM_COUNT
#define OPENTHREAD_CONFIG_DEFAULT_SED_DATAGRAM_COUNT 1
#endif
/**
* @def OPENTHREAD_CONFIG_IPV6_DEFAULT_HOP_LIMIT
*
* This setting configures the default hop limit of IPv6.
*
*/
#ifndef OPENTHREAD_CONFIG_IPV6_DEFAULT_HOP_LIMIT
#define OPENTHREAD_CONFIG_IPV6_DEFAULT_HOP_LIMIT 64
#endif
/**
* @def OPENTHREAD_CONFIG_IPV6_DEFAULT_MAX_DATAGRAM
*
* This setting configures the max datagram length of IPv6.
*
*/
#ifndef OPENTHREAD_CONFIG_IPV6_DEFAULT_MAX_DATAGRAM
#define OPENTHREAD_CONFIG_IPV6_DEFAULT_MAX_DATAGRAM 1280
#endif
#endif // OPENTHREAD_CORE_DEFAULT_CONFIG_H_