[Pacemaker] [PATCH] Enable specification of community for SNMP traps

Jonathan Süssemilch Poulain jonathan.sussemilch.poulain at liu.se
Wed Apr 7 07:37:04 EDT 2010


# HG changeset patch
# User Jonathan Süssemilch Poulain <jonathan.sussemilch.poulain at liu.se>
# Date 1270636707 -7200
# Branch stable-1.0
# Node ID 85f52c5f6b667758a8c884048f01ebdd4ad08861
# Parent  620bc9a36a0e410ebe4411ae56d5c6f25b5df524
Enable specification of community for SNMP traps

diff -r 620bc9a36a0e -r 85f52c5f6b66 tools/crm_mon.c
--- a/tools/crm_mon.c	Thu Apr 01 14:51:34 2010 +0200
+++ b/tools/crm_mon.c	Wed Apr 07 12:38:27 2010 +0200
@@ -56,6 +56,7 @@
 char *as_html_file = NULL;
 char *pid_file = NULL;
 char *snmp_target = NULL;
+char *snmp_community = NULL;
 
 gboolean as_console = TRUE;;
 gboolean simple_status = FALSE;
@@ -244,6 +245,7 @@
     {"web-cgi",        0, 0, 'w', "\tWeb mode with output suitable for cgi"},
     {"simple-status",  0, 0, 's', "Display the cluster status once as a simple one line output (suitable for nagios)"},
     {"snmp-traps",     1, 0, 'S', "Send SNMP traps to this station", !ENABLE_SNMP},
+    {"snmp-community",     1, 0, 'C', "Specify community for SNMP traps(default is NULL)", !ENABLE_SNMP},
     {"mail-to",        1, 0, 'T', "Send Mail alerts to this user.  See also --mail-from, --mail-host, --mail-prefix", !ENABLE_ESMTP},
     
     {"-spacer-",	1, 0, '-', "\nDisplay Options:"},
@@ -297,7 +299,7 @@
     pid_file = crm_strdup("/tmp/ClusterMon.pid");
     crm_log_init(basename(argv[0]), LOG_CRIT, FALSE, FALSE, 0, NULL);
 
-    crm_set_options("V?$i:nrh:dp:s1wx:oftNS:T:F:H:P:E:e:", "mode [options]", long_options,
+    crm_set_options("V?$i:nrh:dp:s1wx:oftNS:C:T:F:H:P:E:e:", "mode [options]", long_options,
 		    "Provides a summary of cluster's current state."
 		    "\n\nOutputs varying levels of detail in a number of different formats.\n");
 
@@ -389,6 +391,9 @@
 	    case 'N':
 		as_console = FALSE;
 		break;
+	    case 'C':
+		snmp_community = optarg;
+		break;
 	    case '$':
 	    case '?':
 		crm_help(flag, LSB_EXIT_OK);
@@ -1191,7 +1196,7 @@
     return 1;
 }
 
-static netsnmp_session *crm_snmp_init(const char *target) 
+static netsnmp_session *crm_snmp_init(const char *target, char *community) 
 {
     static netsnmp_session *session = NULL;
 #ifdef NETSNMPV53
@@ -1218,6 +1223,8 @@
     session->version = SNMP_VERSION_2c;
     session->callback = snmp_input;
     session->callback_magic = NULL;
+    session->community_len = strnlen(community, INT_MAX);
+    session->community = (unsigned char*)community;
 
     session = snmp_add(session,
 #ifdef NETSNMPV53
@@ -1245,7 +1252,7 @@
     static oid sysuptime_oid[] = { 1,3,6,1,2,1,1,3,0 };
 
     netsnmp_pdu *trap_pdu;
-    netsnmp_session *session = crm_snmp_init(snmp_target);
+    netsnmp_session *session = crm_snmp_init(snmp_target, snmp_community);
 
     trap_pdu = snmp_pdu_create(SNMP_MSG_TRAP2);
     if ( !trap_pdu ) {
@@ -1779,7 +1786,7 @@
 void clean_up(int rc)
 {
 #if ENABLE_SNMP
-    netsnmp_session *session = crm_snmp_init(NULL);
+  netsnmp_session *session = crm_snmp_init(NULL, NULL);
     if(session) {
 	snmp_close(session);
 	snmp_shutdown("snmpapp");


More information about the Pacemaker mailing list