diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aacf97f495ead10c192a0ee1ec6b75bee8488e68..285a25fb65ce71866c1d02f8fb79968c8a9c026e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,22 +1,14 @@ variables: - DEBUG: 'TRUE' - SOURCE_FOLDER: "./src" - FLAWFINDER_OPTIONS: "-m 4 --error-level=5" - CPPCHECK_OPTIONS: " --enable=all --error-exitcode=1 --suppress=unusedStructMember" + SOURCE_FOLDER: "." include: - project: 'iopsys/gitlab-ci-pipeline' file: '/static-code-analysis.yml' - ref: '0.31' - - project: 'docs/portal2/pipeline-template' - file: 'MkDocs.gitlab-ci.yml' - rules: - - if: $CI_COMMIT_BRANCH == "devel" + ref: '1.0' stages: - static_code_analysis - functional_test - - deploy run_functional_test: stage: functional_test diff --git a/Makefile b/Makefile index df5a5e104603f01f8a126ae81fecb749dc773129..a8a624feba3f4c7325bdd5c72cf5cc8c26bbabd7 100644 --- a/Makefile +++ b/Makefile @@ -20,4 +20,4 @@ $(LIB): $(LIB_OBJS) $(CC) $(PROG_CFLAGS) $(LIB_LDFLAGS) -shared -o $@ $^ clean: - rm -f *.o $(PROG) $(LIB) + rm -f *.o $(PROG) $(LIB) ./src/*.o diff --git a/gitlab-ci/functional-test.sh b/gitlab-ci/functional-test.sh index b8468a3cc85a0c5988a76757b8ddf528c0420f59..6e70338b87de120a83a0cd79435f8c186a89de40 100755 --- a/gitlab-ci/functional-test.sh +++ b/gitlab-ci/functional-test.sh @@ -18,6 +18,11 @@ function check_result() fi } +# install twampy +if [ ! -d "/opt/dev/twampy" ]; then + exec_cmd git clone https://github.com/nokia/twampy.git /opt/dev/twampy +fi + # building twamp twamp_clean twamp_make diff --git a/gitlab-ci/install-dependencies.sh b/gitlab-ci/install-dependencies.sh index 1693741fb1b43825591465352ee4dd52ce91ccc7..285cc185721796dab4b7e8dba2c5292c8a88c21f 100755 --- a/gitlab-ci/install-dependencies.sh +++ b/gitlab-ci/install-dependencies.sh @@ -1,17 +1,7 @@ #!/bin/bash echo "install dependencies for tests" -pwd source ./gitlab-ci/shared.sh -# install required packages -exec_cmd apt update - # install bbfdm install_bbfdm - -# install twampy -cd /opt/dev -[ -d twampy ] && rm -fr twampy -exec_cmd git clone https://github.com/nokia/twampy.git - diff --git a/gitlab-ci/shared.sh b/gitlab-ci/shared.sh index aa9379bd03a25f43c5c408f1ef20f2511bec6554..8314b9dd2c16f939cb0399b654ba552c332b4232 100755 --- a/gitlab-ci/shared.sh +++ b/gitlab-ci/shared.sh @@ -59,7 +59,7 @@ function generate_report() function install_bbfdm() { - [ -d "/opt/dev/bbfdm" ] && rm -rf /opt/dev/bbfdm + [ -d "/opt/dev/bbfdm" ] && return 0 if [ -n "${BBFDM_BRANCH}" ]; then exec_cmd git clone -b ${BBFDM_BRANCH} https://dev.iopsys.eu/bbf/bbfdm.git /opt/dev/bbfdm diff --git a/src/common.c b/src/common.c index 46076987d69f2655defe15417c898aff2dac3105..5e092f4f630fd81b847bab194600cd25e467d85a 100644 --- a/src/common.c +++ b/src/common.c @@ -173,7 +173,7 @@ int twamp_get_uci_config(twamp_ref_cfg_t **ref_cfg, twamp_glob_cfg_t *glb_cfg) if (tb[E_TWAMP_GLOB_LOG_LEVEL]) { const char *val = tb[E_TWAMP_GLOB_LOG_LEVEL]->v.string; - glb_cfg->log_level = atoi(val) > SDEBUG ? SDEBUG : atoi(val); + glb_cfg->log_level = strtol(val, NULL, 10) > SDEBUG ? SDEBUG : strtol(val, NULL, 10); } else { glb_cfg->log_level = SINFO; } @@ -209,12 +209,12 @@ int twamp_get_uci_config(twamp_ref_cfg_t **ref_cfg, twamp_glob_cfg_t *glb_cfg) if (tb[E_TWAMP_REFL_PORT]) { const char *val = tb[E_TWAMP_REFL_PORT]->v.string; - tmp[ret].ref_port = atoi(val); + tmp[ret].ref_port = strtol(val, NULL, 10); } if (tb[E_TWAMP_REFL_TTL]) { const char *val = tb[E_TWAMP_REFL_TTL]->v.string; - tmp[ret].ref_ttl = atoi(val); + tmp[ret].ref_ttl = strtol(val, NULL, 10); } if (tb[E_TWAMP_REFL_DEV]) { @@ -223,7 +223,7 @@ int twamp_get_uci_config(twamp_ref_cfg_t **ref_cfg, twamp_glob_cfg_t *glb_cfg) if (tb[E_TWAMP_REFL_IP_VER]) { const char *val = tb[E_TWAMP_REFL_IP_VER]->v.string; - tmp[ret].ip_ver = atoi(val) == 0 ? 4 : atoi(val); + tmp[ret].ip_ver = strtol(val, NULL, 10) == 0 ? 4 : strtol(val, NULL, 10); } else { tmp[ret].ip_ver = 4; } diff --git a/src/common.h b/src/common.h index c76f3c783af23ce7eb98a70f8372a06aadf4c35d..5bb200f64ce18bec58a79e391e8f8de5af9b7d10 100644 --- a/src/common.h +++ b/src/common.h @@ -56,11 +56,11 @@ void print_debug(const char *format, ...); typedef struct refl_cfg { bool ref_enable; - char ref_intf[16]; - char ref_dev[16]; int ip_ver; int ref_port; int ref_ttl; + char ref_intf[16]; + char ref_dev[16]; char ref_ip_allow[1024]; char ref_port_allow[1024]; } twamp_ref_cfg_t; diff --git a/src/datamodel.c b/src/datamodel.c index 6a471152d6f5406b68d3190a50d9a5086f0004b6..e3903001ee78a567dcb0baa935adb6dc2f845794 100644 --- a/src/datamodel.c +++ b/src/datamodel.c @@ -186,9 +186,10 @@ static int get_IPInterfaceTWAMPReflector_Status(char *refparam, struct dmctx *ct bbf_uci_get_value_by_section(((struct dm_data *)data)->config_section, "enable", &enable); if (strcmp(enable, "1") == 0) - *value = "Active"; + *value = dmstrdup("Active"); else - *value = "Disabled"; + *value = dmstrdup("Disabled"); + return 0; } diff --git a/src/twamp_light.c b/src/twamp_light.c index 75afc8b3256e2c60c96f2742f2a63d7461699c5c..ff47c294f97f4457760d0c18aab31b7355ab52cc 100644 --- a/src/twamp_light.c +++ b/src/twamp_light.c @@ -158,13 +158,13 @@ int check_port_allowed(const char *allowed_port_list, int port) if(strstr(pch, "-")) { min = strtok_r(pch, "-", &str); max = strtok_r(NULL, "", &str); - if(port >= atoi(min) && port <= atoi(max)) { + if(port >= strtol(min, NULL, 10) && port <= strtol(max, NULL, 10)) { ret = 1; break; } } - if (port == atoi(pch)) { + if (port == strtol(pch, NULL, 10)) { ret = 1; break; } @@ -177,7 +177,7 @@ int check_port_allowed(const char *allowed_port_list, int port) static char *check_ipv6_address_active(char *ip) { unsigned char buf[sizeof(struct in6_addr)]; - char str[INET6_ADDRSTRLEN], *res = ""; + char str[INET6_ADDRSTRLEN] = {0}; int s; s = inet_pton(AF_INET6, ip, buf); @@ -191,16 +191,16 @@ static char *check_ipv6_address_active(char *ip) goto exit; } - res = str; + return strdup(str); exit: - return strdup(res); + return strdup(""); } static int check_ipv6_address(char *ip, char *maskstr, char *address) { struct sockaddr_in6 sa = {0}; unsigned long netaddress, maxaddress; - unsigned long mask = ~((1 << (128 - atoi(maskstr))) - 1); + unsigned long mask = ~((1 << (128 - strtol(maskstr, 0, 10))) - 1); inet_pton(AF_INET6, address, &(sa.sin6_addr)); netaddress = (ntohl(*((uint32_t *)sa.sin6_addr.s6_addr)) & mask); @@ -216,7 +216,7 @@ static int check_ipv4_address(char *ip, char *maskstr, char *address) { struct sockaddr_in sa = {0}; unsigned long netaddress, maxaddress; - unsigned long mask = ~((1 << (32 - atoi(maskstr))) - 1); + unsigned long mask = ~((1 << (32 - strtol(maskstr, NULL, 10))) - 1); inet_pton(AF_INET, address, &(sa.sin_addr)); netaddress = (ntohl(sa.sin_addr.s_addr) & mask); @@ -306,6 +306,8 @@ static int receive_test_message(twamp_ref_cfg_t *tc, twamp_client_info_t *client if (tc->ip_ver == 6) socket_family = AF_INET6; + memset(&addr, 0, sizeof(struct sockaddr_in)); + inet_ntop(socket_family, (socket_family == AF_INET6)? (void*) &(client->addr6.sin6_addr) : (void*) &(client->addr.sin_addr), str_client, sizeof(str_client)); ref_unauth_param_t refl_parm; @@ -327,9 +329,10 @@ static int receive_test_message(twamp_ref_cfg_t *tc, twamp_client_info_t *client message.msg_name = (socket_family == AF_INET6)? (void*)&addr6: (void*)&addr; message.msg_namelen = len; + + vec.iov_base = &pack; + vec.iov_len = TWAMP_UNAUTH_PKT_SIZE; message.msg_iov = &vec; - message.msg_iov->iov_base = &pack; - message.msg_iov->iov_len = TWAMP_UNAUTH_PKT_SIZE; message.msg_iovlen = 1; message.msg_control = &control_buffer; message.msg_controllen = control_length; @@ -462,7 +465,7 @@ static void configure_client(twamp_client_info_t *client, int sockfd, void *twamp_connect_light(void *arg) { - int sockfd = -1; + int sockfd; int ret=0; int family = AF_INET; struct sockaddr_in6 serv6_addr; @@ -474,6 +477,7 @@ void *twamp_connect_light(void *arg) memset(&serv_addr, 0, sizeof(serv_addr)); memset(&serv6_addr, 0, sizeof(serv6_addr)); memset(&config, 0, sizeof(twamp_ref_cfg_t)); + memset(&client, 0, sizeof(twamp_client_info_t)); if (tc == NULL) { return NULL;