8.4.1.70 Prpl Release

This commit is contained in:
Release Engineer 2020-04-28 23:28:49 +05:30
parent 68c04460df
commit f722e13e0d
20 changed files with 2754 additions and 943 deletions

View file

@ -1,5 +1,20 @@
NEXT VERSION 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 V4.21.6 - 2019-10-14
- VRX (CURTSYS-2484) Implement status JSON update for line stats - VRX (CURTSYS-2484) Implement status JSON update for line stats
- VRX (CURTSYS-2485) Implement status JSON update for channel stats - VRX (CURTSYS-2485) Implement status JSON update for channel stats

View file

@ -5,7 +5,7 @@
#define PACKAGE "dsl_cpe_control" #define PACKAGE "dsl_cpe_control"
/* Version number of package */ /* Version number of package */
#define VERSION "4.21.6" #define VERSION "4.21.6.2"
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION VERSION #define PACKAGE_VERSION VERSION

20
configure vendored
View file

@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# From configure.in Revision: 1.173 . # From configure.in Revision: 1.173 .
# Guess values for system-dependent variables and create Makefiles. # 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. # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@ -578,8 +578,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='DSL CPE Control application' PACKAGE_NAME='DSL CPE Control application'
PACKAGE_TARNAME='dsl_cpe_control' PACKAGE_TARNAME='dsl_cpe_control'
PACKAGE_VERSION='4.21.6' PACKAGE_VERSION='4.21.6.2'
PACKAGE_STRING='DSL CPE Control application 4.21.6' PACKAGE_STRING='DSL CPE Control application 4.21.6.2'
PACKAGE_BUGREPORT='' PACKAGE_BUGREPORT=''
PACKAGE_URL='' 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. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF 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]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1595,7 +1595,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in 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 esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1819,7 +1819,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF 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 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -2171,7 +2171,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. 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 generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -3036,7 +3036,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='dsl_cpe_control' PACKAGE='dsl_cpe_control'
VERSION='4.21.6' VERSION='4.21.6.2'
cat >>confdefs.h <<_ACEOF 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 # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" 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 generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -10820,7 +10820,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ 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, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -1,6 +1,6 @@
AC_REVISION($Revision: 1.173 $) 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) AC_CONFIG_SRCDIR(src/Makefile.am)
AM_INIT_AUTOMAKE([tar-pax]) AM_INIT_AUTOMAKE([tar-pax])

View file

@ -169,7 +169,8 @@ EXTRA_DIST = \
if INCLUDE_DSL_JSON_PARSING if INCLUDE_DSL_JSON_PARSING
EXTRA_DIST += \ EXTRA_DIST += \
dsl_cpe_configuration_parser.h \ dsl_cpe_configuration_parser.h \
dsl_cpe_status_parser.h dsl_cpe_status_parser.h \
dsl_cpe_interface.h
endif endif
if ADD_APPL_CFLAGS_SET if ADD_APPL_CFLAGS_SET

View file

@ -118,7 +118,8 @@ bin_PROGRAMS = dsl_cpe_control$(EXEEXT)
@INCLUDE_DSL_JSON_PARSING_TRUE@am__append_14 = \ @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_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) @DSL_CCA_DBG_MAX_LEVEL_SET_TRUE@am__append_15 = -DDSL_CCA_DBG_MAX_LEVEL=$(DSL_CCA_DBG_MAX_LEVEL_PRE)
subdir = src subdir = src

View file

