On Wed, 2006-01-11 at 11:42 +0530, [EMAIL PROTECTED] wrote:
> Can any one pls clarify whether snmptrapd can forward traps to master
> agent.
Not currently, no.
It shouldn't be too difficult to implement.
Please find attached a suitable patch (*completely* untested!)
This should be triggered using an snmptrapd.conf entry such as:
forward default agentx
or
forward OID agentx
Let me know whether it works OK, and I'll look at adding this
(or something similar) to the suite.
Dave
--- snmptrapd_handlers.h.cln 2006-01-11 10:02:22.093810688 +0000
+++ snmptrapd_handlers.h 2006-01-11 10:02:30.613515496 +0000
@@ -29,6 +29,7 @@
Netsnmp_Trap_Handler command_handler;
Netsnmp_Trap_Handler event_handler;
Netsnmp_Trap_Handler forward_handler;
+Netsnmp_Trap_Handler axforward_handler;
Netsnmp_Trap_Handler notification_handler;
void free_trap1_fmt(void);
--- snmptrapd_handlers.c.cln 2006-01-11 09:52:23.439819928 +0000
+++ snmptrapd_handlers.c 2006-01-11 10:04:09.739446064 +0000
@@ -122,7 +122,10 @@
DEBUGMSGTL(("read_config:forward", "registering forward for: "));
if (!strcmp(buf, "default")) {
DEBUGMSG(("read_config:forward", "default"));
- traph = netsnmp_add_default_traphandler( forward_handler );
+ if ( !strcmp( cptr, "agentx" ))
+ traph = netsnmp_add_default_traphandler( axforward_handler );
+ else
+ traph = netsnmp_add_default_traphandler( forward_handler );
} else {
if (!read_objid(buf, obuf, &olen)) {
@@ -134,7 +137,10 @@
return;
}
DEBUGMSGOID(("read_config:forward", obuf, olen));
- traph = netsnmp_add_traphandler( forward_handler, obuf, olen );
+ if ( !strcmp( cptr, "agentx" ))
+ traph = netsnmp_add_traphandler( axforward_handler, obuf, olen );
+ else
+ traph = netsnmp_add_traphandler( forward_handler, obuf, olen );
}
DEBUGMSG(("read_config:forward", "\n"));
@@ -890,6 +896,17 @@
/*
+ * Trap handler for forwarding to the AgentX master agent
+ */
+int axforward_handler( netsnmp_pdu *pdu,
+ netsnmp_transport *transport,
+ netsnmp_trapd_handler *handler)
+{
+ send_v2trap( pdu->variables );
+ return NETSNMPTRAPD_HANDLER_OK;
+}
+
+/*
* Trap handler for forwarding to another destination
*/
int forward_handler( netsnmp_pdu *pdu,