Skip to content
Snippets Groups Projects
Select Git revision
  • ededfa65e0f75f054570057a6a242f1371675a5e
  • master default
  • feat/331-bitnami-kafka-moved-to-bitnamilegacy-kafka
  • feat/330-tid-pcep-component
  • feat/tid-newer-pcep-component
  • feat/policy-refactor
  • feat/314-tid-new-service-for-ipowdm-configuration-fron-orchestrator-to-ipowdm-controller
  • feat/329-ecoc-2025-hack-your-research
  • develop protected
  • feat/116-ubi-updates-in-telemetry-backend-to-support-p4-in-band-network-telemetry
  • feat/320-cttc-ietf-simap-basic-support-with-kafka-yang-push
  • feat/310-cttc-implement-nbi-connector-to-interface-with-osm-client
  • feat/307-update-python-version-service
  • feat/292-cttc-implement-integration-test-for-ryu-openflow
  • cnit_tapi
  • feat/327-tid-new-service-to-ipowdm-controller-to-manage-transceivers-configuration-on-external-agent
  • cnit-p2mp-premerge
  • feat/325-tid-nbi-e2e-to-manage-e2e-path-computation
  • feat/326-tid-external-management-of-devices-telemetry-nbi
  • openroadm-flex-grid
  • CTTC-IMPLEMENT-NBI-CONNECTOR-NOS-ZTP
  • feat/324-tid-nbi-ietf_l3vpn-deploy-fail
  • v5.0.0 protected
  • v4.0.0 protected
  • demo-dpiab-eucnc2024
  • v3.0.0 protected
  • v2.1.0 protected
  • v2.0.0 protected
  • v1.0.0 protected
29 results

cockroachdb_client.sh

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    pathComp.c 5.24 KiB
    /*
     * Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    #include <stdio.h>
    #include <stdlib.h> 
    #include <ctype.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <string.h>
    #include <unistd.h>
    #include <netdb.h>
    #include <glib.h>
    #include <sys/time.h>
    
    #ifdef GCOV
    // Instrumentation to report code coverage live
    // Ref: https://www.osadl.org/fileadmin/dam/interface/docbook/howtos/coverage.pdf
    #include <signal.h>
    
    // Code coverage flush method; used to update code coverage reports while the server is running
    void __gcov_flush(void); /* check in gcc sources gcc/gcov-io.h for the prototype */
    
    void my_gcov_handler(int signum)
    {
      printf("signal received: running __gcov_flush()\n");
      __gcov_flush(); /* dump coverage data on receiving SIGUSR1 */
    }
    #endif
    
    #include "pathComp_log.h"
    #include "pathComp_RESTapi.h"
    #include "pathComp.h"
    
    // External Variables
    FILE *logfile = NULL;
    // PATH COMP IP address API Client
    struct in_addr pathComp_IpAddr;
    // REST API ENABLED
    int RESTAPI_ENABLED = 0;
    
    GMainLoop * loop = NULL;
    
    ////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 	@file pathComp.c
     * 	@brief Read the pathComp.conf file @ /etc/pathComp/
     *
     *	@author Ricardo Martínez <ricardo.martinez@cttc.es>
     *	@date 2022
     */
    /////////////////////////////////////////////////////////////////////////////////////////
    void read_pathComp_config_file(FILE *fp)
    {
        DEBUG_PC ("Processing pathComp.conf");
        
        char buff[128], ip[128];   
        
        // READ PATH COMP SERVER IP
        memset (&pathComp_IpAddr, (int)0, sizeof (struct in_addr));
        fscanf(fp, "%s %s ", buff, ip);
    	pathComp_IpAddr.s_addr = inet_addr(ip);
        DEBUG_PC("pathComp_IpAddr: %s", inet_ntoa (pathComp_IpAddr));
        memset (buff, 0, sizeof (buff));
            
        // Read REST API 
        fscanf (fp, "%s %d ", buff, &RESTAPI_ENABLED);
        if (RESTAPI_ENABLED) DEBUG_PC ("REST API: ON");
        if (RESTAPI_ENABLED == 0) DEBUG_PC ("REST API: OFF");	
    
        memset (buff, 0, sizeof (buff));
        DEBUG_PC ("CommandLine: %s", buff);
      
        return;
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 	@file pathComp.c
     * 	@brief Main function for pathComp server
     *
     *	@author Ricardo Martínez <ricardo.martinez@cttc.es>
     *	@date 2022
     */
    /////////////////////////////////////////////////////////////////////////////////////////
    int main(int argc, char *argv[])
    {
    	#ifdef GCOV
    	struct sigaction new_action, old_action;
    	/* setup signal hander */
     	new_action.sa_handler = my_gcov_handler;
     	sigemptyset(&new_action.sa_mask);
     	new_action.sa_flags = 0;
     	sigaction(SIGUSR1, NULL, &old_action);
     	if (old_action.sa_handler != SIG_IGN)
     		sigaction (SIGUSR1, &new_action, NULL);
    	#endif
    
    	DEBUG_PC ("********************************************************************"); 
    	DEBUG_PC ("********************************************************************");
    	DEBUG_PC (" ---------------------- Path Computation Server---------------------");
    	DEBUG_PC ("********************************************************************");
    	DEBUG_PC ("********************************************************************"); 
    
    	// processing input parameters
    	if (argc == 1)
    	{
    		DEBUG_PC ("Arguments are missing ...");
    		exit (-1);		
    	}
    	
    	// argv[1] specifies the folder and the configuration file
    	gchar configFile[50];
    	strcpy (configFile, argv[1]);
    	DEBUG_PC ("Path Computation Server Config File is: %s", configFile);  
    	
    	// argv[2] specifies the folder and the log file
    	gchar log[50];
    	strcpy (log, argv[2]);
    	gint screen = strcmp(log, "screen_only");
    	if (screen == 0) {
    		DEBUG_PC("All logs shown through stdout, i.e.,screen");
    		logfile = NULL;
    	}
    	else {
    		DEBUG_PC("PATH COMP log File: %s", log);
    		// open the log file	
    		logfile = fopen(log, "w");
    		DEBUG_PC("log file is opened");
    	}
    	
    	// Read the pathComp.conf file
    	FILE *pathComp_config = NULL;	
    	pathComp_config = fopen (configFile, "r");
    	if (pathComp_config == NULL)
    	{	
    		DEBUG_PC ("File error\n");
    		exit (-1);
    	}	
    	DEBUG_PC ("pathComp_config.conf is opened");
    	
    	// Check if flag -d for daemonize 
    	if (argc > 3)
    	{
    		gchar options[10];
    		strcpy (options, argv[3]);
    		gint ret = strcmp (options, "-d");
    		if (ret == 0) daemon(0,0);
    	}	
    	
    	// Process the config file
    	read_pathComp_config_file (pathComp_config);
    
    	DEBUG_PC ("\n ---- PATH COMP MAIN LOOP ------");
    	/** Creates a new GMainLoop structure */
    	loop = g_main_loop_new (NULL, FALSE);
          
    	// Iff RESTAPI_ENABLED is ON
    	if (RESTAPI_ENABLED)
    	{
    		RESTapi_init(PATH_COMP_PORT);
    	}     
          
    	/** execute loop */
    	g_main_loop_run (loop);
    
    	/** decrease the one reference of loop when it is finished */
    	g_main_loop_unref(loop);
    	loop = NULL;
        return 0;
    }