already signed off and reviewed.

On 01/31/2011 08:16 PM, Angus Salkeld wrote:
> From: Lon Hohberger <[email protected]>
> 
> Signed-off-by: Lon Hohberger <[email protected]>
> Reviewed-by: Angus Salkeld <[email protected]>
> ---
>  tools/corosync-notifyd.c |   77 
> ++++++++++++++++++++++++++++++++++++++--------
>  1 files changed, 64 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/corosync-notifyd.c b/tools/corosync-notifyd.c
> index a78f6a3..9998470 100644
> --- a/tools/corosync-notifyd.c
> +++ b/tools/corosync-notifyd.c
> @@ -123,16 +123,22 @@ enum snmp_node_status {
>  };
>  
>  #define SNMP_OID_COROSYNC "1.3.6.1.4.1.35488"
> -#define SNMP_OID_NOTICE_ROOT SNMP_OID_COROSYNC ".1"
> -#define SNMP_OID_NOTICE_NODE_TABLE  SNMP_OID_NOTICE_ROOT ".1"
> -#define SNMP_OID_NOTICE_NODE_ENTRY  SNMP_OID_NOTICE_NODE_TABLE ".1"
> -#define SNMP_OID_NOTICE_NODE_INDEX  SNMP_OID_NOTICE_NODE_ENTRY ".1"
> -#define SNMP_OID_NOTICE_NODE_ID     SNMP_OID_NOTICE_NODE_ENTRY ".2"
> -#define SNMP_OID_NOTICE_NODE        SNMP_OID_NOTICE_NODE_ENTRY ".3"
> -#define SNMP_OID_NOTICE_NODE_STATE  SNMP_OID_NOTICE_NODE_ENTRY ".4"
> +#define SNMP_OID_OBJECT_ROOT         SNMP_OID_COROSYNC ".1"
> +#define SNMP_OID_OBJECT_NODE_NAME    SNMP_OID_OBJECT_ROOT ".1"
> +#define SNMP_OID_OBJECT_NODE_ID              SNMP_OID_OBJECT_ROOT ".2"
> +#define SNMP_OID_OBJECT_NODE_STATUS  SNMP_OID_OBJECT_ROOT ".3"
> +#define SNMP_OID_OBJECT_NODE_ADDR    SNMP_OID_OBJECT_ROOT ".4"
>  
> -#define SNMP_OID_TRAPS_ROOT  SNMP_OID_COROSYNC ".100"
> -#define SNMP_OID_TRAPS_NODE  SNMP_OID_TRAPS_ROOT ".1"
> +#define SNMP_OID_OBJECT_RINGSEQ              SNMP_OID_OBJECT_ROOT ".20"
> +#define SNMP_OID_OBJECT_QUORUM               SNMP_OID_OBJECT_ROOT ".21"
> +
> +#define SNMP_OID_OBJECT_APP_NAME     SNMP_OID_OBJECT_ROOT ".40"
> +#define SNMP_OID_OBJECT_APP_STATUS   SNMP_OID_OBJECT_ROOT ".41"
> +
> +#define SNMP_OID_TRAPS_ROOT          SNMP_OID_COROSYNC ".0"
> +#define SNMP_OID_TRAPS_NODE          SNMP_OID_TRAPS_ROOT ".1"
> +#define SNMP_OID_TRAPS_QUORUM                SNMP_OID_TRAPS_ROOT ".2"
> +#define SNMP_OID_TRAPS_APP           SNMP_OID_TRAPS_ROOT ".3"
>  
>  static const char *local_host = "localhost";
>  #endif /* ENABLE_SNMP */
> @@ -712,9 +718,52 @@ _cs_snmp_node_membership_event(char *nodename, uint32_t 
> nodeid, char *state, cha
>       snmp_add_var (trap_pdu, snmptrap_oid, sizeof (snmptrap_oid) / sizeof 
> (oid), 'o', SNMP_OID_TRAPS_NODE);
>  
>       /* Add extries to the trap */
> -     add_field (trap_pdu, ASN_INTEGER, SNMP_OID_NOTICE_NODE_ID, 
> (void*)&nodeid, sizeof (nodeid));
> -     add_field (trap_pdu, ASN_OCTET_STR, SNMP_OID_NOTICE_NODE, (void*)ip, 
> strlen (ip));
> -     add_field (trap_pdu, ASN_INTEGER, SNMP_OID_NOTICE_NODE_STATE, 
> (void*)&node_status, sizeof (node_status));
> +     add_field (trap_pdu, ASN_OCTET_STR, SNMP_OID_OBJECT_NODE_NAME, 
> (void*)nodename, strlen (nodename));
> +     add_field (trap_pdu, ASN_INTEGER, SNMP_OID_OBJECT_NODE_ID, 
> (void*)&nodeid, sizeof (nodeid));
> +     add_field (trap_pdu, ASN_OCTET_STR, SNMP_OID_OBJECT_NODE_ADDR, 
> (void*)ip, strlen (ip));
> +     add_field (trap_pdu, ASN_INTEGER, SNMP_OID_OBJECT_NODE_STATUS, 
> (void*)&node_status, sizeof (node_status));
> +
> +     /* Send and cleanup */
> +     ret = snmp_send (session, trap_pdu);
> +     if (ret == 0) {
> +             /* error */
> +             syslog (LOG_ERR, "Could not send SNMP trap");
> +             snmp_free_pdu (trap_pdu);
> +     }
> +}
> +
> +static void
> +_cs_snmp_node_quorum_event(char *nodename, uint32_t nodeid,
> +                        const char *state)
> +{
> +     int ret;
> +     char csysuptime[20];
> +     static oid snmptrap_oid[]  = { 1,3,6,1,6,3,1,1,4,1,0 };
> +     static oid sysuptime_oid[] = { 1,3,6,1,2,1,1,3,0 };
> +     time_t now = time (NULL);
> +
> +     netsnmp_pdu *trap_pdu;
> +     netsnmp_session *session = snmp_init (snmp_manager);
> +     if (session == NULL) {
> +             syslog (LOG_NOTICE, "Failed to init SNMP session.\n");
> +             return ;
> +     }
> +
> +     trap_pdu = snmp_pdu_create (SNMP_MSG_TRAP2);
> +     if (!trap_pdu) {
> +             syslog (LOG_NOTICE, "Failed to create SNMP notification.\n");
> +             return ;
> +     }
> +
> +     /* send uptime */
> +     sprintf (csysuptime, "%ld", now);
> +     snmp_add_var (trap_pdu, sysuptime_oid, sizeof (sysuptime_oid) / sizeof 
> (oid), 't', csysuptime);
> +     snmp_add_var (trap_pdu, snmptrap_oid, sizeof (snmptrap_oid) / sizeof 
> (oid), 'o', SNMP_OID_TRAPS_NODE);
> +
> +     /* Add extries to the trap */
> +     add_field (trap_pdu, ASN_OCTET_STR, SNMP_OID_OBJECT_NODE_NAME, 
> (void*)nodename, strlen (nodename));
> +     add_field (trap_pdu, ASN_INTEGER, SNMP_OID_OBJECT_NODE_ID, 
> (void*)&nodeid, sizeof (nodeid));
> +     add_field (trap_pdu, ASN_OCTET_STR, SNMP_OID_OBJECT_QUORUM, 
> (void*)state, strlen (state));
>  
>       /* Send and cleanup */
>       ret = snmp_send (session, trap_pdu);
> @@ -725,6 +774,7 @@ _cs_snmp_node_membership_event(char *nodename, uint32_t 
> nodeid, char *state, cha
>       }
>  }
>  
> +
>  static void
>  _cs_snmp_init(void)
>  {
> @@ -734,7 +784,8 @@ _cs_snmp_init(void)
>  
>       notifiers[num_notifiers].node_membership_fn =
>               _cs_snmp_node_membership_event;
> -     notifiers[num_notifiers].node_quorum_fn = NULL;
> +     notifiers[num_notifiers].node_quorum_fn = 
> +             _cs_snmp_node_quorum_event;
>       notifiers[num_notifiers].application_connection_fn = NULL;
>       num_notifiers++;
>  }

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to