diff --git a/src/cli/README.md b/src/cli/README.md index 272d4063f..e93c91bfd 100644 --- a/src/cli/README.md +++ b/src/cli/README.md @@ -3533,13 +3533,13 @@ Done Module for controlling service registration in Network Data. Each change in service registration must be sent to leader by `netdata register` command before taking effect. -### service add \ \ \ +### service add \ \ [\] Add service to the Network Data. - enterpriseNumber: IANA enterprise number - serviceData: hex-encoded binary service data -- serverData: hex-encoded binary server data +- serverData: hex-encoded binary server data (empty if not provided) ```bash > service add 44970 112233 aabbcc diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index d70978872..e50326011 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -4596,13 +4596,13 @@ template <> otError Interpreter::Process(Arg aArgs[]) * netdata register * Done * @endcode - * @cparam service add @ca{enterpriseNumber} @ca{serviceData} @ca{serverData} + * @cparam service add @ca{enterpriseNumber} @ca{serviceData} [@ca{serverData}] * @par * Adds service to the network data. * @par * - enterpriseNumber: IANA enterprise number * - serviceData: Hex-encoded binary service data - * - serverData: Hex-encoded binary server data + * - serverData: Hex-encoded binary server data (empty if not provided) * @par * Note: For each change in service registration to take effect, run * the `netdata register` command after running the `service add` command to notify the leader. @@ -4611,10 +4611,17 @@ template <> otError Interpreter::Process(Arg aArgs[]) */ if (aArgs[0] == "add") { - length = sizeof(cfg.mServerConfig.mServerData); - SuccessOrExit(error = aArgs[3].ParseAsHexString(length, cfg.mServerConfig.mServerData)); - VerifyOrExit(length > 0, error = OT_ERROR_INVALID_ARGS); - cfg.mServerConfig.mServerDataLength = static_cast(length); + if (!aArgs[3].IsEmpty()) + { + length = sizeof(cfg.mServerConfig.mServerData); + SuccessOrExit(error = aArgs[3].ParseAsHexString(length, cfg.mServerConfig.mServerData)); + VerifyOrExit(length > 0, error = OT_ERROR_INVALID_ARGS); + cfg.mServerConfig.mServerDataLength = static_cast(length); + } + else + { + cfg.mServerConfig.mServerDataLength = 0; + } cfg.mServerConfig.mStable = true;