/* * * 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 #include #include #include #include #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 LocalIPv4Addr; std::vector LocalIPv6Addr; #if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT std::vector IPv4GatewayAddr; std::vector IPv6GatewayAddr; chip::Inet::IPAddress DNSServerAddr; std::vector 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;