mirror of
https://gitlab.com/prpl-foundation/intel/dsl_cpe_control.git
synced 2025-12-10 06:44:37 +01:00
8.4.1.70 Prpl Release
This commit is contained in:
parent
68c04460df
commit
f722e13e0d
20 changed files with 2754 additions and 943 deletions
15
ChangeLog
15
ChangeLog
|
|
@ -1,5 +1,20 @@
|
|||
NEXT VERSION
|
||||
|
||||
V4.21.6.2 - 2019-12-30
|
||||
common:
|
||||
- VRX (CURTSYS-2942) [SDL] Use of vulnerable C functions - Against Safe C Pt1/2
|
||||
|
||||
V4.21.6.1 - 2019-12-27
|
||||
common:
|
||||
- VRX (CURTSYS-2779) Replace mechanism to avoid multiple instances of
|
||||
dsl_cpe_control
|
||||
- VRX (CURTSYS-2771) Config/status files in tmp
|
||||
- VRX (CURTSYS-2695) Add documentation for config and status parameters
|
||||
- VRX (CURTSYS-2913) Take care the DSL status JSON file is gathering all
|
||||
parameters
|
||||
- VRX (CURTSYS-2791) Bonding functionality is not working on AXEPOINT board
|
||||
- VRX (CURTSYS-2670) MEI_VECTOR_FRIENDLY_CTRL_AUTO to MEI_VECTOR_CTRL_AUTO string fix
|
||||
|
||||
V4.21.6 - 2019-10-14
|
||||
- VRX (CURTSYS-2484) Implement status JSON update for line stats
|
||||
- VRX (CURTSYS-2485) Implement status JSON update for channel stats
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#define PACKAGE "dsl_cpe_control"
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "4.21.6"
|
||||
#define VERSION "4.21.6.2"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION VERSION
|
||||
|
|
|
|||
20
configure
vendored
20
configure
vendored
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
# From configure.in Revision: 1.173 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for DSL CPE Control application 4.21.6.
|
||||
# Generated by GNU Autoconf 2.69 for DSL CPE Control application 4.21.6.2.
|
||||
#
|
||||
#
|
||||
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
||||
|
|
@ -578,8 +578,8 @@ MAKEFLAGS=
|
|||
# Identity of this package.
|
||||
PACKAGE_NAME='DSL CPE Control application'
|
||||
PACKAGE_TARNAME='dsl_cpe_control'
|
||||
PACKAGE_VERSION='4.21.6'
|
||||
PACKAGE_STRING='DSL CPE Control application 4.21.6'
|
||||
PACKAGE_VERSION='4.21.6.2'
|
||||
PACKAGE_STRING='DSL CPE Control application 4.21.6.2'
|
||||
PACKAGE_BUGREPORT=''
|
||||
PACKAGE_URL=''
|
||||
|
||||
|
|
@ -1529,7 +1529,7 @@ if test "$ac_init_help" = "long"; then
|
|||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures DSL CPE Control application 4.21.6 to adapt to many kinds of systems.
|
||||
\`configure' configures DSL CPE Control application 4.21.6.2 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
|
|
@ -1595,7 +1595,7 @@ fi
|
|||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of DSL CPE Control application 4.21.6:";;
|
||||
short | recursive ) echo "Configuration of DSL CPE Control application 4.21.6.2:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
|
|
@ -1819,7 +1819,7 @@ fi
|
|||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
DSL CPE Control application configure 4.21.6
|
||||
DSL CPE Control application configure 4.21.6.2
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
|
|
@ -2171,7 +2171,7 @@ cat >config.log <<_ACEOF
|
|||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by DSL CPE Control application $as_me 4.21.6, which was
|
||||
It was created by DSL CPE Control application $as_me 4.21.6.2, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
|
|
@ -3036,7 +3036,7 @@ fi
|
|||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='dsl_cpe_control'
|
||||
VERSION='4.21.6'
|
||||
VERSION='4.21.6.2'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
|
|
@ -10754,7 +10754,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by DSL CPE Control application $as_me 4.21.6, which was
|
||||
This file was extended by DSL CPE Control application $as_me 4.21.6.2, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
|
|
@ -10820,7 +10820,7 @@ _ACEOF
|
|||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
DSL CPE Control application config.status 4.21.6
|
||||
DSL CPE Control application config.status 4.21.6.2
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
AC_REVISION($Revision: 1.173 $)
|
||||
|
||||
AC_INIT([DSL CPE Control application],[4.21.6],[],[dsl_cpe_control])
|
||||
AC_INIT([DSL CPE Control application],[4.21.6.2],[],[dsl_cpe_control])
|
||||
AC_CONFIG_SRCDIR(src/Makefile.am)
|
||||
AM_INIT_AUTOMAKE([tar-pax])
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,8 @@ EXTRA_DIST = \
|
|||
if INCLUDE_DSL_JSON_PARSING
|
||||
EXTRA_DIST += \
|
||||
dsl_cpe_configuration_parser.h \
|
||||
dsl_cpe_status_parser.h
|
||||
dsl_cpe_status_parser.h \
|
||||
dsl_cpe_interface.h
|
||||
endif
|
||||
|
||||
if ADD_APPL_CFLAGS_SET
|
||||
|
|
|
|||
|
|
@ -118,7 +118,8 @@ bin_PROGRAMS = dsl_cpe_control$(EXEEXT)
|
|||
|
||||
@INCLUDE_DSL_JSON_PARSING_TRUE@am__append_14 = \
|
||||
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_configuration_parser.h \
|
||||
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_status_parser.h
|
||||
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_status_parser.h \
|
||||
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_interface.h
|
||||
|
||||
@DSL_CCA_DBG_MAX_LEVEL_SET_TRUE@am__append_15 = -DDSL_CCA_DBG_MAX_LEVEL=$(DSL_CCA_DBG_MAX_LEVEL_PRE)
|
||||
subdir = src
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ struct Pipe_env_s
|
|||
/** number of this pipe interface */
|
||||
DSL_int_t number;
|
||||
/** name of event pipe */
|
||||
DSL_char_t namePipeEvent[32];
|
||||
DSL_char_t namePipeEvent[DSL_CPE_PIPE_NAME_STR_LEN];
|
||||
/** command buffer */
|
||||
DSL_char_t cmd_buffer[MAX_CLI_PIPE_CMD_LEN];
|
||||
DSL_CPE_File_t *pipe_in;
|
||||
|
|
@ -107,8 +107,8 @@ DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
|
|||
DSL_int_t nPipeNum)
|
||||
{
|
||||
DSL_Error_t ret = DSL_SUCCESS;
|
||||
DSL_char_t Name[32];
|
||||
|
||||
DSL_char_t Name[DSL_CPE_PIPE_NAME_STR_LEN];
|
||||
|
||||
memset(pPipeEnv, 0, sizeof(Pipe_env_t));
|
||||
|
||||
/* remember own number */
|
||||
|
|
@ -138,7 +138,7 @@ DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
|
|||
pipeNameFormat, nPipeNum, "event");
|
||||
|
||||
ret = DSL_CPE_PipeCreate(pPipeEnv->namePipeEvent);
|
||||
|
||||
|
||||
if (ret < DSL_SUCCESS)
|
||||
{
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX
|
||||
|
|
|
|||
|
|
@ -1645,7 +1645,7 @@ static const DSL_char_t g_sDsmcg[] =
|
|||
" e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF
|
||||
" e_MEI_VECTOR_CTRL_ON = 1" DSL_CPE_CRLF
|
||||
" e_MEI_VECTOR_FRIENDLY_CTRL_ON = 2" DSL_CPE_CRLF
|
||||
" e_MEI_VECTOR_FRIENDLY_CTRL_AUTO = 3" DSL_CPE_CRLF
|
||||
" e_MEI_VECTOR_CTRL_AUTO = 3" DSL_CPE_CRLF
|
||||
DSL_CPE_CRLF "";
|
||||
#else
|
||||
"";
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "json.h"
|
||||
#include "dsl_cpe_control.h"
|
||||
#include "dsl_cpe_configuration_parser.h"
|
||||
#include "dsl_cpe_interface.h"
|
||||
|
||||
#include "drv_dsl_cpe_api_ioctl.h"
|
||||
#if defined(INCLUDE_DSL_CPE_API_VRX)
|
||||
|
|
@ -132,7 +133,7 @@ is undefined, if so use currentParam (from DSL_xxxGet function or any other sour
|
|||
#define SECTION_PATH_LENGTH 256
|
||||
|
||||
/* Configuration file path */
|
||||
static const char *g_pJsonConfigPath = "/opt/intel/etc/dsl_cpe_control.conf";
|
||||
static const char *g_pJsonConfigPath = "/tmp/dsl/dsl.conf";
|
||||
static DSL_Configuration_t g_sConfiguration = { 0 };
|
||||
|
||||
/**********************************************/
|
||||
|
|
@ -229,6 +230,7 @@ static DSL_Error_t DSL_CPE_OperatorSelectCfgValidateAndApply(
|
|||
DSL_Error_t DSL_CPE_ConfigInit()
|
||||
{
|
||||
static DSL_boolean_t bInitDone = DSL_FALSE;
|
||||
DSL_Error_t nRet = DSL_ERROR;
|
||||
|
||||
if (bInitDone == DSL_FALSE)
|
||||
{
|
||||
|
|
@ -307,15 +309,20 @@ DSL_Error_t DSL_CPE_ConfigInit()
|
|||
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_WRN, (DSL_CPE_PREFIX
|
||||
"WARNING - Configuration initialized with default values!" DSL_CPE_CRLF));
|
||||
|
||||
nRet = DSL_WRN_CONFIG_PARAM_IGNORED;
|
||||
}
|
||||
|
||||
bInitDone = DSL_TRUE;
|
||||
|
||||
return DSL_TRUE;
|
||||
nRet = DSL_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DSL_FALSE;
|
||||
nRet = DSL_ERROR;
|
||||
}
|
||||
|
||||
return nRet;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -498,75 +505,75 @@ static DSL_void_t DSL_CPE_JsonParse(
|
|||
|
||||
/* Debugging */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_DEBUGGING_SECTION_PATH, "debug_and_test_interfaces", pDebuggingConfig->nDebugAndTestInterfaces);
|
||||
CONFIG_DEBUGGING_SECTION_PATH, DSL_CFG_DEBUG_AND_TEST_INTERFACES, pDebuggingConfig->nDebugAndTestInterfaces);
|
||||
|
||||
/* StartupInit */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, "next_mode", pStartupInitConfig->nNextMode);
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_NEXT_MODE, pStartupInitConfig->nNextMode);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, "max_device_number", pStartupInitConfig->nMaxDeviceNumber);
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_MAX_DEVICE_NUMBER, pStartupInitConfig->nMaxDeviceNumber);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, "lines_per_device", pStartupInitConfig->nLinesPerDevice);
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_LINES_PER_DEVICE, pStartupInitConfig->nLinesPerDevice);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, "channels_per_line", pStartupInitConfig->nChannelsPerLine);
|
||||
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_CHANNELS_PER_LINE, pStartupInitConfig->nChannelsPerLine);
|
||||
|
||||
/* Bitswap */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_BITSWAP_SECTION_PATH, "vdsl_us", pBitswapConfig->Us_Vdsl);
|
||||
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_VDSL_US, pBitswapConfig->Us_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_BITSWAP_SECTION_PATH, "vdsl_ds", pBitswapConfig->Ds_Vdsl);
|
||||
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_VDSL_DS, pBitswapConfig->Ds_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_BITSWAP_SECTION_PATH, "adsl_us", pBitswapConfig->Us_Adsl);
|
||||
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_ADSL_US, pBitswapConfig->Us_Adsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_BITSWAP_SECTION_PATH, "adsl_ds", pBitswapConfig->Ds_Adsl);
|
||||
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_ADSL_DS, pBitswapConfig->Ds_Adsl);
|
||||
|
||||
/* Retransmission */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, "vdsl_us", pRetransmissionConfig->Us_Vdsl);
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_VDSL_US, pRetransmissionConfig->Us_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, "vdsl_ds", pRetransmissionConfig->Ds_Vdsl);
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_VDSL_DS, pRetransmissionConfig->Ds_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, "adsl_us", pRetransmissionConfig->Us_Adsl);
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_ADSL_US, pRetransmissionConfig->Us_Adsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, "adsl_ds", pRetransmissionConfig->Ds_Adsl);
|
||||
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_ADSL_DS, pRetransmissionConfig->Ds_Adsl);
|
||||
|
||||
/* SRA */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_SRA_SECTION_PATH, "vdsl_us", pSraConfig->Us_Vdsl);
|
||||
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_VDSL_US, pSraConfig->Us_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_SRA_SECTION_PATH, "vdsl_ds", pSraConfig->Ds_Vdsl);
|
||||
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_VDSL_DS, pSraConfig->Ds_Vdsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_SRA_SECTION_PATH, "adsl_us", pSraConfig->Us_Adsl);
|
||||
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_ADSL_US, pSraConfig->Us_Adsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_SRA_SECTION_PATH, "adsl_ds", pSraConfig->Ds_Adsl);
|
||||
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_ADSL_DS, pSraConfig->Ds_Adsl);
|
||||
|
||||
/* Virtualnoise */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_VIRTUALNOISE_SECTION_PATH, "us", pVirtualNoiseConfig->Us);
|
||||
CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_US, pVirtualNoiseConfig->Us);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_VIRTUALNOISE_SECTION_PATH, "ds", pVirtualNoiseConfig->Ds);
|
||||
CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_DS, pVirtualNoiseConfig->Ds);
|
||||
|
||||
/* TcLayer */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_TCLAYER_SECTION_PATH, "adsl", pSystemIfConfig->nTcLayer_Adsl);
|
||||
CONFIG_TCLAYER_SECTION_PATH, DSL_CFG_TC_ADSL, pSystemIfConfig->nTcLayer_Adsl);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_TCLAYER_SECTION_PATH, "vdsl", pSystemIfConfig->nTcLayer_Vdsl);
|
||||
CONFIG_TCLAYER_SECTION_PATH, DSL_CFG_TC_VDSL, pSystemIfConfig->nTcLayer_Vdsl);
|
||||
|
||||
/* Common */
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "operator_select", pCommonConfig->nOperatorSelect);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_OPERATOR_SELECT, pCommonConfig->nOperatorSelect);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "ld_afe_shutdown", pCommonConfig->LdAfeShutdown);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_LD_AFE_SHUTDOWN, pCommonConfig->LdAfeShutdown);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "vectoring_enable", pCommonConfig->VectoringEnable);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_VECTORING_ENABLE, pCommonConfig->VectoringEnable);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "activation_sequence", pCommonConfig->ActSeq);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_SEQUENCE, pCommonConfig->ActSeq);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "activation_mode", pCommonConfig->ActMode);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_MODE, pCommonConfig->ActMode);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "remember", pCommonConfig->Remember);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_REMEMBER, pCommonConfig->Remember);
|
||||
PARSE_SECTION_INT(
|
||||
CONFIG_COMMON_SECTION_PATH, "fw_msg_polling_only", pCommonConfig->FWMsgPollingOnly);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_FW_MSG_POLLING_ONLY, pCommonConfig->FWMsgPollingOnly);
|
||||
|
||||
if (bFound == DSL_FALSE)
|
||||
{
|
||||
|
|
@ -583,17 +590,17 @@ static DSL_void_t DSL_CPE_JsonParse(
|
|||
|
||||
/* Reboot criteria */
|
||||
PARSE_SECTION_HEX(
|
||||
CONFIG_REBOOTCRITERIA_SECTION_PATH, "adsl", pRebootCriteriaConfig->Adsl);
|
||||
CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_ADSL, pRebootCriteriaConfig->Adsl);
|
||||
PARSE_SECTION_HEX(
|
||||
CONFIG_REBOOTCRITERIA_SECTION_PATH, "vdsl", pRebootCriteriaConfig->Vdsl);
|
||||
CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_VDSL, pRebootCriteriaConfig->Vdsl);
|
||||
|
||||
/* Common */
|
||||
PARSE_SECTION_HEX(
|
||||
CONFIG_COMMON_SECTION_PATH, "vdsl_profile", pCommonConfig->VdslProfileVal);
|
||||
CONFIG_COMMON_SECTION_PATH, DSL_CFG_VDSL_PROFILE, pCommonConfig->VdslProfileVal);
|
||||
PARSE_SECTION_HEX(
|
||||
CONFIG_LOWLEVELHSTONES_SECTION_PATH, "adsl", pCommonConfig->sLowLevelHsTonesConfig.Adsl);
|
||||
CONFIG_LOWLEVELHSTONES_SECTION_PATH, DSL_CFG_LOW_LEVEL_HS_TONES_ADSL, pCommonConfig->sLowLevelHsTonesConfig.Adsl);
|
||||
PARSE_SECTION_HEX(
|
||||
CONFIG_LOWLEVELHSTONES_SECTION_PATH, "vdsl", pCommonConfig->sLowLevelHsTonesConfig.Vdsl);
|
||||
CONFIG_LOWLEVELHSTONES_SECTION_PATH, DSL_CFG_LOW_LEVEL_HS_TONES_VDSL, pCommonConfig->sLowLevelHsTonesConfig.Vdsl);
|
||||
|
||||
if (bFound == DSL_FALSE)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,16 +38,16 @@ typedef struct
|
|||
typedef struct
|
||||
{
|
||||
/** Bitswap config for US in VDSL */
|
||||
bool Us_Vdsl;
|
||||
DSL_boolean_t Us_Vdsl;
|
||||
|
||||
/** Bitswap config for DS in VDSL */
|
||||
bool Ds_Vdsl;
|
||||
DSL_boolean_t Ds_Vdsl;
|
||||
|
||||
/** Bitswap config for US in ADSL */
|
||||
bool Us_Adsl;
|
||||
DSL_boolean_t Us_Adsl;
|
||||
|
||||
/** Bitswap config for DS in ADSL */
|
||||
bool Ds_Adsl;
|
||||
DSL_boolean_t Ds_Adsl;
|
||||
} DSL_CFG_Bitswap_t;
|
||||
|
||||
typedef struct
|
||||
|
|
@ -83,10 +83,10 @@ typedef struct
|
|||
typedef struct
|
||||
{
|
||||
/** Virtual Noise config for US */
|
||||
bool Us;
|
||||
DSL_boolean_t Us;
|
||||
|
||||
/** Virtual Noise config for DS */
|
||||
bool Ds;
|
||||
DSL_boolean_t Ds;
|
||||
} DSL_CFG_VirtualNoise_t;
|
||||
|
||||
typedef struct
|
||||
|
|
@ -258,7 +258,7 @@ typedef struct
|
|||
0: Use autonomous FW message handling (instead of polling)
|
||||
1: Use polling mode only - DEFAULT
|
||||
*/
|
||||
bool FWMsgPollingOnly;
|
||||
DSL_boolean_t FWMsgPollingOnly;
|
||||
|
||||
DSL_CFG_LowLevelHsTones_t sLowLevelHsTonesConfig;
|
||||
} DSL_CFG_Common_t;
|
||||
|
|
@ -314,8 +314,9 @@ typedef struct
|
|||
\remark Should be called only once and at application startup.
|
||||
|
||||
\return Return values are defined within the \ref DSL_Error_t definition
|
||||
- DSL_SUCCESS in case of success
|
||||
- DSL_ERROR if operation failed
|
||||
- DSL_SUCCESS in case of taken configuration from json file
|
||||
- DSL_WRN_CONFIG_PARAM_IGNORED in case of taken default configuration
|
||||
- DSL_ERROR if operation already performed
|
||||
*/
|
||||
DSL_Error_t DSL_CPE_ConfigInit();
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -184,6 +184,14 @@ DSL_void_t DSL_CPE_ScriptRun(DSL_void_t);
|
|||
#define _MKSTR(x) _MKSTR_1(x)
|
||||
#endif
|
||||
|
||||
#define DSL_CPE_ARGS_EXTRACT_STRING_LEN 30
|
||||
/* IPv4 string max len eg. "201.202.203.204" */
|
||||
#define DSL_CPE_ARG_IP_V4_LEN 15
|
||||
/* G997 XTU octet bits eg. "04_00_04_00_0C_01_00_07" */
|
||||
#define DSL_CPE_ARG_G997_XTU_LEN 23
|
||||
#define DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN 99
|
||||
#define DSL_CPE_LINE_IDENTIFIERS_NUM 3
|
||||
#define DSL_CPE_LINE_IDENTIFIER_LEN 9
|
||||
|
||||
typedef unsigned int DSL_size_t;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,9 @@ static DSL_CmvGroupEntry_t DSL_CmvGroups[] =
|
|||
{ "dsl", DSL_CMV_GROUP_DSL },
|
||||
{ "", 0 }
|
||||
};
|
||||
|
||||
static DSL_size_t DSL_CmvGroupNameLen = 4;
|
||||
|
||||
#endif /* #if defined (INCLUDE_DSL_CPE_API_DANUBE)*/
|
||||
|
||||
DSL_Error_t DSL_strlwr(DSL_char_t *psStr)
|
||||
|
|
@ -146,7 +149,9 @@ DSL_Error_t DSL_CMV_Read (
|
|||
|
||||
DSL_strlwr(str_group);
|
||||
|
||||
for (;(pGroups->nGroupId != 0) && (strlen(pGroups->psGroupName) > 0); pGroups++)
|
||||
for (;(pGroups->nGroupId != 0) &&
|
||||
(cpe_control_strnlen_s(
|
||||
pGroups->psGroupName, DSL_CmvGroupNameLen) > 0); pGroups++)
|
||||
{
|
||||
if (strcmp (str_group, pGroups->psGroupName) == 0)
|
||||
{
|
||||
|
|
@ -204,7 +209,9 @@ DSL_Error_t DSL_CMV_Write (
|
|||
|
||||
DSL_strlwr(str_group);
|
||||
|
||||
for (;(pGroups->nGroupId != 0) && (strlen(pGroups->psGroupName) > 0); pGroups++)
|
||||
for (;(pGroups->nGroupId != 0) &&
|
||||
(cpe_control_strnlen_s(
|
||||
pGroups->psGroupName, DSL_CmvGroupNameLen) > 0); pGroups++)
|
||||
{
|
||||
if (strcmp (str_group, pGroups->psGroupName) == 0)
|
||||
{
|
||||
|
|
@ -622,12 +629,14 @@ DSL_Error_t DSL_CPE_TcpDebugMessageIntfStart (
|
|||
{
|
||||
DSL_CPE_Free(g_sTcpMessagesSocketAddr);
|
||||
}
|
||||
g_sTcpMessagesSocketAddr = DSL_CPE_Malloc(strlen (sTcpServerIp) + 1);
|
||||
|
||||
DSL_size_t nIpSize = cpe_control_strnlen_s(sTcpServerIp, DSL_CPE_ARG_IP_V4_LEN);
|
||||
g_sTcpMessagesSocketAddr = DSL_CPE_Malloc(nIpSize + 1);
|
||||
if (g_sTcpMessagesSocketAddr)
|
||||
{
|
||||
memset(g_sTcpMessagesSocketAddr, 0, strlen (sTcpServerIp) + 1);
|
||||
cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, strlen (sTcpServerIp) + 1,
|
||||
sTcpServerIp, strlen (sTcpServerIp));
|
||||
memset(g_sTcpMessagesSocketAddr, 0, nIpSize + 1);
|
||||
cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, nIpSize + 1,
|
||||
sTcpServerIp, nIpSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -360,12 +360,14 @@ DSL_int_t DSL_CPE_VRX_Reboot(
|
|||
|
||||
DSL_CPE_VRX_ResponseMessage(pCmvMsg);
|
||||
|
||||
if (strlen(g_sFirmwareName1) > 0)
|
||||
if (cpe_control_strnlen_s(
|
||||
g_sFirmwareName1, DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN) > 0)
|
||||
{
|
||||
pcFw = g_sFirmwareName1;
|
||||
}
|
||||
|
||||
if (strlen(g_sFirmwareName2) > 0)
|
||||
if (cpe_control_strnlen_s(
|
||||
g_sFirmwareName2, DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN) > 0)
|
||||
{
|
||||
pcFw2 = g_sFirmwareName2;
|
||||
}
|
||||
|
|
@ -1461,7 +1463,7 @@ DSL_int_t DSL_CPE_DEV_DeviceOpen(DSL_char_t *pDevName, DSL_uint32_t dev_num)
|
|||
return -1;
|
||||
}
|
||||
|
||||
snprintf(text, sizeof(text), "%s/%d", pDevName, dev_num);
|
||||
cpe_control_snprintf_s(text, sizeof(text), "%s/%d", pDevName, dev_num);
|
||||
|
||||
mei_fd = DSL_CPE_Open(text);
|
||||
/*mei_fd = open(text, O_RDWR);*/
|
||||
|
|
|
|||
1147
src/dsl_cpe_interface.h
Normal file
1147
src/dsl_cpe_interface.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -36,6 +36,8 @@
|
|||
|
||||
#define SYS_NAME_PREFIX PRJ_NAME_PREFIX"/tmp"
|
||||
#define SYS_PIPE_PREFIX SYS_NAME_PREFIX"/pipe"
|
||||
/* length of "/tmp/pipe" */
|
||||
#define DSL_CPE_SYS_PIPE_PREFIX_STR_LEN 9
|
||||
|
||||
#endif /* #ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
|
||||
|
||||
|
|
@ -247,23 +249,24 @@ DSL_Error_t DSL_CPE_PipeCreate(DSL_char_t *pName)
|
|||
/* Used to generate the pipe path */
|
||||
DSL_char_t *pipepath = NULL;
|
||||
DSL_Error_t ret = DSL_SUCCESS;
|
||||
DSL_size_t nPipepathSize =
|
||||
cpe_control_strnlen_s(SYS_PIPE_PREFIX"/", DSL_CPE_SYS_PIPE_PREFIX_STR_LEN + 1) +
|
||||
cpe_control_strnlen_s(pName, DSL_CPE_PIPE_NAME_STR_LEN) + 1;
|
||||
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX "create pipe %s" DSL_CPE_CRLF, pName));
|
||||
|
||||
pipepath = DSL_CPE_Malloc(strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1);
|
||||
pipepath = DSL_CPE_Malloc(nPipepathSize);
|
||||
if ( !pipepath )
|
||||
{
|
||||
return DSL_ERR_MEMORY;
|
||||
}
|
||||
|
||||
memset(pipepath, 0, strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1);
|
||||
cpe_control_strncpy_s(pipepath,
|
||||
strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1,
|
||||
SYS_PIPE_PREFIX"/",
|
||||
strlen(SYS_PIPE_PREFIX"/"));
|
||||
memset(pipepath, 0, nPipepathSize);
|
||||
cpe_control_strncpy_s(pipepath, nPipepathSize, SYS_PIPE_PREFIX"/",
|
||||
cpe_control_strnlen_s(SYS_PIPE_PREFIX"/", DSL_CPE_SYS_PIPE_PREFIX_STR_LEN + 1));
|
||||
/* try to create directory, ignore error designedly */
|
||||
mkdir(pipepath, S_IFDIR | 0777);
|
||||
strcat(pipepath, pName);
|
||||
(void)cpe_control_pipe_strcat_s(pipepath, nPipepathSize, pName);
|
||||
|
||||
/*create a named pipe and check errors*/
|
||||
if ((mkfifo(pipepath, 0777) == -1) && (errno != EEXIST))
|
||||
|
|
@ -292,7 +295,7 @@ DSL_CPE_File_t *DSL_CPE_PipeOpen(DSL_char_t *pName, DSL_boolean_t reading, DSL_b
|
|||
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX "open pipe %s" DSL_CPE_CRLF, pName));
|
||||
|
||||
DSL_CPE_snprintf(pipepath, sizeof(pipepath), SYS_PIPE_PREFIX"/%s", pName);
|
||||
cpe_control_snprintf_s(pipepath, sizeof(pipepath), SYS_PIPE_PREFIX"/%s", pName);
|
||||
/* only open allows the flag "O_NONBLOCK",
|
||||
so first open a fd and change it to a DSL_CPE_File_t* with fdopen() */
|
||||
if (reading == DSL_TRUE)
|
||||
|
|
@ -780,8 +783,8 @@ DSL_int32_t DSL_CPE_ThreadInit(
|
|||
memset(pThrCntrl, 0x00, sizeof(DSL_CPE_ThreadCtrl_t));
|
||||
|
||||
/* set thread function arguments */
|
||||
cpe_control_strncpy_s(pThrCntrl->thrParams.pName,
|
||||
DSL_CPE_THREAD_NAME_LEN, pName, strlen(pName));
|
||||
cpe_control_strncpy_s(pThrCntrl->thrParams.pName, DSL_CPE_THREAD_NAME_LEN,
|
||||
pName, cpe_control_strnlen_s(pName, DSL_CPE_THREAD_NAME_LEN));
|
||||
pThrCntrl->thrParams.pName[DSL_CPE_THREAD_NAME_LEN-1] = 0;
|
||||
pThrCntrl->nPriority = nPriority;
|
||||
pThrCntrl->thrParams.nArg1 = nArg1;
|
||||
|
|
@ -1297,8 +1300,11 @@ DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
|
|||
#else
|
||||
DSL_Error_t nRet = DSL_SUCCESS;
|
||||
DSL_CPE_EnvList_t *pEnvList = &g_EnvList, *pEnvListPrev = &g_EnvList;
|
||||
const DSL_uint16_t namelen = strlen (sName);
|
||||
const DSL_uint16_t vallen = sValue != DSL_NULL ? strlen (sValue) : 0;
|
||||
const DSL_size_t nNameLenMax = 30;
|
||||
const DSL_uint16_t namelen = cpe_control_strnlen_s (sName, nNameLenMax);
|
||||
const DSL_uint16_t vallen =
|
||||
sValue != DSL_NULL ?
|
||||
cpe_control_strnlen_s (sValue, DSL_CPE_MAX_ENV_VAR_LENGTH) : 0;
|
||||
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||
"SNH - Set %s to %s" DSL_CPE_CRLF, sName, sValue));
|
||||
|
|
@ -1366,7 +1372,8 @@ DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
|
|||
}
|
||||
}
|
||||
|
||||
snprintf(pEnvList->pEnvEntry, namelen + DSL_CPE_MAX_ENV_VAR_LENGTH + 2, "%s=%s", sName, sValue != DSL_NULL ? sValue : "");
|
||||
cpe_control_snprintf_s(pEnvList->pEnvEntry, namelen + DSL_CPE_MAX_ENV_VAR_LENGTH + 2,
|
||||
"%s=%s", sName, sValue != DSL_NULL ? sValue : "");
|
||||
putenv(pEnvList->pEnvEntry);
|
||||
#endif
|
||||
|
||||
|
|
@ -1483,7 +1490,7 @@ int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
|
|||
|
||||
/* add the debug string itself */
|
||||
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */
|
||||
nRet = vsnprintf(&debugString[0], DSL_DBG_MAX_DEBUG_PRINT_CHAR, fmt, ap);
|
||||
nRet = cpe_control_vsnprintf_s(&debugString[0], DSL_DBG_MAX_DEBUG_PRINT_CHAR, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (DSL_CCA_g_dbgDestination == DSL_CCA_DBG_DST_CONSOLE)
|
||||
|
|
@ -1518,7 +1525,7 @@ static void DSL_CPE_NlSendMsg(DSL_char_t* pMsg)
|
|||
struct iovec iov;
|
||||
|
||||
nSockFd = socket(AF_NETLINK, SOCK_RAW, DSL_DBG_MSG_NETLINK_ID);
|
||||
if(nSockFd == -1)
|
||||
if(nSockFd == -1)
|
||||
{
|
||||
printf("could not open netlink socket");
|
||||
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
|
||||
|
|
@ -1553,7 +1560,8 @@ static void DSL_CPE_NlSendMsg(DSL_char_t* pMsg)
|
|||
pNlMsgHdr->nlmsg_flags = 1;
|
||||
pNlMsgHdr->nlmsg_type = 0;
|
||||
|
||||
cpe_control_strncpy_s(NLMSG_DATA(pNlMsgHdr), NLMSG_SPACE(MAX_MSG_SIZE_BYTES), pMsg, strlen(pMsg));
|
||||
cpe_control_strncpy_s(NLMSG_DATA(pNlMsgHdr), NLMSG_SPACE(MAX_MSG_SIZE_BYTES),
|
||||
pMsg, cpe_control_strnlen_s(pMsg, MAX_MSG_SIZE_BYTES + 1));
|
||||
|
||||
iov.iov_base = (void*) pNlMsgHdr;
|
||||
iov.iov_len = pNlMsgHdr->nlmsg_len;
|
||||
|
|
@ -1609,6 +1617,8 @@ DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t)
|
|||
DSL_int_t nFd,nErrCode;
|
||||
struct ifreq ifr;
|
||||
DSL_char_t *pString = DSL_NULL;
|
||||
const DSL_size_t nIPv4LenMax = 15;
|
||||
char *pIP = DSL_NULL;
|
||||
|
||||
/* obtain ip-address automatically */
|
||||
nFd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
|
|
@ -1617,28 +1627,26 @@ DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t)
|
|||
memset(&ifr, 0x0, sizeof(struct ifreq));
|
||||
|
||||
ifr.ifr_addr.sa_family = AF_INET;
|
||||
cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1,
|
||||
DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE, strlen(DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE));
|
||||
cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1,
|
||||
DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE,
|
||||
cpe_control_strnlen_s(DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE,
|
||||
sizeof DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE));
|
||||
|
||||
nErrCode = DSL_CPE_Ioctl(nFd, SIOCGIFADDR, (DSL_int_t) &ifr);
|
||||
close(nFd);
|
||||
if (nErrCode == 0)
|
||||
{
|
||||
pString =
|
||||
DSL_CPE_Malloc( strlen(inet_ntoa(
|
||||
((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
|
||||
pIP = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
|
||||
pString = DSL_CPE_Malloc(cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (pString != DSL_NULL)
|
||||
{
|
||||
memset(pString, 0,
|
||||
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
|
||||
memset(pString, 0, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
|
||||
|
||||
cpe_control_strncpy_s(pString,
|
||||
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1,
|
||||
inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr),
|
||||
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)));
|
||||
cpe_control_strncpy_s(pString, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1,
|
||||
pIP, cpe_control_strnlen_s(pIP, nIPv4LenMax));
|
||||
}
|
||||
|
||||
return pString;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@
|
|||
#include <stdlib.h>
|
||||
#include <getopt.h>
|
||||
#include <stdio.h> /* fdopen */
|
||||
#include <string.h> /* memset, strstr, strlen */
|
||||
#include <stdlib.h> /* strtoul */
|
||||
#include <sys/time.h> /* fd_set */
|
||||
#include <ctype.h>
|
||||
|
|
@ -181,6 +180,8 @@ DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
|
|||
#endif
|
||||
;
|
||||
|
||||
#define DSL_CPE_PIPE_NAME_STR_LEN 32
|
||||
|
||||
/*
|
||||
***************** IFXOS dependent definitions **************************
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ typedef IFX_ulong_t IFX_addr_t;
|
|||
#define DSL_CPE_FGets IFXOS_FGets
|
||||
/*#define DSL_CPE_FPrintf IFXOS_FPrintf*/
|
||||
#define DSL_CPE_snprintf IFXOS_SNPrintf
|
||||
#define DSL_vsnprintf IFXOS_VSNPrintf
|
||||
#define DSL_CPE_vsnprintf IFXOS_VSNPrintf
|
||||
|
||||
/*
|
||||
Function map - Memory Functions.
|
||||
|
|
|
|||
|
|
@ -17,12 +17,35 @@
|
|||
#define cpe_control_memcpy_s memcpy_s
|
||||
#define cpe_control_memset_s memset_s
|
||||
#define cpe_control_strncpy_s strncpy_s
|
||||
#define cpe_control_strnlen_s strnlen_s
|
||||
#define cpe_control_strtok_s strtok_s
|
||||
#define cpe_control_strcat_s strcat_s
|
||||
#define cpe_control_vsnprintf_s vsnprintf_s
|
||||
|
||||
/* snprintf_s symbol is not exported in SafeC lib */
|
||||
static int cpe_control_snprintf_s(char *dest,
|
||||
size_t dmax,
|
||||
const char *fmt,
|
||||
...)
|
||||
{
|
||||
va_list arg;
|
||||
int retVal;
|
||||
|
||||
va_start(arg, fmt);
|
||||
retVal = vsnprintf_s(dest, dmax, fmt, arg);
|
||||
va_end(arg);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#warning "Safe C library is not available!"
|
||||
|
||||
#include <stddef.h> /* size_t */
|
||||
#include <stddef.h> /* size_t */
|
||||
#include <stdarg.h> /* va_list */
|
||||
#include "drv_dsl_cpe_api_error.h"
|
||||
|
||||
static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
|
||||
{
|
||||
return a > b ? b : a;
|
||||
|
|
@ -32,6 +55,149 @@ static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
|
|||
#define cpe_control_memset_s(dest, destsz, src, srcsz) memset(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||
#define cpe_control_strncpy_s(dest, destsz, src, srcsz) strncpy(dest, src, safec_wrapper_min(destsz,srcsz))
|
||||
|
||||
static size_t cpe_control_strnlen_s(const char *str,
|
||||
size_t smax)
|
||||
{
|
||||
/* preconditions */
|
||||
if ((str == NULL) ||
|
||||
(smax == 0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* main algorithm */
|
||||
size_t size = 0;
|
||||
|
||||
for (const char *tmp = str; size < smax && *tmp != '\0'; ++size, ++tmp)
|
||||
;
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
static char *cpe_control_strtok_s(char *dest,
|
||||
size_t *dmax,
|
||||
const char *delim,
|
||||
char **ptr)
|
||||
{
|
||||
/* preconditions */
|
||||
if ((delim == NULL) ||
|
||||
(ptr == NULL) ||
|
||||
(dmax == NULL) ||
|
||||
(*dmax == 0))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((dest == NULL) &&
|
||||
(*ptr == NULL))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* special handling of function init call */
|
||||
if (dest != NULL)
|
||||
{
|
||||
*ptr = dest;
|
||||
}
|
||||
|
||||
/* checking declared string length */
|
||||
if (cpe_control_strnlen_s(*ptr, (1 + *dmax)) >= *dmax)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* main algorithm */
|
||||
char *pTmp;
|
||||
size_t nTmpSize = 0;
|
||||
|
||||
pTmp = strtok(*ptr, delim);
|
||||
nTmpSize = cpe_control_strnlen_s(pTmp, *dmax);
|
||||
|
||||
/* "+1" constant size of found delimiter */
|
||||
*dmax -= (nTmpSize+1);
|
||||
|
||||
/* move after found delimitier */
|
||||
for (size_t i = 0; i <= nTmpSize; ++i, ++(*ptr))
|
||||
;
|
||||
|
||||
return pTmp;
|
||||
}
|
||||
|
||||
static int cpe_control_pipe_strcat_s(char *dest,
|
||||
size_t destsz,
|
||||
char *src)
|
||||
{
|
||||
/* preconditions */
|
||||
if ((dest == NULL) ||
|
||||
(src == NULL) ||
|
||||
(destsz == 0))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((dest < src) &&
|
||||
(dest + destsz > src))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char* tmp = dest;
|
||||
|
||||
for (; tmp <= (dest + destsz) && *tmp != '\0'; ++tmp)
|
||||
;
|
||||
|
||||
if (tmp >= (dest + destsz))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* main algorithm */
|
||||
strcat(dest, src);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cpe_control_snprintf_s(char *dest,
|
||||
size_t dmax,
|
||||
const char *fmt,
|
||||
...)
|
||||
{
|
||||
/* preconditions */
|
||||
if ((dest == NULL) ||
|
||||
(fmt == NULL) ||
|
||||
(dmax == 0))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* main algorithm */
|
||||
va_list arg;
|
||||
int retVal;
|
||||
|
||||
va_start(arg, fmt);
|
||||
retVal = DSL_CPE_vsnprintf(dest, dmax, fmt, arg);
|
||||
va_end(arg);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
static int cpe_control_vsnprintf_s(char *dest,
|
||||
size_t dmax,
|
||||
const char *fmt,
|
||||
va_list vlist)
|
||||
{
|
||||
/* preconditions */
|
||||
if ((dest == NULL) ||
|
||||
(fmt == NULL) ||
|
||||
(dmax == 0))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* main algorithm */
|
||||
return DSL_CPE_vsnprintf(dest, dmax, fmt, vlist);
|
||||
}
|
||||
|
||||
#endif /* defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 3) */
|
||||
|
||||
#endif /* _SAFEC_WRAPPER_H */
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue