| /* |
| * |
| * Copyright (c) 2020 Project CHIP Authors |
| * Copyright (c) 2013-2017 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * 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. |
| */ |
| |
| /** |
| * @file |
| * Common command-line option handling code for test applications. |
| * |
| */ |
| |
| #pragma once |
| |
| #include <vector> |
| |
| #include <inet/InetArgParser.h> |
| #include <lib/core/CHIPCore.h> |
| #include <lib/support/CHIPArgParser.hpp> |
| #include <system/SystemLayer.h> |
| |
| #define TOOL_OPTIONS_ENV_VAR_NAME "CHIP_INET_TEST_OPTIONS" |
| |
| enum |
| { |
| kToolCommonOpt_NodeAddr = 1000, |
| kToolCommonOpt_EventDelay, |
| kToolCommonOpt_FaultInjection, |
| kToolCommonOpt_FaultTestIterations, |
| kToolCommonOpt_DebugResourceUsage, |
| kToolCommonOpt_PrintFaultCounters, |
| kToolCommonOpt_ExtraCleanupTime, |
| kToolCommonOpt_DebugLwIP, |
| kToolCommonOpt_IPv4GatewayAddr, |
| kToolCommonOpt_IPv6GatewayAddr, |
| kToolCommonOpt_TapDevice, |
| kToolCommonOpt_TapInterfaceConfig, |
| }; |
| |
| /** |
| * Handler for options that control local network/network interface configuration. |
| */ |
| class NetworkOptions : public chip::ArgParser::OptionSetBase |
| { |
| public: |
| std::vector<chip::Inet::IPAddress> LocalIPv4Addr; |
| std::vector<chip::Inet::IPAddress> LocalIPv6Addr; |
| |
| #if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT |
| std::vector<chip::Inet::IPAddress> IPv4GatewayAddr; |
| std::vector<chip::Inet::IPAddress> IPv6GatewayAddr; |
| chip::Inet::IPAddress DNSServerAddr; |
| std::vector<const char *> TapDeviceName; |
| uint8_t LwIPDebugFlags; |
| uint32_t EventDelay; |
| bool TapUseSystemConfig; |
| #endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT |
| |
| NetworkOptions(); |
| |
| bool HandleOption(const char * progName, OptionSet * optSet, int id, const char * name, const char * arg) override; |
| }; |
| |
| extern NetworkOptions gNetworkOptions; |
| |
| /** |
| * Handler for options that control fault injection testing behavior. |
| */ |
| class FaultInjectionOptions : public chip::ArgParser::OptionSetBase |
| { |
| public: |
| uint32_t TestIterations; |
| bool DebugResourceUsage; |
| bool PrintFaultCounters; |
| uint32_t ExtraCleanupTimeMsec; |
| |
| FaultInjectionOptions(); |
| |
| bool HandleOption(const char * progName, OptionSet * optSet, int id, const char * name, const char * arg) override; |
| }; |
| |
| extern FaultInjectionOptions gFaultInjectionOptions; |