Whamcloud - gitweb
LU-8078 iokit: correct obdfilter-survey output data format
[fs/lustre-release.git] / snmp / lustre-snmp-trap.c
index 6fa62fa..7cb35ea 100644 (file)
@@ -1,23 +1,39 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
+/*
+ * GPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
  *
- *  Copyright (c) 2005 Cluster File Systems, Inc.
- *   Author: PJ Kirner <pjkirner@clusterfs.com>
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
- *   This file is part of Lustre, http://www.lustre.org.
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
  *
- *   Lustre is free software; you can redistribute it and/or
- *   modify it under the terms of version 2 of the GNU General Public
- *   License as published by the Free Software Foundation.
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
  *
- *   Lustre is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
+ * snmp/lustre-snmp-trap.c
  *
- *   You should have received a copy of the GNU General Public License
- *   along with Lustre; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Author: PJ Kirner <pjkirner@clusterfs.com>
  */
 
 /*
  */ 
 
 #include <sys/types.h>
-#if defined (__linux__)
 #include <sys/vfs.h>
-#endif
 #include <dirent.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdarg.h>
+#include <ctype.h>
 #include "lustre-snmp-util.h"
 
 /**************************************************************************
@@ -108,7 +123,7 @@ static unsigned int g_registration_handle;
 static char *g_health_check_test_file = 0;
 
 /*****************************************************************************
- * Function: initilize_trap_handler
+ * Function: initialize_trap_handler
  *
  * Description: Initlized the trap poll haalder.
  *
@@ -118,7 +133,7 @@ static char *g_health_check_test_file = 0;
  *
  ****************************************************************************/
  
-void initilize_trap_handler(void)
+void initialize_trap_handler(void)
 {
     g_poll_interval_seconds = get_poll_interval_seconds();
 
@@ -217,16 +232,23 @@ void health_poll_worker(unsigned int registration_number, void *clientarg)
     FILE    *fptr = NULL;
     char string[MAX_LINE_SIZE];
     int b_seen_portals_catastrophe = 0;
-    const char *filename =  g_health_check_test_file == 0 ? 
-            LUSTRE_PATH FILENAME_SYSHEALTHCHECK : 
-            g_health_check_test_file;
-    
+    char *filename;
+    glob_t path;
+
+    if (cfs_get_param_paths(&path, "health_check") != 0)
+        return;
+
+    filename = g_health_check_test_file == 0 ? path.gl_pathv[0] : g_health_check_test_file;
+
     /*DEBUGMSGTL(("lsnmpd","health_entry_parser(%s)\n",filename));*/
 
     /* Open the file.  Use the test file env variable if
        there is one */    
     fptr = fopen(filename,"r");
         
+    /* Free parameter's path string */
+    cfs_free_param_data(&path);
+
     /* If the path is not found do nothing */
     if( NULL == fptr)
         return;
@@ -340,13 +362,14 @@ void send_portals_catastrophe_trap(char *reason_string)
      */
     var_trap[1].next_variable = NULL;
 
-    /*The "name" is the OID of the portals trap reason strong*/
+    /* The "name" is the OID of the portals trap reason string */
     var_trap[1].name = lustre_portals_trap_string;
     var_trap[1].name_length = sizeof(lustre_portals_trap_string) / sizeof(oid);
 
-    /*And the data is a octet string, that contains the actually reason string*/
+    /* And the data is an octet string, that contains the actually reason
+     * string */
     var_trap[1].type = ASN_OCTET_STR;
-    var_trap[1].val.string = reason_string;
+    var_trap[1].val.string = (unsigned char *)reason_string;
     var_trap[1].val_len = strlen(reason_string);
 
     /*And now send off the trap*/
@@ -395,28 +418,30 @@ void send_obd_unhealthy_trap(char *obd_name,char *reason_string)
      */
     var_trap[1].next_variable = &var_trap[2];;
 
-    /*The "name" is the OID of the portals trap reason strong*/
+    /* The "name" is the OID of the portals trap reason string */
     var_trap[1].name = lustre_unhealthy_trap_device_name_string;
     var_trap[1].name_length = sizeof(lustre_unhealthy_trap_device_name_string) / sizeof(oid);
 
-    /*And the data is a octet string, that contains the actually reason strong*/
+    /* And the data is an octet string, that contains the actual reason
+     * string */
     var_trap[1].type = ASN_OCTET_STR;
-    var_trap[1].val.string = obd_name;
+    var_trap[1].val.string = (unsigned char *)obd_name;
     var_trap[1].val_len = strlen(obd_name);
 
-    /* 
-     * Setup the third variable in the trap data. 
+    /*
+     * Setup the third variable in the trap data.
      * It is the last in the chain so set next to NULL
      */
     var_trap[2].next_variable = NULL;
 
-    /*The "name" is the OID of the portals trap reason strong*/
+    /* The "name" is the OID of the portals trap reason string */
     var_trap[2].name = lustre_unhealthy_trap_reason_string;
     var_trap[2].name_length = sizeof(lustre_unhealthy_trap_reason_string) / sizeof(oid);
 
-    /*And the data is a octet string, that contains the actually reason strong*/
+    /* And the data is an octet string, that contains the actual reason
+     * string */
     var_trap[2].type = ASN_OCTET_STR;
-    var_trap[2].val.string = reason_string;
+    var_trap[2].val.string = (unsigned char *)reason_string;
     var_trap[2].val_len = strlen(reason_string);
 
     /*And now send off the trap*/