From 5e4914c31ead7b99eeed73067451367336b21422 Mon Sep 17 00:00:00 2001 From: vincent Date: Thu, 29 Sep 2005 16:34:30 +0000 Subject: 2005-09-29 Alain Ritoux * lib/smux.[ch]: allow to retreive global OID (identified by <0 namelen). * ospf_ism.c: generate SNMP traps on Interface state change * ospf_nsm.c: generate SNMP traps on Neighbour state change * ospf_snmp.[ch]: support for SNMP traps for interface and neighbours. --- lib/ChangeLog | 5 +++++ lib/smux.c | 33 +++++++++++++++++++++++++++------ lib/smux.h | 4 ++-- 3 files changed, 34 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/ChangeLog b/lib/ChangeLog index 2a8256f8..fd3feffa 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2005-09-29 Alain Ritoux + + * smux.[ch]: allow to retreive global OID (identified by <0 + namelen). + 2005-09-29 Paul Jakma * zebra.h: Solaris capabilities requires priv.h to be included. diff --git a/lib/smux.c b/lib/smux.c index 28f402d8..c9b7a880 100644 --- a/lib/smux.c +++ b/lib/smux.c @@ -1065,13 +1065,34 @@ smux_trap (oid *name, size_t namelen, u_char val_type; /* Make OID. */ - oid_copy (oid, name, namelen); - oid_copy (oid + namelen, trapobj[i].name, trapobj[i].namelen); - oid_copy (oid + namelen + trapobj[i].namelen, iname, inamelen); - oid_len = namelen + trapobj[i].namelen + inamelen; + if (trapobj[i].namelen > 0) + { + oid_copy (oid, name, namelen); + oid_copy (oid + namelen, trapobj[i].name, trapobj[i].namelen); + oid_copy (oid + namelen + trapobj[i].namelen, iname, inamelen); + oid_len = namelen + trapobj[i].namelen + inamelen; + } + else + { + oid_copy (oid, name, namelen); + oid_copy (oid + namelen, trapobj[i].name, trapobj[i].namelen * (-1)); + oid_len = namelen + trapobj[i].namelen * (-1) ; + } - if (debug_smux) - smux_oid_dump ("Trap", oid, oid_len); + if (debug_smux) + { + smux_oid_dump ("Trap", name, namelen); + if (trapobj[i].namelen < 0) + smux_oid_dump ("Trap", + trapobj[i].name, (- 1) * (trapobj[i].namelen)); + else + { + smux_oid_dump ("Trap", trapobj[i].name, (trapobj[i].namelen)); + smux_oid_dump ("Trap", iname, inamelen); + } + smux_oid_dump ("Trap", oid, oid_len); + zlog_info ("BUFSIZ: %d // oid_len: %d", BUFSIZ, oid_len); + } ret = smux_get (oid, &oid_len, 1, &val_type, &val, &val_len); diff --git a/lib/smux.h b/lib/smux.h index a4f1718d..79d23e70 100644 --- a/lib/smux.h +++ b/lib/smux.h @@ -94,7 +94,7 @@ struct variable FindVarMethod *findVar; /* Suffix of the MIB. */ - u_char namelen; + int namelen; oid name[MAX_OID_LEN]; }; @@ -121,7 +121,7 @@ struct subtree struct trap_object { FindVarMethod *findVar; - u_char namelen; + int namelen; oid name[MAX_OID_LEN]; }; -- cgit v1.2.1