mirror of
https://github.com/espressif/openthread.git
synced 2026-08-08 11:47:46 +00:00
[ncp] enable DHCPv6 PD support on the NCP (#12108)
This commit is contained in:
@@ -1514,6 +1514,8 @@ const char *spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
|
||||
{SPINEL_PROP_RCP_MAC_KEY, "RCP_MAC_KEY"},
|
||||
{SPINEL_PROP_DEBUG_LOG_TIMESTAMP_BASE, "DEBUG_LOG_TIMESTAMP_BASE"},
|
||||
{SPINEL_PROP_DEBUG_TREL_TEST_MODE_ENABLE, "DEBUG_TREL_TEST_MODE_ENABLE"},
|
||||
{SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_ENABLE, "SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_ENABLE"},
|
||||
{SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_PREFIX, "SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_PREFIX"},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
|
||||
@@ -5014,6 +5014,32 @@ enum
|
||||
|
||||
SPINEL_PROP_BACKBONE_ROUTER__END = 0x990,
|
||||
|
||||
SPINEL_PROP_BORDER_ROUTER__BEGIN = 0x990,
|
||||
|
||||
/// Enables or Disables DHCPv6 Prefix Delegation
|
||||
/**
|
||||
* Format: `b` - Write-Only
|
||||
*
|
||||
* `b`: Enables or disables DHCPv6 Prefix Delegation
|
||||
*/
|
||||
SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_ENABLE = SPINEL_PROP_BORDER_ROUTER__BEGIN + 1,
|
||||
|
||||
/// Process DHCPv6 Prefix Delegation Prefix
|
||||
/**
|
||||
* Format: `6CLL` - Write-Only
|
||||
*
|
||||
* This property is used to provide a DHCPv6 Prefix Delegation (PD) prefix to the OpenThread stack
|
||||
* via the NCP interface. It calls `otPlatBorderRoutingProcessDhcp6PdPrefix()`.
|
||||
*
|
||||
* `6` : IPv6 prefix address
|
||||
* `C` : Prefix length in bits
|
||||
* `L` : Valid lifetime in seconds
|
||||
* `L` : Preferred lifetime in seconds
|
||||
*/
|
||||
SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_PREFIX = SPINEL_PROP_BORDER_ROUTER__BEGIN + 2,
|
||||
|
||||
SPINEL_PROP_BORDER_ROUTER__END = 0x9A0,
|
||||
|
||||
SPINEL_PROP_NEST__BEGIN = 0x3BC0,
|
||||
|
||||
SPINEL_PROP_NEST_STREAM_MFG = SPINEL_PROP_NEST__BEGIN + 0,
|
||||
|
||||
@@ -555,6 +555,12 @@ NcpBase::PropertyHandler NcpBase::FindSetPropertyHandler(spinel_prop_key_t aKey)
|
||||
#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE
|
||||
OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_BACKBONE_ROUTER_ENABLE),
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE && OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
|
||||
OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_ENABLE),
|
||||
#if !OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_CLIENT_ENABLE
|
||||
OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_PREFIX),
|
||||
#endif
|
||||
#endif
|
||||
#endif // OPENTHREAD_FTD
|
||||
#if OPENTHREAD_MTD || OPENTHREAD_FTD
|
||||
OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER),
|
||||
|
||||
@@ -1648,6 +1648,44 @@ template <> otError NcpBase::HandlePropertyGet<SPINEL_PROP_SRP_SERVER_AUTO_ENABL
|
||||
#endif // OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
|
||||
#endif // OPENTHREAD_CONFIG_SRP_SERVER_ENABLE
|
||||
|
||||
#if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE && OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
|
||||
template <> otError NcpBase::HandlePropertySet<SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_ENABLE>(void)
|
||||
{
|
||||
otError error = OT_ERROR_NONE;
|
||||
bool enable;
|
||||
|
||||
SuccessOrExit(error = mDecoder.ReadBool(enable));
|
||||
otBorderRoutingDhcp6PdSetEnabled(mInstance, enable);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
#if !OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_CLIENT_ENABLE
|
||||
template <> otError NcpBase::HandlePropertySet<SPINEL_PROP_BORDER_ROUTER_DHCP6_PD_PREFIX>(void)
|
||||
{
|
||||
otError error = OT_ERROR_NONE;
|
||||
otBorderRoutingPrefixTableEntry prefixEntry;
|
||||
const otIp6Address *prefixAddr;
|
||||
|
||||
memset(&prefixEntry, 0, sizeof(prefixEntry));
|
||||
|
||||
SuccessOrExit(error = mDecoder.ReadIp6Address(prefixAddr));
|
||||
prefixEntry.mPrefix.mPrefix = *prefixAddr;
|
||||
SuccessOrExit(error = mDecoder.ReadUint8(prefixEntry.mPrefix.mLength));
|
||||
|
||||
SuccessOrExit(error = mDecoder.ReadUint32(prefixEntry.mValidLifetime));
|
||||
SuccessOrExit(error = mDecoder.ReadUint32(prefixEntry.mPreferredLifetime));
|
||||
|
||||
otPlatBorderRoutingProcessDhcp6PdPrefix(mInstance, &prefixEntry);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE && OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE
|
||||
|
||||
#if OPENTHREAD_CONFIG_NCP_DNSSD_ENABLE && OPENTHREAD_CONFIG_PLATFORM_DNSSD_ENABLE
|
||||
|
||||
void NcpBase::DnssdRegisterHost(const otPlatDnssdHost *aHost,
|
||||
|
||||
Reference in New Issue
Block a user