diff options
Diffstat (limited to 'vnfs/VES5.0/evel/evel-library/code/VESreporting_vAFX/afx_svc.c')
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/code/VESreporting_vAFX/afx_svc.c | 228 |
1 files changed, 0 insertions, 228 deletions
diff --git a/vnfs/VES5.0/evel/evel-library/code/VESreporting_vAFX/afx_svc.c b/vnfs/VES5.0/evel/evel-library/code/VESreporting_vAFX/afx_svc.c deleted file mode 100644 index e8ff5d42..00000000 --- a/vnfs/VES5.0/evel/evel-library/code/VESreporting_vAFX/afx_svc.c +++ /dev/null @@ -1,228 +0,0 @@ - /*****************************************************************************//*** - * Copyright(c) <2017>, AT&T Intellectual Property. All other rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: This product includes - * software developed by the AT&T. - * 4. Neither the name of AT&T nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <ctype.h> -#include <string.h> -#include <stdint.h> -#include <unistd.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/types.h> - -#include "evel.h" -#include "afx_ves_reporter.h" - -/**************************************************************************//** - * Monitor AFX services for current status - * returns success status 1 or failure 0. - * - * @param cmd Pointer to Shell cmd to monitor status. - * @param dtls Pointer to details of service - * Returns the start time of service - * - * @retvalue int Success 1 service running 0 service inactive - *****************************************************************************/ -int monitor_afx_service( char *cmd, char *detls, char *svc ) -{ - FILE *fp; - char line[256]; - int n_spaces = 0, i; - char ** res = NULL; - char *p; - int ret = 0; - int lnno = 0; - - - fp = popen(cmd,"r"); - if (fp == NULL) { - printf("Failed to run command\n" ); - return 0; - } - - /* Read the output a line at a time - output it. */ - while (fgets(line, sizeof(line)-1, fp) != NULL) { - //printf("%s",line); - lnno++; - -n_spaces = 0; -p = strtok (line, " "); -/* split string and append tokens to 'res' */ - -while (p) { - res = realloc (res, sizeof (char*) * ++n_spaces); - - if (res == NULL) - exit (-1); /* memory allocation failed */ - - res[n_spaces-1] = p; - - p = strtok (NULL, " "); -} - -/* realloc one extra element for the last NULL */ -res = realloc (res, sizeof (char*) * (n_spaces+1)); -res[n_spaces] = 0; - -if( n_spaces > 2 && lnno == 1 ) -{ - EVEL_DEBUG("AFX: Service %s\n",res[3]); - sprintf(svc,"%s",res[3]); - svc[strlen(svc)-1] = 0; -} - -/* print the result */ -if( n_spaces > 2 && !strcmp(res[0],"Active:") ) -{ - //for (i = 0; i < (n_spaces+1); ++i) - //{ - // printf ("res[%d] = %s\n", i, res[i]); - //} - if(!strncmp(res[1],"activ",5)){ - EVEL_DEBUG("AFX: Service Active\n"); - ret |= 1; - } else { - EVEL_DEBUG("AFX: Service Inactive\n"); - ret &= 0; - } -} - - } - -/* free the memory allocated */ -if(res != NULL) free (res); - - /* close */ - pclose(fp); - -return ret; - -} - -/**************************************************************************//** - * Thread function to Monitor AFX services - * Checks status of afx inout and afx output service every service monitor - * interval. It reports fault event at startup and whenever status changes - * - * @param threadarg Thread arguments for startup message - * - * @retvalue int Success 1 service running 0 service inactive - *****************************************************************************/ -void *ServiceMonitorAfxThread(void *threadarg) -{ - int taskid, sum; - char *hello_msg; - struct thread_data *my_data; - char cmd[256]; - char details[256]; - char *afxin = "afx@in*"; - char *afxout = "afx@out*"; - int instate = -1; - int outstate = -1; - int tmpstate; - char evid[128]; - char svc[128]; - int is_critical = 0; - - sleep(1); - my_data = (struct thread_data *) threadarg; - taskid = my_data->thread_id; - sum = my_data->sum; - hello_msg = my_data->message; - EVEL_INFO("AFX: Service Monitor Thread %d: %s Sum=%d\n", taskid, hello_msg, sum); - -while(1) -{ - /* invokes afx service monitor function and collects return value */ - sprintf(cmd,"/bin/systemctl status %s ",afxin); - tmpstate = monitor_afx_service( cmd, details,svc ); - if( tmpstate != instate ){ - printf("New afxin Service report sent %d\n",tmpstate); - instate = tmpstate; - if( instate == 1){ - sprintf(evid,"Fault_vAfx_SvcInput_%s",oam_intfaddr); - if (is_critical == 1){ - is_critical = 0; - sprintf(evid,"Fault_vAfx_SvcOutput_SvcInput_%s",oam_intfaddr); - report_fault("Fault_vAfx_Svc_input_Output",evid, - EVEL_SEVERITY_NORMAL, "routing", "AFXInput and AFXOutput", - "AFX services input and output down alarm", - details, NULL, NULL, NULL, instate); - } - sprintf(evid,"Fault_vAfx_SvcInput_%s",oam_intfaddr); - report_fault("Fault_vAfx_SvcInput",evid,EVEL_SEVERITY_NORMAL, "routing", "AFXInput", "AFX services input up alarm", details, NULL, NULL, NULL, instate); - }else{ - sprintf(evid,"Fault_vAfx_SvcInput_%s",oam_intfaddr); - report_fault("Fault_vAfx_SvcInput",evid,EVEL_SEVERITY_MAJOR, "routing", "AFXInput", "AFX services input down alarm", details, NULL, NULL, NULL, instate); - } - } - - /* invokes afx service monitor function and collects return value */ - sprintf(cmd,"/bin/systemctl status %s ",afxout); - tmpstate = monitor_afx_service( cmd, details, svc ); - if( tmpstate != outstate ){ - printf("New afxout Service report sent %d\n",tmpstate); - outstate = tmpstate; - if( outstate == 1){ - if (is_critical == 1){ - is_critical = 0; - sprintf(evid,"Fault_vAfx_SvcOutput_SvcInput_%s",oam_intfaddr); - report_fault("Fault_vAfx_Svc_input_Output",evid, - EVEL_SEVERITY_NORMAL, "routing", "AFXInput and AFXOutput", - "AFX services input and output down alarm", - details, NULL, NULL, NULL, outstate); - } - sprintf(evid,"Fault_vAfx_SvcOutput_%s",oam_intfaddr); - report_fault("Fault_vAfx_SvcOutput",evid,EVEL_SEVERITY_NORMAL, "routing", "AFXOutput", "AFX services output up alarm", details, NULL, NULL, NULL, outstate ); - } else { - sprintf(evid,"Fault_vAfx_SvcOutput_%s",oam_intfaddr); - report_fault("Fault_vAfx_SvcOutput",evid,EVEL_SEVERITY_MAJOR, "routing", "AFXOutput", "AFX services output down alarm", details, NULL, NULL, NULL, outstate); - } - } - if((instate == 0) && (outstate == 0) && (is_critical == 0)) - { - is_critical = 1; - - sprintf(evid,"Fault_vAfx_SvcOutput_SvcInput_%s",oam_intfaddr); - report_fault("Fault_vAfx_Svc_input_Output",evid,EVEL_SEVERITY_CRITICAL, - "routing", "AFXInput and AFXOutput", - "AFX services input and output down alarm", details, - NULL, NULL, NULL, instate); - } - - sleep(SERVICE_MONITOR_INTERVAL); -} - - pthread_exit(NULL); -} - - |