diff --git a/thirdparty/iperf/HPKBUILD b/thirdparty/iperf/HPKBUILD new file mode 100644 index 0000000000000000000000000000000000000000..7359f37e9992571a93c082a7061bc11b4d95f07a --- /dev/null +++ b/thirdparty/iperf/HPKBUILD @@ -0,0 +1,101 @@ +# Contributor: xucaiming <719260170@qq.com> +# Maintainer: xucaiming <719260170@qq.com> + +pkgname=iperf +pkgver=3.14 +pkgrel=0 +pkgdesc="iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool" +url="https://github.com/esnet/iperf" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD-3-Clause") +depends=("openssl") +makedepends=() + +source="https://github.com/esnet/$pkgname/archive/refs/tags/$pkgver.tar.gz" +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz +buildtools="configure" + +autounpack=true +downloadpackage=true + +source envset.sh +host= +prepare() { + mkdir -p $builddir/$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=arm-linux + elif [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=aarch64-linux + else + echo "${ARCH} not support" + return -1; + fi +} + +build() { + cd $builddir/$ARCH-build + PKG_CONFIG_LIBDIR="${pkgconfigpath}" ../configure "$@" --host=$host > `pwd`/build.log 2>&1 + make -j4 VERBOSE=1 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir/$ARCH-build + make install VERBOSE=1 >> `pwd`/build.log 2>&1 + cd $OLDPWD + unset host +} + +check() { + cd $builddir/$ARCH-build/src + sed -i 's/libiperf.la: $(libiperf_la_OBJECTS) $(libiperf_la_DEPENDENCIES)/#libiperf.la: $(libiperf_la_OBJECTS) $(libiperf_la_DEPENDENCIES) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libiperf_la_OBJECTS)/#$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libiperf_la_OBJECTS) /' ./Makefile + sed -i 's/t_api$(EXEEXT): $(t_api_OBJECTS) $(t_api_DEPENDENCIES)/#t_api$(EXEEXT): $(t_api_OBJECTS) $(t_api_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_api$(EXEEXT)/#@rm -f t_api$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_api_LINK) $(t_api_OBJECTS)/#$(AM_V_CCLD)$(t_api_LINK) $(t_api_OBJECTS) /' ./Makefile + sed -i 's/t_auth$(EXEEXT): $(t_auth_OBJECTS) $(t_auth_DEPENDENCIES)/#t_auth$(EXEEXT): $(t_auth_OBJECTS) $(t_auth_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_auth$(EXEEXT)/#@rm -f t_auth$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_auth_LINK) $(t_auth_OBJECTS)/#$(AM_V_CCLD)$(t_auth_LINK) $(t_auth_OBJECTS) /' ./Makefile + sed -i 's/t_timer$(EXEEXT): $(t_timer_OBJECTS) $(t_timer_DEPENDENCIES)/#t_timer$(EXEEXT): $(t_timer_OBJECTS) $(t_timer_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_timer$(EXEEXT)/#@rm -f t_timer$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_timer_LINK) $(t_timer_OBJECTS)/#$(AM_V_CCLD)$(t_timer_LINK) $(t_timer_OBJECTS) /' ./Makefile + sed -i 's/t_units$(EXEEXT): $(t_units_OBJECTS) $(t_units_DEPENDENCIES)/#t_units$(EXEEXT): $(t_units_OBJECTS) $(t_units_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_units$(EXEEXT)/#@rm -f t_units$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_units_LINK) $(t_units_OBJECTS)/#$(AM_V_CCLD)$(t_units_LINK) $(t_units_OBJECTS) /' ./Makefile + sed -i 's/t_uuid$(EXEEXT): $(t_uuid_OBJECTS) $(t_uuid_DEPENDENCIES)/#t_uuid$(EXEEXT): $(t_uuid_OBJECTS) $(t_uuid_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_uuid$(EXEEXT)/#@rm -f t_uuid$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_uuid_LINK) $(t_uuid_OBJECTS)/#$(AM_V_CCLD)$(t_uuid_LINK) $(t_uuid_OBJECTS) /' ./Makefile + sed -i 's/$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iperf3_CFLAGS) $(CFLAGS) -MT iperf3-main.o -MD -MP -MF/#$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iperf3_CFLAGS) $(CFLAGS) -MT iperf3-main.o -MD -MP -MF /' ./Makefile + sed -i 's/$(AM_V_at)$(am__mv) $(DEPDIR)\/iperf3-main.Tpo $(DEPDIR)\/iperf3-main.Po/#$(AM_V_at)$(am__mv) $(DEPDIR)\/iperf3-main.Tpo $(DEPDIR)\/iperf3-main.Po /' ./Makefile + sed -i 's/.c.lo:/#.c.lo: /' ./Makefile + + cp ../../src/private.pem ./ + cp ../../src/public.pem ./ + + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + elif [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + else + echo "${ARCH} not support" + return -1; + fi + + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" + # cd $builddir/$ARCH-build/src + # make check >> `pwd`/build.log 2>&1 +} + +cleanbuild() { + rm -rf ${PWD}/$builddir +} diff --git a/thirdparty/iperf/HPKCHECK b/thirdparty/iperf/HPKCHECK new file mode 100644 index 0000000000000000000000000000000000000000..23253c21822e6b7b0c5b796d8884ce8d90efffd4 --- /dev/null +++ b/thirdparty/iperf/HPKCHECK @@ -0,0 +1,15 @@ +# Contributor: xucaiming <719260170@qq.com> +# Maintainer: xucaiming <719260170@qq.com> + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +openharmonycheck() { + res=0 + cd $builddir/$ARCH-build/src + make check > ${logfile} 2>&1 + res=$? + cd $OLDPWD + + return $res +} diff --git a/thirdparty/iperf/LICENSE b/thirdparty/iperf/LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..8197583736fa9df59afa1acbe553dcf6db5e3821 --- /dev/null +++ b/thirdparty/iperf/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright {yyyy} {name of copyright owner} + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/thirdparty/iperf/OAT.xml b/thirdparty/iperf/OAT.xml new file mode 100755 index 0000000000000000000000000000000000000000..fb731892b4b48bf940a2779b30677da87be90414 --- /dev/null +++ b/thirdparty/iperf/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/iperf/README.OpenSource b/thirdparty/iperf/README.OpenSource new file mode 100755 index 0000000000000000000000000000000000000000..85b18b02fea2fc9dfb40c5d06b7862ecc8a96869 --- /dev/null +++ b/thirdparty/iperf/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "iperf", + "License": " BSD-3-Clause license", + "License File": "https://github.com/esnet/iperf/blob/master/LICENSE", + "Version Number": "3.14", + "Owner": "cmxud@isoftstone.com", + "Upstream URL": "https://github.com/esnet/iperf/archive/refs/tags/3.14.tar.gz", + "Description": "iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool" + } +] diff --git a/thirdparty/iperf/README_zh.md b/thirdparty/iperf/README_zh.md new file mode 100755 index 0000000000000000000000000000000000000000..b64b079b98a7653a04d3b071c50223d6a183a50c --- /dev/null +++ b/thirdparty/iperf/README_zh.md @@ -0,0 +1,11 @@ +# iperf三方库说明 +## 功能简介 +iperf是一个网络性能测试工具,iperf可以测试TCP和UDP带宽质量。iperf即可测量最大TCP带宽,也具有多种参数和UDP特性,且可报告带宽,延迟抖动和数据包丢失 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 4.0.8.1 (API Version 10 Release) +- 三方库版本:3.14 +- 当前适配的功能: iperf是一个网络性能测试工具 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/iperf/SHA512SUM b/thirdparty/iperf/SHA512SUM new file mode 100644 index 0000000000000000000000000000000000000000..a61d0f1cf6be7d32aa945dd9b0c1f636c6d839a4 --- /dev/null +++ b/thirdparty/iperf/SHA512SUM @@ -0,0 +1 @@ +a90fbaddd73e5b721a84cee71cefb63391c13f64107f5785e954e7c44e9a8c5072e402b6fe45434966d3cc58ac97227c608ca9719161fc23459c5e5efcf8232b iperf-3.14.tar.gz diff --git a/thirdparty/iperf/docs/hap_integrate.md b/thirdparty/iperf/docs/hap_integrate.md new file mode 100755 index 0000000000000000000000000000000000000000..40e9f85de7504b92b262f54cd9eb06d6e3d133dc --- /dev/null +++ b/thirdparty/iperf/docs/hap_integrate.md @@ -0,0 +1,94 @@ +# iperf 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/iperf #三方库iperf的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #自动化测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── OAT.xml #OAT开源审查文本 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 在lycium目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ``` + cd lycium + ./build.sh iperf + ``` + + +- 三方库头文件及生成的库 + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + iperf/arm64-v8a iperf/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下 + 在IDE的libs目录下新增iperf目录,在iperf目录下新增arm64-v8a目录和armeabi-v7a目录, + 分别将,iperf库编译生成的64位和32位的so文件放到该目录下,如下图所示 +   + + ![thirdparty_install_dir](pic/iperf_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/lib/libcrypto.a) + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/lib/libssl.a) + target_link_libraries(entry PRIVATE -L${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/iperf/${OHOS_ARCH}/libiperf.so.0) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/include) + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/iperf/${OHOS_ARCH}/include) + ``` + + ![iperf_usage](pic/iperf_usage.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +进入到构建目录,执行如下命令 +``` +cd /src +make check +``` +(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![iperf_test](pic/iperf_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/iperf/docs/pic/iperf_install_dir.png b/thirdparty/iperf/docs/pic/iperf_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..a66737fb2678fc7c5fa46c3043131cc30bf73080 Binary files /dev/null and b/thirdparty/iperf/docs/pic/iperf_install_dir.png differ diff --git a/thirdparty/iperf/docs/pic/iperf_test.png b/thirdparty/iperf/docs/pic/iperf_test.png new file mode 100755 index 0000000000000000000000000000000000000000..6aa071369e7331f2ec7865bbb25ff1cbdb374f72 Binary files /dev/null and b/thirdparty/iperf/docs/pic/iperf_test.png differ diff --git a/thirdparty/iperf/docs/pic/iperf_usage.png b/thirdparty/iperf/docs/pic/iperf_usage.png new file mode 100755 index 0000000000000000000000000000000000000000..3546c8bb195124d2539aa6bc611809a8399ebeb3 Binary files /dev/null and b/thirdparty/iperf/docs/pic/iperf_usage.png differ