X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=snmp%2Flustre-snmp-trap.c;h=7cb35ea065c85f885e6ea79a7e62e6f0f22b1332;hb=9d06de39731ae16d030cda672ae771496d4f0952;hp=7caf5cea1a753d75acd7fde654d0c211a7c7763c;hpb=c6bc5eb7d073d5a7b7d0934d92bfd8eab15fc825;p=fs%2Flustre-release.git diff --git a/snmp/lustre-snmp-trap.c b/snmp/lustre-snmp-trap.c index 7caf5ce..7cb35ea 100644 --- a/snmp/lustre-snmp-trap.c +++ b/snmp/lustre-snmp-trap.c @@ -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 + * 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 */ /* @@ -39,6 +55,7 @@ #include #include #include +#include #include "lustre-snmp-util.h" /************************************************************************** @@ -106,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. * @@ -116,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(); @@ -215,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; @@ -338,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*/ @@ -393,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*/