mirror of
https://github.com/espressif/openthread.git
synced 2026-06-05 21:14:49 +00:00
9cb667c01f
This commit adds the following new API: - otBorderRoutingProcessIcmp6Ra And related APIs: - otBorderRoutingDhcp6PdSetEnabled - otBorderRoutingGetPdOmrPrefix They are used to support the DHCPv6 PD on Thread Border Routers. On a typical OS, the DHCPv6 Client of the platform network stack will request a IPv6 subnet via DHCPv6-PD, then invoke the daemon for sending router advertisements on the given interface. With this commit, the RA will be catched by the processTransmit in netif.cpp, which will then pass the message to otBorderRoutingAddPrefixByRouterAdvertisement, RoutingManager will then add the prefix according to the PIO in the router advertisement, and take care of the lifetime of the prefix added.
343 lines
10 KiB
Bash
Executable File
343 lines
10 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
#
|
|
# The script to check or format source code of OpenThread.
|
|
#
|
|
# Format c/c++, markdown, python, and shell:
|
|
#
|
|
# script/make-pretty
|
|
#
|
|
# Format c/c++ only:
|
|
#
|
|
# script/make-pretty clang
|
|
# script/make-pretty clang-format
|
|
# script/make-pretty clang-tidy
|
|
#
|
|
# Format markdown only:
|
|
#
|
|
# script/make-pretty markdown
|
|
#
|
|
# Format python only:
|
|
#
|
|
# script/make-pretty python
|
|
#
|
|
# Format shell only:
|
|
#
|
|
# script/make-pretty shell
|
|
#
|
|
# Check only:
|
|
#
|
|
# script/make-pretty check clang
|
|
# script/make-pretty check clang-format
|
|
# script/make-pretty check clang-tidy
|
|
# script/make-pretty check markdown
|
|
# script/make-pretty check python
|
|
# script/make-pretty check shell
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
OT_BUILD_JOBS=$(getconf _NPROCESSORS_ONLN)
|
|
readonly OT_BUILD_JOBS
|
|
|
|
OT_EXCLUDE_DIRS=(third_party doc/site)
|
|
readonly OT_EXCLUDE_DIRS
|
|
|
|
OT_CLANG_SOURCES=('*.c' '*.cc' '*.cpp' '*.h' '*.hpp')
|
|
readonly OT_CLANG_SOURCES
|
|
|
|
OT_MARKDOWN_SOURCES=('*.md')
|
|
readonly OT_MARKDOWN_SOURCES
|
|
|
|
OT_PYTHON_SOURCES=('*.py')
|
|
readonly OT_PYTHON_SOURCES
|
|
|
|
OT_CLANG_TIDY_FIX_DIRS=('examples' 'include' 'src' 'tests')
|
|
readonly OT_CLANG_TIDY_FIX_DIRS
|
|
|
|
OT_CLANG_TIDY_BUILD_OPTS=(
|
|
'-DCMAKE_EXPORT_COMPILE_COMMANDS=ON'
|
|
'-DOT_ANYCAST_LOCATOR=ON'
|
|
'-DOT_APP_RCP=OFF'
|
|
'-DOT_MTD=OFF'
|
|
'-DOT_RCP=OFF'
|
|
'-DOT_PLATFORM=simulation'
|
|
'-DOT_BACKBONE_ROUTER=ON'
|
|
'-DOT_BORDER_AGENT=ON'
|
|
'-DOT_BORDER_ROUTER=ON'
|
|
'-DOT_BORDER_ROUTING=ON'
|
|
'-DOT_BORDER_ROUTING_DHCP6_PD=ON'
|
|
'-DOT_CHANNEL_MANAGER=ON'
|
|
'-DOT_CHANNEL_MONITOR=ON'
|
|
'-DOT_COAP=ON'
|
|
'-DOT_COAP_BLOCK=ON'
|
|
'-DOT_COAP_OBSERVE=ON'
|
|
'-DOT_COAPS=ON'
|
|
'-DOT_COMMISSIONER=ON'
|
|
'-DOT_CSL_RECEIVER=ON'
|
|
'-DOT_DATASET_UPDATER=ON'
|
|
'-DOT_DHCP6_CLIENT=ON'
|
|
'-DOT_DHCP6_SERVER=ON'
|
|
'-DOT_DIAGNOSTIC=ON'
|
|
'-DOT_DNS_CLIENT=ON'
|
|
'-DOT_DNS_DSO=ON'
|
|
'-DOT_DNS_UPSTREAM_QUERY=ON'
|
|
'-DOT_DNSSD_SERVER=ON'
|
|
'-DOT_DUA=ON'
|
|
'-DOT_MLR=ON'
|
|
'-DOT_ECDSA=ON'
|
|
'-DOT_HISTORY_TRACKER=ON'
|
|
'-DOT_IP6_FRAGM=ON'
|
|
'-DOT_JAM_DETECTION=ON'
|
|
'-DOT_JOINER=ON'
|
|
'-DOT_LINK_RAW=ON'
|
|
'-DOT_LINK_METRICS_INITIATOR=ON'
|
|
'-DOT_LINK_METRICS_SUBJECT=ON'
|
|
'-DOT_MAC_FILTER=ON'
|
|
'-DOT_MESH_DIAG=ON'
|
|
'-DOT_NAT64_BORDER_ROUTING=ON'
|
|
'-DOT_NAT64_TRANSLATOR=ON'
|
|
'-DOT_NETDATA_PUBLISHER=ON'
|
|
'-DOT_NETDIAG_CLIENT=ON'
|
|
'-DOT_PING_SENDER=ON'
|
|
'-DOT_REFERENCE_DEVICE=ON'
|
|
'-DOT_SERVICE=ON'
|
|
'-DOT_SLAAC=ON'
|
|
'-DOT_SNTP_CLIENT=ON'
|
|
'-DOT_SRP_CLIENT=ON'
|
|
'-DOT_SRP_SERVER=ON'
|
|
'-DOT_THREAD_VERSION=1.3'
|
|
'-DOT_TREL=ON'
|
|
'-DOT_COVERAGE=ON'
|
|
'-DOT_LOG_LEVEL_DYNAMIC=ON'
|
|
'-DOT_COMPILE_WARNING_AS_ERROR=ON'
|
|
'-DOT_UPTIME=ON'
|
|
)
|
|
readonly OT_CLANG_TIDY_BUILD_OPTS
|
|
|
|
OT_CLANG_TIDY_CHECKS="\
|
|
-*,\
|
|
google-explicit-constructor,\
|
|
google-readability-casting,\
|
|
misc-unused-using-decls,\
|
|
modernize-loop-convert,\
|
|
modernize-use-bool-literals,\
|
|
modernize-use-equals-default,\
|
|
modernize-use-equals-delete,\
|
|
modernize-use-nullptr,\
|
|
readability-avoid-const-params-in-decls,\
|
|
readability-else-after-return,\
|
|
readability-inconsistent-declaration-parameter-name,\
|
|
readability-make-member-function-const,\
|
|
readability-redundant-control-flow,\
|
|
readability-redundant-member-init,\
|
|
readability-simplify-boolean-expr,\
|
|
readability-static-accessed-through-instance,\
|
|
"
|
|
readonly OT_CLANG_TIDY_CHECKS
|
|
|
|
do_clang_format()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' format c/c++ (clang-format)'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_CLANG_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n3 -P"$OT_BUILD_JOBS" script/clang-format -style=file -i -verbose
|
|
}
|
|
|
|
do_clang_format_check()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' check c/c++ (clang-format)'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_CLANG_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n3 -P"$OT_BUILD_JOBS" script/clang-format-check
|
|
}
|
|
|
|
do_clang_tidy_fix()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' format c/c++ (clang-tidy)'
|
|
echo -e '========================================'
|
|
|
|
(mkdir -p ./build/cmake-tidy \
|
|
&& cd ./build/cmake-tidy \
|
|
&& THREAD_VERSION=1.3 cmake "${OT_CLANG_TIDY_BUILD_OPTS[@]}" ../.. \
|
|
&& ../../script/clang-tidy -header-filter='.*' -checks="${OT_CLANG_TIDY_CHECKS}" -j"$OT_BUILD_JOBS" "${OT_CLANG_TIDY_FIX_DIRS[@]}" -fix)
|
|
}
|
|
|
|
do_clang_tidy_check()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' check c/c++ (clang-tidy)'
|
|
echo -e '========================================'
|
|
|
|
(
|
|
mkdir -p ./build/cmake-tidy \
|
|
&& cd ./build/cmake-tidy \
|
|
&& THREAD_VERSION=1.3 cmake "${OT_CLANG_TIDY_BUILD_OPTS[@]}" ../.. \
|
|
&& ../../script/clang-tidy -header-filter='.*' -checks="${OT_CLANG_TIDY_CHECKS}" -j"$OT_BUILD_JOBS" "${OT_CLANG_TIDY_FIX_DIRS[@]}" \
|
|
| grep -v -E "third_party" >output.txt
|
|
if grep -q "warning: \|error: " output.txt; then
|
|
echo "You must pass the clang tidy checks before submitting a pull request"
|
|
echo ""
|
|
grep --color -E 'warning: |error: ' -A 5 output.txt
|
|
exit 1
|
|
fi
|
|
)
|
|
}
|
|
|
|
do_markdown_format()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' format markdown'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_MARKDOWN_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" npx prettier@2.0.4 --write
|
|
}
|
|
|
|
do_markdown_check()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' check markdown'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_MARKDOWN_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" npx prettier@2.0.4 --check
|
|
}
|
|
|
|
do_python_format()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' format python'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_PYTHON_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" python3 -m yapf --verbose --style '{based_on_style: google, column_limit: 119}' -ipr
|
|
}
|
|
|
|
do_python_check()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' check python'
|
|
echo -e '========================================'
|
|
|
|
git ls-files "${OT_PYTHON_SOURCES[@]}" | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" python3 -m yapf --verbose --style '{based_on_style: google, column_limit: 119}' -dpr
|
|
}
|
|
|
|
do_shell_format()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' format shell'
|
|
echo -e '========================================'
|
|
|
|
git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" shfmt -i 4 -bn -ci -fn -s -w
|
|
}
|
|
|
|
do_shell_check()
|
|
{
|
|
echo -e '========================================'
|
|
echo -e ' check shell'
|
|
echo -e '========================================'
|
|
|
|
git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" shfmt -i 4 -bn -ci -fn -s -d
|
|
|
|
git ls-files | xargs shfmt -f | grep -v -E "^($(echo "${OT_EXCLUDE_DIRS[@]}" | tr ' ' '|'))" \
|
|
| xargs -n10 -P"$OT_BUILD_JOBS" shellcheck
|
|
}
|
|
|
|
do_check()
|
|
{
|
|
if [ $# == 0 ]; then
|
|
do_clang_format_check
|
|
do_clang_tidy_check
|
|
do_markdown_check
|
|
do_python_check
|
|
do_shell_check
|
|
elif [ "$1" == 'clang' ]; then
|
|
do_clang_format_check
|
|
do_clang_tidy_check
|
|
elif [ "$1" == 'clang-format' ]; then
|
|
do_clang_format_check
|
|
elif [ "$1" == 'clang-tidy' ]; then
|
|
do_clang_tidy_check
|
|
elif [ "$1" == 'markdown' ]; then
|
|
do_markdown_check
|
|
elif [ "$1" == 'python' ]; then
|
|
do_python_check
|
|
elif [ "$1" == 'shell' ]; then
|
|
do_shell_check
|
|
else
|
|
echo >&2 "Unsupported check: $1. Supported: clang, markdown, python, shell"
|
|
# 128 for Invalid arguments
|
|
exit 128
|
|
fi
|
|
}
|
|
|
|
main()
|
|
{
|
|
if [ $# == 0 ]; then
|
|
do_clang_tidy_fix
|
|
do_clang_format
|
|
do_markdown_format
|
|
do_python_format
|
|
do_shell_format
|
|
elif [ "$1" == 'clang' ]; then
|
|
do_clang_tidy_fix
|
|
do_clang_format
|
|
elif [ "$1" == 'clang-format' ]; then
|
|
do_clang_format
|
|
elif [ "$1" == 'clang-tidy' ]; then
|
|
do_clang_tidy_fix
|
|
elif [ "$1" == 'markdown' ]; then
|
|
do_markdown_format
|
|
elif [ "$1" == 'python' ]; then
|
|
do_python_format
|
|
elif [ "$1" == 'shell' ]; then
|
|
do_shell_format
|
|
elif [ "$1" == 'check' ]; then
|
|
shift
|
|
do_check "$@"
|
|
else
|
|
echo >&2 "Unsupported action: $1. Supported: clang, markdown, python, shell"
|
|
# 128 for Invalid arguments
|
|
exit 128
|
|
fi
|
|
|
|
}
|
|
|
|
main "$@"
|