[config] dhcp6 server (#4020)

This commit is contained in:
Jonathan Hui
2019-07-31 14:16:30 -07:00
parent 0d6f2be1dc
commit 0a14116b3d
18 changed files with 86 additions and 69 deletions
+2 -3
View File
@@ -64,13 +64,13 @@ python --version || die
-DOPENTHREAD_CONFIG_COAP_API_ENABLE=1 \
-DOPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE=1 \
-DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1 \
-DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1"
-DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1 \
-DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1"
scan-build ./configure \
--enable-builtin-mbedtls=no \
--enable-cert-log \
--enable-cli \
--enable-dhcp6-server \
--enable-diag \
--enable-dns-client \
--enable-ecdsa \
@@ -98,7 +98,6 @@ python --version || die
--enable-builtin-mbedtls=no \
--enable-cert-log \
--enable-cli \
--enable-dhcp6-server \
--enable-diag \
--enable-dns-client \
--enable-ecdsa \
+1 -1
View File
@@ -56,7 +56,7 @@ OPENTHREAD_COMMON_FLAGS += \
-DOPENTHREAD_CONFIG_COAP_API_ENABLE=1 \
-DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1 \
-DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1 \
-DOPENTHREAD_ENABLE_DHCP6_SERVER=1 \
-DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1 \
-DOPENTHREAD_ENABLE_DNS_CLIENT=1 \
-DOPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC=1 \
-DOPENTHREAD_ENABLE_REFERENCE_DEVICE=0 \
-1
View File
@@ -34,7 +34,6 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
--enable-address-sanitizer \
--enable-cert-log \
--enable-cli \
--enable-dhcp6-server \
--enable-diag \
--enable-dns-client \
--enable-ftd \
-31
View File
@@ -1143,36 +1143,6 @@ AC_SUBST(OPENTHREAD_NCP_SPINEL_ENCRYPTER_LIBS)
AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER],[${OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER}],[Define to 1 if using NCP Spinel Encrypter])
AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER], [test "${OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER}" = "1"])
#
# DHCPv6 Server
#
AC_ARG_ENABLE(dhcp6_server,
[AS_HELP_STRING([--enable-dhcp6-server],[Enable DHCPv6 server support @<:@default=no@:>@.])],
[
case "${enableval}" in
no|yes)
enable_dhcp6_server=${enableval}
;;
*)
AC_MSG_ERROR([Invalid value ${enable_dhcp6_server} for --enable-dhcp6-server])
;;
esac
],
[enable_dhcp6_server=no])
if test "$enable_dhcp6_server" = "yes"; then
OPENTHREAD_ENABLE_DHCP6_SERVER=1
else
OPENTHREAD_ENABLE_DHCP6_SERVER=0
fi
AC_SUBST(OPENTHREAD_ENABLE_DHCP6_SERVER)
AM_CONDITIONAL([OPENTHREAD_ENABLE_DHCP6_SERVER], [test "${enable_dhcp6_server}" = "yes"])
AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DHCP6_SERVER],[${OPENTHREAD_ENABLE_DHCP6_SERVER}],[Define to 1 if you want to enable DHCPv6 Server])
#
# DNS Client
#
@@ -1757,7 +1727,6 @@ AC_MSG_NOTICE([
OpenThread MAC Filter support : ${enable_mac_filter}
OpenThread Factory Diagnostics support : ${enable_diag}
OpenThread Legacy network support : ${enable_legacy}
OpenThread DHCPv6 Server support : ${enable_dhcp6_server}
OpenThread DNS Client support : ${enable_dns_client}
OpenThread SNTP Client support : ${enable_sntp_client}
OpenThread Raw Link-Layer support : ${enable_raw_link_api}
+1 -1
View File
@@ -111,7 +111,7 @@ COMMONCFLAGS += -DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1
endif
ifeq ($(DHCP6_SERVER),1)
configure_OPTIONS += --enable-dhcp6-server
COMMONCFLAGS += -DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1
endif
ifeq ($(DIAGNOSTIC),1)
+1
View File
@@ -326,6 +326,7 @@ HEADERS_COMMON = \
config/coap.h \
config/commissioner.h \
config/dhcp6_client.h \
config/dhcp6_server.h \
config/openthread-core-config-check.h \
config/openthread-core-default-config.h \
crypto/aes_ccm.hpp \
+1 -1
View File
@@ -605,7 +605,7 @@ template <> inline Dhcp6::Dhcp6Client &Instance::Get(void)
}
#endif
#if OPENTHREAD_ENABLE_DHCP6_SERVER
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
template <> inline Dhcp6::Dhcp6Server &Instance::Get(void)
{
return mThreadNetif.mDhcp6Server;
+58
View File
@@ -0,0 +1,58 @@
/*
* Copyright (c) 2019, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @file
* This file includes compile-time configurations for DHCPv6 Server.
*
*/
#ifndef CONFIG_DHCP6_SERVER_H_
#define CONFIG_DHCP6_SERVER_H_
/**
* @def OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
*
* Define to 1 to enable DHCPv6 Server support.
*
*/
#ifndef OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
#define OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE 0
#endif
/**
* @def OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES
*
* The number of dhcp prefixes.
*
*/
#ifndef OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES
#define OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES 4
#endif
#endif // CONFIG_DHCP6_SERVER_H_
@@ -813,16 +813,6 @@
#define OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION otPlatLog
#endif
/**
* @def OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES
*
* The number of dhcp prefixes.
*
*/
#ifndef OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES
#define OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES 4
#endif
/**
* @def OPENTHREAD_CONFIG_ENABLE_SLAAC
*
+8 -8
View File
@@ -41,7 +41,7 @@
#include "thread/mle.hpp"
#include "thread/thread_netif.hpp"
#if OPENTHREAD_ENABLE_DHCP6_SERVER
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
namespace ot {
namespace Dhcp6 {
@@ -64,7 +64,7 @@ otError Dhcp6Server::UpdateService(void)
Lowpan::Context lowpanContext;
// remove dhcp agent aloc and prefix delegation
for (int i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (int i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
bool found = false;
@@ -149,7 +149,7 @@ otError Dhcp6Server::AddPrefixAgent(const otIp6Prefix &aIp6Prefix, const Lowpan:
otError error = OT_ERROR_NONE;
PrefixAgent *newEntry = NULL;
for (int i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (int i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
if (!mPrefixAgents[i].IsValid())
{
@@ -312,7 +312,7 @@ otError Dhcp6Server::ProcessIaAddress(Message &aMessage, uint16_t aOffset)
error = OT_ERROR_PARSE);
// mask matching prefix
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
if (mPrefixAgents[i].IsValid() && mPrefixAgents[i].IsPrefixMatch(option.GetAddress()))
{
@@ -394,7 +394,7 @@ otError Dhcp6Server::AppendIaNa(Message &aMessage, IaNa &aIaNa)
if (mPrefixAgentsMask)
{
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
if ((mPrefixAgentsMask & (1 << i)))
{
@@ -434,7 +434,7 @@ otError Dhcp6Server::AppendIaAddress(Message &aMessage, ClientIdentifier &aClien
if (mPrefixAgentsMask)
{
// if specified, only apply specified prefixes
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
if (mPrefixAgentsMask & (1 << i))
{
@@ -445,7 +445,7 @@ otError Dhcp6Server::AppendIaAddress(Message &aMessage, ClientIdentifier &aClien
else
{
// if not specified, apply all configured prefixes
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES; i++)
for (uint8_t i = 0; i < OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES; i++)
{
if (mPrefixAgents[i].IsValid())
{
@@ -485,4 +485,4 @@ otError Dhcp6Server::AppendRapidCommit(Message &aMessage)
} // namespace Dhcp6
} // namespace ot
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
+1 -1
View File
@@ -214,7 +214,7 @@ private:
Ip6::UdpSocket mSocket;
PrefixAgent mPrefixAgents[OPENTHREAD_CONFIG_NUM_DHCP_PREFIXES];
PrefixAgent mPrefixAgents[OPENTHREAD_CONFIG_DHCP6_SERVER_NUM_PREFIXES];
uint8_t mPrefixAgentsCount;
uint8_t mPrefixAgentsMask;
};
+1
View File
@@ -52,6 +52,7 @@
#include "config/coap.h"
#include "config/commissioner.h"
#include "config/dhcp6_client.h"
#include "config/dhcp6_server.h"
#if OPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE || OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE || \
OPENTHREAD_CONFIG_COMMISSIONER_ENABLE || OPENTHREAD_ENABLE_JOINER
+2 -2
View File
@@ -396,7 +396,7 @@ otError MeshForwarder::UpdateIp6RouteFtd(Ip6::Header &ip6Header)
SuccessOrExit(error = MeshCoP::GetBorderAgentRloc(Get<ThreadNetif>(), mMeshDest));
}
#if OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
else if (aloc16 <= Mle::kAloc16DhcpAgentEnd)
{
uint16_t agentRloc16;
@@ -419,7 +419,7 @@ otError MeshForwarder::UpdateIp6RouteFtd(Ip6::Header &ip6Header)
}
}
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_ENABLE_SERVICE
else if ((aloc16 >= Mle::kAloc16ServiceStart) && (aloc16 <= Mle::kAloc16ServiceEnd))
{
+2 -2
View File
@@ -1555,9 +1555,9 @@ void Mle::HandleStateChanged(otChangedFlags aFlags)
#endif
#endif
#if OPENTHREAD_ENABLE_DHCP6_SERVER
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
Get<Dhcp6::Dhcp6Server>().UpdateService();
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
#if OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
Get<Dhcp6::Dhcp6Client>().UpdateAddresses();
+2 -2
View File
@@ -163,7 +163,7 @@ exit:
return error;
}
#if OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
otError LeaderBase::GetRlocByContextId(uint8_t aContextId, uint16_t &aRloc16)
{
otError error = OT_ERROR_NOT_FOUND;
@@ -188,7 +188,7 @@ otError LeaderBase::GetRlocByContextId(uint8_t aContextId, uint16_t &aRloc16)
exit:
return error;
}
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
bool LeaderBase::IsOnMesh(const Ip6::Address &aAddress)
{
+2 -2
View File
@@ -217,7 +217,7 @@ public:
*/
otError SetCommissioningData(const uint8_t *aValue, uint8_t aValueLength);
#if OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
/**
* This method gets the Rloc of Dhcp Agent of specified contextId.
*
@@ -229,7 +229,7 @@ public:
*
*/
otError GetRlocByContextId(uint8_t aContextId, uint16_t &aRloc16);
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE || OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
protected:
uint8_t mStableVersion;
+2 -2
View File
@@ -53,9 +53,9 @@ ThreadNetif::ThreadNetif(Instance &aInstance)
#if OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
, mDhcp6Client(aInstance)
#endif // OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_ENABLE_DHCP6_SERVER
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
, mDhcp6Server(aInstance)
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
#if OPENTHREAD_CONFIG_ENABLE_SLAAC
, mSlaac(aInstance)
#endif
+2 -2
View File
@@ -167,9 +167,9 @@ private:
#if OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
Dhcp6::Dhcp6Client mDhcp6Client;
#endif // OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE
#if OPENTHREAD_ENABLE_DHCP6_SERVER
#if OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
Dhcp6::Dhcp6Server mDhcp6Server;
#endif // OPENTHREAD_ENABLE_DHCP6_SERVER
#endif // OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE
#if OPENTHREAD_CONFIG_ENABLE_SLAAC
Utils::Slaac mSlaac;
#endif