@ -46,7 +46,7 @@ struct Pipe_env_s
/** number of this pipe interface */ /** number of this pipe interface */
DSL_int_t number; DSL_int_t number;
/** name of event pipe */ /** name of event pipe */
DSL_char_t namePipeEvent[32]; DSL_char_t namePipeEvent[DSL_CPE_PIPE_NAME_STR_LEN];
/** command buffer */ /** command buffer */
DSL_char_t cmd_buffer[MAX_CLI_PIPE_CMD_LEN]; DSL_char_t cmd_buffer[MAX_CLI_PIPE_CMD_LEN];
DSL_CPE_File_t *pipe_in; 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_int_t nPipeNum)
{ {
DSL_Error_t ret = DSL_SUCCESS; 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)); memset(pPipeEnv, 0, sizeof(Pipe_env_t));
/* remember own number */ /* remember own number */
@ -138,7 +138,7 @@ DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
pipeNameFormat, nPipeNum, "event"); pipeNameFormat, nPipeNum, "event");
ret = DSL_CPE_PipeCreate(pPipeEnv->namePipeEvent); ret = DSL_CPE_PipeCreate(pPipeEnv->namePipeEvent);
if (ret < DSL_SUCCESS) if (ret < DSL_SUCCESS)
{ {
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX

View file

@ -1645,7 +1645,7 @@ static const DSL_char_t g_sDsmcg[] =
" e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF " e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF
" e_MEI_VECTOR_CTRL_ON = 1" 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_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 ""; DSL_CPE_CRLF "";
#else #else
""; "";

View file

@ -12,6 +12,7 @@
#include "json.h" #include "json.h"
#include "dsl_cpe_control.h" #include "dsl_cpe_control.h"
#include "dsl_cpe_configuration_parser.h" #include "dsl_cpe_configuration_parser.h"
#include "dsl_cpe_interface.h"
#include "drv_dsl_cpe_api_ioctl.h" #include "drv_dsl_cpe_api_ioctl.h"
#if defined(INCLUDE_DSL_CPE_API_VRX) #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 #define SECTION_PATH_LENGTH 256
/* Configuration file path */ /* 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 }; static DSL_Configuration_t g_sConfiguration = { 0 };
/**********************************************/ /**********************************************/
@ -229,6 +230,7 @@ static DSL_Error_t DSL_CPE_OperatorSelectCfgValidateAndApply(
DSL_Error_t DSL_CPE_ConfigInit() DSL_Error_t DSL_CPE_ConfigInit()
{ {
static DSL_boolean_t bInitDone = DSL_FALSE; static DSL_boolean_t bInitDone = DSL_FALSE;
DSL_Error_t nRet = DSL_ERROR;
if (bInitDone == DSL_FALSE) if (bInitDone == DSL_FALSE)
{ {
@ -307,15 +309,20 @@ DSL_Error_t DSL_CPE_ConfigInit()
DSL_CCA_DEBUG(DSL_CCA_DBG_WRN, (DSL_CPE_PREFIX DSL_CCA_DEBUG(DSL_CCA_DBG_WRN, (DSL_CPE_PREFIX
"WARNING - Configuration initialized with default values!" DSL_CPE_CRLF)); "WARNING - Configuration initialized with default values!" DSL_CPE_CRLF));
nRet = DSL_WRN_CONFIG_PARAM_IGNORED;
} }
bInitDone = DSL_TRUE; bInitDone = DSL_TRUE;
return DSL_TRUE; nRet = DSL_SUCCESS;
} }
else else
{ {
return DSL_FALSE; nRet = DSL_ERROR;
} }
return nRet;
} }
/* /*
@ -498,75 +505,75 @@ static DSL_void_t DSL_CPE_JsonParse(
/* Debugging */ /* Debugging */
PARSE_SECTION_INT( 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 */ /* StartupInit */
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "next_mode", pStartupInitConfig->nNextMode); CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_NEXT_MODE, pStartupInitConfig->nNextMode);
PARSE_SECTION_INT( 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( 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( PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "channels_per_line", pStartupInitConfig->nChannelsPerLine); CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_CHANNELS_PER_LINE, pStartupInitConfig->nChannelsPerLine);
/* Bitswap */ /* Bitswap */
PARSE_SECTION_INT( 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( 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( 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( 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 */ /* Retransmission */
PARSE_SECTION_INT( 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( 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( 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( 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 */ /* SRA */
PARSE_SECTION_INT( 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( 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( 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( 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 */ /* Virtualnoise */
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_VIRTUALNOISE_SECTION_PATH, "us", pVirtualNoiseConfig->Us); CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_US, pVirtualNoiseConfig->Us);
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_VIRTUALNOISE_SECTION_PATH, "ds", pVirtualNoiseConfig->Ds); CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_DS, pVirtualNoiseConfig->Ds);
/* TcLayer */ /* TcLayer */
PARSE_SECTION_INT( 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( PARSE_SECTION_INT(
CONFIG_TCLAYER_SECTION_PATH, "vdsl", pSystemIfConfig->nTcLayer_Vdsl); CONFIG_TCLAYER_SECTION_PATH, DSL_CFG_TC_VDSL, pSystemIfConfig->nTcLayer_Vdsl);
/* Common */ /* Common */
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "operator_select", pCommonConfig->nOperatorSelect); CONFIG_COMMON_SECTION_PATH, DSL_CFG_OPERATOR_SELECT, pCommonConfig->nOperatorSelect);
PARSE_SECTION_INT( 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( PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "vectoring_enable", pCommonConfig->VectoringEnable); CONFIG_COMMON_SECTION_PATH, DSL_CFG_VECTORING_ENABLE, pCommonConfig->VectoringEnable);
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "activation_sequence", pCommonConfig->ActSeq); CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_SEQUENCE, pCommonConfig->ActSeq);
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "activation_mode", pCommonConfig->ActMode); CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_MODE, pCommonConfig->ActMode);
PARSE_SECTION_INT( PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "remember", pCommonConfig->Remember); CONFIG_COMMON_SECTION_PATH, DSL_CFG_REMEMBER, pCommonConfig->Remember);
PARSE_SECTION_INT( 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) if (bFound == DSL_FALSE)
{ {
@ -583,17 +590,17 @@ static DSL_void_t DSL_CPE_JsonParse(
/* Reboot criteria */ /* Reboot criteria */
PARSE_SECTION_HEX( PARSE_SECTION_HEX(
CONFIG_REBOOTCRITERIA_SECTION_PATH, "adsl", pRebootCriteriaConfig->Adsl); CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_ADSL, pRebootCriteriaConfig->Adsl);
PARSE_SECTION_HEX( PARSE_SECTION_HEX(
CONFIG_REBOOTCRITERIA_SECTION_PATH, "vdsl", pRebootCriteriaConfig->Vdsl); CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_VDSL, pRebootCriteriaConfig->Vdsl);
/* Common */ /* Common */
PARSE_SECTION_HEX( PARSE_SECTION_HEX(
CONFIG_COMMON_SECTION_PATH, "vdsl_profile", pCommonConfig->VdslProfileVal); CONFIG_COMMON_SECTION_PATH, DSL_CFG_VDSL_PROFILE, pCommonConfig->VdslProfileVal);
PARSE_SECTION_HEX( 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( 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) if (bFound == DSL_FALSE)
{ {

View file

@ -38,16 +38,16 @@ typedef struct
typedef struct typedef struct
{ {
/** Bitswap config for US in VDSL */ /** Bitswap config for US in VDSL */
bool Us_Vdsl; DSL_boolean_t Us_Vdsl;
/** Bitswap config for DS in VDSL */ /** Bitswap config for DS in VDSL */
bool Ds_Vdsl; DSL_boolean_t Ds_Vdsl;
/** Bitswap config for US in ADSL */ /** Bitswap config for US in ADSL */
bool Us_Adsl; DSL_boolean_t Us_Adsl;
/** Bitswap config for DS in ADSL */ /** Bitswap config for DS in ADSL */
bool Ds_Adsl; DSL_boolean_t Ds_Adsl;
} DSL_CFG_Bitswap_t; } DSL_CFG_Bitswap_t;
typedef struct typedef struct
@ -83,10 +83,10 @@ typedef struct
typedef struct typedef struct
{ {
/** Virtual Noise config for US */ /** Virtual Noise config for US */
bool Us; DSL_boolean_t Us;
/** Virtual Noise config for DS */ /** Virtual Noise config for DS */
bool Ds; DSL_boolean_t Ds;
} DSL_CFG_VirtualNoise_t; } DSL_CFG_VirtualNoise_t;
typedef struct typedef struct
@ -258,7 +258,7 @@ typedef struct
0: Use autonomous FW message handling (instead of polling) 0: Use autonomous FW message handling (instead of polling)
1: Use polling mode only - DEFAULT 1: Use polling mode only - DEFAULT
*/ */
bool FWMsgPollingOnly; DSL_boolean_t FWMsgPollingOnly;
DSL_CFG_LowLevelHsTones_t sLowLevelHsTonesConfig; DSL_CFG_LowLevelHsTones_t sLowLevelHsTonesConfig;
} DSL_CFG_Common_t; } DSL_CFG_Common_t;
@ -314,8 +314,9 @@ typedef struct
\remark Should be called only once and at application startup. \remark Should be called only once and at application startup.
\return Return values are defined within the \ref DSL_Error_t definition \return Return values are defined within the \ref DSL_Error_t definition
- DSL_SUCCESS in case of success - DSL_SUCCESS in case of taken configuration from json file
- DSL_ERROR if operation failed - DSL_WRN_CONFIG_PARAM_IGNORED in case of taken default configuration
- DSL_ERROR if operation already performed
*/ */
DSL_Error_t DSL_CPE_ConfigInit(); DSL_Error_t DSL_CPE_ConfigInit();

File diff suppressed because it is too large Load diff

View file

@ -184,6 +184,14 @@ DSL_void_t DSL_CPE_ScriptRun(DSL_void_t);
#define _MKSTR(x) _MKSTR_1(x) #define _MKSTR(x) _MKSTR_1(x)
#endif #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; typedef unsigned int DSL_size_t;

View file

@ -77,6 +77,9 @@ static DSL_CmvGroupEntry_t DSL_CmvGroups[] =
{ "dsl", DSL_CMV_GROUP_DSL }, { "dsl", DSL_CMV_GROUP_DSL },
{ "", 0 } { "", 0 }
}; };
static DSL_size_t DSL_CmvGroupNameLen = 4;
#endif /* #if defined (INCLUDE_DSL_CPE_API_DANUBE)*/ #endif /* #if defined (INCLUDE_DSL_CPE_API_DANUBE)*/
DSL_Error_t DSL_strlwr(DSL_char_t *psStr) DSL_Error_t DSL_strlwr(DSL_char_t *psStr)
@ -146,7 +149,9 @@ DSL_Error_t DSL_CMV_Read (
DSL_strlwr(str_group); 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) if (strcmp (str_group, pGroups->psGroupName) == 0)
{ {
@ -204,7 +209,9 @@ DSL_Error_t DSL_CMV_Write (
DSL_strlwr(str_group); 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) if (strcmp (str_group, pGroups->psGroupName) == 0)
{ {
@ -622,12 +629,14 @@ DSL_Error_t DSL_CPE_TcpDebugMessageIntfStart (
{ {
DSL_CPE_Free(g_sTcpMessagesSocketAddr); 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) if (g_sTcpMessagesSocketAddr)
{ {
memset(g_sTcpMessagesSocketAddr, 0, strlen (sTcpServerIp) + 1); memset(g_sTcpMessagesSocketAddr, 0, nIpSize + 1);
cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, strlen (sTcpServerIp) + 1, cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, nIpSize + 1,
sTcpServerIp, strlen (sTcpServerIp)); sTcpServerIp, nIpSize);
} }
} }

View file

@ -360,12 +360,14 @@ DSL_int_t DSL_CPE_VRX_Reboot(
DSL_CPE_VRX_ResponseMessage(pCmvMsg); 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; 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; 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; 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 = DSL_CPE_Open(text);
/*mei_fd = open(text, O_RDWR);*/ /*mei_fd = open(text, O_RDWR);*/

1147
src/dsl_cpe_interface.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -36,6 +36,8 @@
#define SYS_NAME_PREFIX PRJ_NAME_PREFIX"/tmp" #define SYS_NAME_PREFIX PRJ_NAME_PREFIX"/tmp"
#define SYS_PIPE_PREFIX SYS_NAME_PREFIX"/pipe" #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*/ #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 */ /* Used to generate the pipe path */
DSL_char_t *pipepath = NULL; DSL_char_t *pipepath = NULL;
DSL_Error_t ret = DSL_SUCCESS; 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)); 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 ) if ( !pipepath )
{ {
return DSL_ERR_MEMORY; return DSL_ERR_MEMORY;
} }
memset(pipepath, 0, strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1); memset(pipepath, 0, nPipepathSize);
cpe_control_strncpy_s(pipepath, cpe_control_strncpy_s(pipepath, nPipepathSize, SYS_PIPE_PREFIX"/",
strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1, cpe_control_strnlen_s(SYS_PIPE_PREFIX"/", DSL_CPE_SYS_PIPE_PREFIX_STR_LEN + 1));
SYS_PIPE_PREFIX"/",
strlen(SYS_PIPE_PREFIX"/"));
/* try to create directory, ignore error designedly */ /* try to create directory, ignore error designedly */
mkdir(pipepath, S_IFDIR | 0777); mkdir(pipepath, S_IFDIR | 0777);
strcat(pipepath, pName); (void)cpe_control_pipe_strcat_s(pipepath, nPipepathSize, pName);
/*create a named pipe and check errors*/ /*create a named pipe and check errors*/
if ((mkfifo(pipepath, 0777) == -1) && (errno != EEXIST)) 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_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", /* only open allows the flag "O_NONBLOCK",
so first open a fd and change it to a DSL_CPE_File_t* with fdopen() */ so first open a fd and change it to a DSL_CPE_File_t* with fdopen() */
if (reading == DSL_TRUE) if (reading == DSL_TRUE)
@ -780,8 +783,8 @@ DSL_int32_t DSL_CPE_ThreadInit(
memset(pThrCntrl, 0x00, sizeof(DSL_CPE_ThreadCtrl_t)); memset(pThrCntrl, 0x00, sizeof(DSL_CPE_ThreadCtrl_t));
/* set thread function arguments */ /* set thread function arguments */
cpe_control_strncpy_s(pThrCntrl->thrParams.pName, cpe_control_strncpy_s(pThrCntrl->thrParams.pName, DSL_CPE_THREAD_NAME_LEN,
DSL_CPE_THREAD_NAME_LEN, pName, strlen(pName)); pName, cpe_control_strnlen_s(pName, DSL_CPE_THREAD_NAME_LEN));
pThrCntrl->thrParams.pName[DSL_CPE_THREAD_NAME_LEN-1] = 0; pThrCntrl->thrParams.pName[DSL_CPE_THREAD_NAME_LEN-1] = 0;
pThrCntrl->nPriority = nPriority; pThrCntrl->nPriority = nPriority;
pThrCntrl->thrParams.nArg1 = nArg1; 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 #else
DSL_Error_t nRet = DSL_SUCCESS; DSL_Error_t nRet = DSL_SUCCESS;
DSL_CPE_EnvList_t *pEnvList = &g_EnvList, *pEnvListPrev = &g_EnvList; DSL_CPE_EnvList_t *pEnvList = &g_EnvList, *pEnvListPrev = &g_EnvList;
const DSL_uint16_t namelen = strlen (sName); const DSL_size_t nNameLenMax = 30;
const DSL_uint16_t vallen = sValue != DSL_NULL ? strlen (sValue) : 0; 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 DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
"SNH - Set %s to %s" DSL_CPE_CRLF, sName, sValue)); "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); putenv(pEnvList->pEnvEntry);
#endif #endif
@ -1483,7 +1490,7 @@ int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
/* add the debug string itself */ /* add the debug string itself */
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */ 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); va_end(ap);
if (DSL_CCA_g_dbgDestination == DSL_CCA_DBG_DST_CONSOLE) 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; struct iovec iov;
nSockFd = socket(AF_NETLINK, SOCK_RAW, DSL_DBG_MSG_NETLINK_ID); nSockFd = socket(AF_NETLINK, SOCK_RAW, DSL_DBG_MSG_NETLINK_ID);
if(nSockFd == -1) if(nSockFd == -1)
{ {
printf("could not open netlink socket"); printf("could not open netlink socket");
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX 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_flags = 1;
pNlMsgHdr->nlmsg_type = 0; 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_base = (void*) pNlMsgHdr;
iov.iov_len = pNlMsgHdr->nlmsg_len; iov.iov_len = pNlMsgHdr->nlmsg_len;
@ -1609,6 +1617,8 @@ DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t)
DSL_int_t nFd,nErrCode; DSL_int_t nFd,nErrCode;
struct ifreq ifr; struct ifreq ifr;
DSL_char_t *pString = DSL_NULL; DSL_char_t *pString = DSL_NULL;
const DSL_size_t nIPv4LenMax = 15;
char *pIP = DSL_NULL;
/* obtain ip-address automatically */ /* obtain ip-address automatically */
nFd = socket(AF_INET, SOCK_DGRAM, 0); 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)); memset(&ifr, 0x0, sizeof(struct ifreq));
ifr.ifr_addr.sa_family = AF_INET; ifr.ifr_addr.sa_family = AF_INET;
cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1, cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1,
DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE, strlen(DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE)); 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); nErrCode = DSL_CPE_Ioctl(nFd, SIOCGIFADDR, (DSL_int_t) &ifr);
close(nFd); close(nFd);
if (nErrCode == 0) if (nErrCode == 0)
{ {
pString = pIP = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
DSL_CPE_Malloc( strlen(inet_ntoa( pString = DSL_CPE_Malloc(cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
} }
} }
if (pString != DSL_NULL) if (pString != DSL_NULL)
{ {
memset(pString, 0, memset(pString, 0, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
cpe_control_strncpy_s(pString, cpe_control_strncpy_s(pString, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1,
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1, pIP, cpe_control_strnlen_s(pIP, nIPv4LenMax));
inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr),
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)));
} }
return pString; return pString;

View file

@ -58,7 +58,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <getopt.h> #include <getopt.h>
#include <stdio.h> /* fdopen */ #include <stdio.h> /* fdopen */
#include <string.h> /* memset, strstr, strlen */
#include <stdlib.h> /* strtoul */ #include <stdlib.h> /* strtoul */
#include <sys/time.h> /* fd_set */ #include <sys/time.h> /* fd_set */
#include <ctype.h> #include <ctype.h>
@ -181,6 +180,8 @@ DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
#endif #endif
; ;
#define DSL_CPE_PIPE_NAME_STR_LEN 32
/* /*
***************** IFXOS dependent definitions ************************** ***************** IFXOS dependent definitions **************************
*/ */

View file

@ -194,7 +194,7 @@ typedef IFX_ulong_t IFX_addr_t;
#define DSL_CPE_FGets IFXOS_FGets #define DSL_CPE_FGets IFXOS_FGets
/*#define DSL_CPE_FPrintf IFXOS_FPrintf*/ /*#define DSL_CPE_FPrintf IFXOS_FPrintf*/
#define DSL_CPE_snprintf IFXOS_SNPrintf #define DSL_CPE_snprintf IFXOS_SNPrintf
#define DSL_vsnprintf IFXOS_VSNPrintf #define DSL_CPE_vsnprintf IFXOS_VSNPrintf
/* /*
Function map - Memory Functions. Function map - Memory Functions.

View file

@ -17,12 +17,35 @@
#define cpe_control_memcpy_s memcpy_s #define cpe_control_memcpy_s memcpy_s
#define cpe_control_memset_s memset_s #define cpe_control_memset_s memset_s
#define cpe_control_strncpy_s strncpy_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 #else
#warning "Safe C library is not available!" #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) static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
{ {
return a > b ? b : a; 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_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)) #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 /* defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 3) */
#endif /* _SAFEC_WRAPPER_H */ #endif /* _SAFEC_WRAPPER_H */

File diff suppressed because it is too large Load diff