{ "supervisor", 's', 0, 0, "Run as supervisor; manager/network-function is chosen via config.json"},
{ "manager", 'm', 0, 0, "Run the daemon as manager." },
{ "network-function", 'f', 0, 0, "Run the daemon as network function." },
- { "generate", 'g', 0, 0, "Generate population data without commiting." },
+ { "blank", 'b', 0, 0, "Run the deamon as a blank network function." },
{ "test-mode", 't', 0, 0, "Test mode." },
// tools
int framework_init(int argc, char **argv) {
//environment vars
- framework_environment.nts.version = getenv(ENV_VAR_NTS_BUILD_VERSION) ? strdup(getenv(ENV_VAR_NTS_BUILD_VERSION)) : strdup("N/A");
- framework_environment.nts.build_time = getenv(ENV_VAR_NTS_BUILD_TIME) ? strdup(getenv(ENV_VAR_NTS_BUILD_TIME)) : strdup("N/A");
+ framework_environment.nts.version = (getenv(ENV_VAR_NTS_BUILD_VERSION) && strlen(getenv(ENV_VAR_NTS_BUILD_VERSION))) ? strdup(getenv(ENV_VAR_NTS_BUILD_VERSION)) : strdup(NTS_VERSION_FALLBACK"!");
+ if(getenv(ENV_VAR_NTS_BUILD_TIME) && strlen(getenv(ENV_VAR_NTS_BUILD_TIME))) {
+ framework_environment.nts.build_time = strdup(getenv(ENV_VAR_NTS_BUILD_TIME));
+ }
+ else {
+ if(__DATE__[0] == '?') {
+ framework_environment.nts.build_time = strdup("1970-01-01T00:00:00Z");
+ }
+ else {
+ //01234567890
+ //May 4 2021
+ int year = 0;
+ int month = 1;
+ int day = 0;
+
+ year = (__DATE__[10] - '0') + (__DATE__[9] - '0')*10 + (__DATE__[8] - '0')*100 + (__DATE__[7] - '0')*1000;
+ day = (__DATE__[5] - '0');
+ if(__DATE__[4] != ' ') {
+ day += (__DATE__[4] - '0')*10;
+ }
+
+ switch(__DATE__[0]) {
+ case 'J':
+ switch(__DATE__[1]) {
+ case 'a':
+ month = 1;
+ break;
+
+ case 'u':
+ if(__DATE__[2] == 'n') {
+ month = 6;
+ }
+ else {
+ month = 7;
+ }
+ break;
+ }
+ break;
+
+ case 'F':
+ month = 2;
+ break;
+
+ case 'M':
+ switch(__DATE__[2]) {
+ case 'r':
+ month = 3;
+ break;
+
+ case 'y':
+ month = 5;
+ break;
+ }
+ break;
+
+ case 'A':
+ switch(__DATE__[1]) {
+ case 'p':
+ month = 4;
+ break;
+
+ case 'u':
+ month = 8;
+ break;
+ }
+ break;
+
+ case 'S':
+ month = 9;
+ break;
+
+ case 'O':
+ month = 10;
+ break;
+
+ case 'N':
+ month = 11;
+ break;
+
+ case 'D':
+ month = 12;
+ break;
+ }
+
+ asprintf(&framework_environment.nts.build_time, "%04d-%02d-%02dT%sZ", year, month, day, __TIME__);
+ }
+ }
//set argp_version
char *version = 0;
stderr_file = "log/stderr-install.txt";
break;
+ case NTS_MODE_BLANK:
+ log_file = "log/log-blank.txt";
+ stderr_file = "log/stderr-blank.txt";
+ break;
+
case NTS_MODE_SUPERVISOR:
log_file = "log/log-supervisor.txt";
stderr_file = "log/stderr-supervisor.txt";
break;
- case NTS_MODE_GENERATE_DATA:
- log_file = "log/log-generate.txt";
- stderr_file = "log/stderr-generate.txt";
- break;
-
default:
log_file = "log/log.txt";
stderr_file = "log/stderr.txt";
framework_environment.nts.manual = getenv(ENV_VAR_NTS_MANUAL) ? true : false;
framework_environment.nts.function_type = getenv(ENV_VAR_NTS_FUNCTION_TYPE) ? strdup(getenv(ENV_VAR_NTS_FUNCTION_TYPE)) : strdup("");
framework_environment.nts.nf_standalone_start_features = getenv(ENV_VAR_NTS_NF_STANDALONE_START_FEATURES) ? strdup(getenv(ENV_VAR_NTS_NF_STANDALONE_START_FEATURES)) : strdup("");
+ framework_environment.nts.nf_mount_point_addressing_method = getenv(ENV_VAR_NTS_NF_MOUNT_POINT_ADDRESSING_METHOD) ? strdup(getenv(ENV_VAR_NTS_NF_MOUNT_POINT_ADDRESSING_METHOD)) : strdup("docker-mapping");
+ framework_environment.settings.docker_repository = getenv(ENV_VAR_DOCKER_REPOSITORY) ? strdup(getenv(ENV_VAR_DOCKER_REPOSITORY)) : strdup("");
+ if(strlen(framework_environment.settings.docker_repository)) {
+ if(framework_environment.settings.docker_repository[strlen(framework_environment.settings.docker_repository) - 1] == '/') {
+ framework_environment.settings.docker_repository[strlen(framework_environment.settings.docker_repository) - 1] = 0;
+ }
+ }
framework_environment.settings.docker_engine_version = getenv(ENV_VAR_DOCKER_ENGINE_VERSION) ? strdup(getenv(ENV_VAR_DOCKER_ENGINE_VERSION)) : strdup("1.40");
framework_environment.settings.hostname = getenv(ENV_VAR_HOSTNAME) ? strdup(getenv(ENV_VAR_HOSTNAME)) : strdup("localhost");
framework_environment.sdn_controller.protocol = getenv(ENV_VAR_SDN_CONTROLLER_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_PROTOCOL)) : strdup("https");
framework_environment.sdn_controller.ip = getenv(ENV_VAR_SDN_CONTROLLER_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_IP)) : strdup("127.0.0.1");
framework_environment.sdn_controller.port = get_int_from_string_with_default(getenv(ENV_VAR_SDN_CONTROLLER_PORT), 8181);
+ framework_environment.sdn_controller.callhome_ip = getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_IP) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_IP)) : strdup("127.0.0.1");
framework_environment.sdn_controller.callhome_port = get_int_from_string_with_default(getenv(ENV_VAR_SDN_CONTROLLER_CALLHOME_PORT), 6666);
framework_environment.sdn_controller.username = getenv(ENV_VAR_SDN_CONTROLLER_USERNAME) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_USERNAME)) : strdup("admin");
framework_environment.sdn_controller.password = getenv(ENV_VAR_SDN_CONTROLLER_PASSWORD) ? strdup(getenv(ENV_VAR_SDN_CONTROLLER_PASSWORD)) : strdup("admin");
+ framework_environment.sdn_controller.port_absent = (getenv(ENV_VAR_SDN_CONTROLLER_PORT) == 0) ? true : false;
framework_environment.ves_endpoint.common_header_version = getenv(ENV_VAR_VES_COMMON_HEADER_VERSION) ? strdup(getenv(ENV_VAR_VES_COMMON_HEADER_VERSION)) : strdup("7.2");
framework_environment.ves_endpoint.protocol = getenv(ENV_VAR_VES_ENDPOINT_PROTOCOL) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_PROTOCOL)) : strdup("https");
framework_environment.ves_endpoint.username = getenv(ENV_VAR_VES_ENDPOINT_USERNAME) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_USERNAME)) : strdup("admin");
framework_environment.ves_endpoint.password = getenv(ENV_VAR_VES_ENDPOINT_PASSWORD) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_PASSWORD)) : strdup("admin");
framework_environment.ves_endpoint.certificate = getenv(ENV_VAR_VES_ENDPOINT_CERTIFICATE) ? strdup(getenv(ENV_VAR_VES_ENDPOINT_CERTIFICATE)) : strdup("");
+ framework_environment.ves_endpoint.port_absent = (getenv(ENV_VAR_VES_ENDPOINT_PORT) == 0) ? true : false;
log_add_verbose(2, "[framework-env] nts.manual = %d\n", framework_environment.nts.manual);
log_add_verbose(2, "[framework-env] nts.version = %s\n", framework_environment.nts.version);
log_add_verbose(2, "[framework-env] nts.build_time = %s\n", framework_environment.nts.build_time);
log_add_verbose(2, "[framework-env] nts.function_type = %s\n", framework_environment.nts.function_type);
log_add_verbose(2, "[framework-env] nts.nf_standalone_start_features = %s\n", framework_environment.nts.nf_standalone_start_features);
+ log_add_verbose(2, "[framework-env] nts.nf_mount_point_addressing_method = %s\n", framework_environment.nts.nf_mount_point_addressing_method);
log_add_verbose(2, "[framework-env] settings.docker_engine_version = %s\n", framework_environment.settings.docker_engine_version);
+ log_add_verbose(2, "[framework-env] settings.docker_repository = %s\n", framework_environment.settings.docker_repository);
log_add_verbose(2, "[framework-env] settings.hostname = %s\n", framework_environment.settings.hostname);
log_add_verbose(2, "[framework-env] settings.ip_v4 = %s\n", framework_environment.settings.ip_v4);
log_add_verbose(2, "[framework-env] settings.ip_v6 = %s\n", framework_environment.settings.ip_v6);
if(framework_environment.settings.ip_v6_enabled) {
if(strstr(framework_environment.host.ip, ".")) {
log_error("[framework-env] host.ip is an invalid IP v6\n");
+ return NTS_ERR_FAILED;
}
}
else {
if(strstr(framework_environment.host.ip, ":")) {
log_error("[framework-env] host.ip is an invalid IP v4\n");
+ return NTS_ERR_FAILED;
}
}
log_add_verbose(2, "[framework-env] sdn_controller.protocol = %s\n", framework_environment.sdn_controller.protocol);
log_add_verbose(2, "[framework-env] sdn_controller.ip = %s\n", framework_environment.sdn_controller.ip);
log_add_verbose(2, "[framework-env] sdn_controller.port = %d\n", framework_environment.sdn_controller.port);
+ log_add_verbose(2, "[framework-env] sdn_controller.callhome_ip = %s\n", framework_environment.sdn_controller.callhome_ip);
log_add_verbose(2, "[framework-env] sdn_controller.callhome_port = %d\n", framework_environment.sdn_controller.callhome_port);
log_add_verbose(2, "[framework-env] sdn_controller.username = %s\n", framework_environment.sdn_controller.username);
log_add_verbose(2, "[framework-env] sdn_controller.password = %s\n", framework_environment.sdn_controller.password);
+ log_add_verbose(2, "[framework-env] sdn_controller.port_absent = %d\n", framework_environment.sdn_controller.port_absent);
log_add_verbose(2, "[framework-env] ves_endpoint.common_header_version = %s\n", framework_environment.ves_endpoint.common_header_version);
log_add_verbose(2, "[framework-env] ves_endpoint.protocol = %s\n", framework_environment.ves_endpoint.protocol);
log_add_verbose(2, "[framework-env] ves_endpoint.username = %s\n", framework_environment.ves_endpoint.username);
log_add_verbose(2, "[framework-env] ves_endpoint.password = %s\n", framework_environment.ves_endpoint.password);
log_add_verbose(2, "[framework-env] ves_endpoint.certificate = %s\n", framework_environment.ves_endpoint.certificate);
+ log_add_verbose(2, "[framework-env] ves_endpoint.port_absent = %d\n", framework_environment.ves_endpoint.port_absent);
log_add_verbose(2, "[framework-env] finished\n");
return NTS_ERR_OK;
framework_config.datastore_populate.preg_running = 0;
//config init
- if(!dir_exists("config")) {
- log_add_verbose(2, "[framework-config] config/ folder wasn't found; created.\n");
- mkdir("config", 0777);
+ char *config_file = "config/config.json";
+ if(file_exists("/opt/dev/config/config.json")) {
+ config_file = "/opt/dev/config/config.json";
+ log_add_verbose(1, LOG_COLOR_BOLD_MAGENTA"config.json is loaded from external volume!\n"LOG_COLOR_RESET);
}
+ else {
+ if(!dir_exists("config")) {
+ log_add_verbose(2, "[framework-config] config/ folder wasn't found; created.\n");
+ mkdir("config", 0777);
+ }
- if(!file_exists("config/config.json")) {
- log_add_verbose(2, "[framework-config] config.json file missing; created.\n");
- file_touch("config/config.json", "{}");
- }
+ if(!file_exists("config/config.json")) {
+ log_add_verbose(2, "[framework-config] config.json file missing; created.\n");
+ file_touch("config/config.json", "{}");
+ }
+ }
- log_add_verbose(2, "[framework-config] parsing config.json\n");
- char *config_contents = file_read_content("config/config.json");
+ log_add_verbose(2, "[framework-config] parsing config.json from %s\n", config_file);
+ char *config_contents = file_read_content(config_file);
cJSON *json = cJSON_Parse(config_contents);
free(config_contents);
if(!json) {
free(framework_environment.nts.build_time);
free(framework_environment.nts.function_type);
free(framework_environment.nts.nf_standalone_start_features);
+ free(framework_environment.nts.nf_mount_point_addressing_method);
free(framework_environment.settings.ip_v4);
free(framework_environment.settings.ip_v6);
free(framework_environment.settings.docker_engine_version);
+ free(framework_environment.settings.docker_repository);
free(framework_environment.settings.hostname);
free(framework_environment.host.ip);
free(framework_environment.sdn_controller.protocol);
free(framework_environment.sdn_controller.ip);
+ free(framework_environment.sdn_controller.callhome_ip);
free(framework_environment.sdn_controller.username);
free(framework_environment.sdn_controller.password);
free(framework_environment.ves_endpoint.common_header_version);
iter_arguments->nts_mode = NTS_MODE_NETWORK_FUNCTION;
break;
- case 'g':
- iter_arguments->nts_mode = NTS_MODE_GENERATE_DATA;
+ case 'b':
+ iter_arguments->nts_mode = NTS_MODE_BLANK;
break;
case 't':