mirror of
https://github.com/espressif/openthread.git
synced 2026-10-01 05:17:40 +00:00
[config] dhcp6 server (#4020)
This commit is contained in:
+2
-3
@@ -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
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user