Hi,I have a question.
In my snmpd agent, the trap2sink ip address will be changed sometimes,but in my
embedded uClinux,the filesystem is read-only(romfs), so I can't change the
trap2sink directive in file "snmpd.conf" which is in filesystem.
Now,I delete all lines of trap2sink in snmpd.conf, and use the ucd-snmp API
functions to implement it,but by using API functions, I find the UDP trap
packages can't be sent out.My source code as follows,which is produced be mib2c
and is style of ucd-snmp. Is there any mistake for using the API functions? In
my application,there will be ten destinatio ip addresses to receive traps,then
how to implement this?
.....#define SNMP_TRAP_PORT 162
#define SNMP_TRAP_COMMUNITY "public"
....oid scomcenter_variables_oid[] = { 1,3,6,1,4,1,19176 };....void
init_scomcenter(void) {
unsigned char trap_dest1[20] = "200.162.162.55";
REGISTER_MIB("scomcenter", scomcenter_variables, variable7,
scomcenter_variables_oid); if(create_trap_session ((char
*)trap_dest1, SNMP_TRAP_PORT,SNMP_TRAP_COMMUNITY,
SNMP_VERSION_2c,SNMP_MSG_TRAP2) == 0)
printf("create_trap_session 1 err\n");
snmp_alarm_register(5, /* seconds */
SA_REPEAT, /* repeat (every 30 seconds). */
check_encoder_statu, /* our callback */
NULL /* no callback data needed */
);
}void check_encoder_statu()
{
send_demo_trap();
return;
}void send_demo_trap()
{
char example_str[] = "no video source";
long my_value = 0;
oid objid_snmptrap[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 };
size_t objid_snmptrap_len = OID_LENGTH(objid_snmptrap);
oid notifying_oid[] = { 1, 3, 6, 1, 4, 1, 19176, 1, 1, 20, 0, 8 };
oid tsoveripstatus_oid[] = { 1, 3, 6, 1, 4, 1, 19176, 1, 1, 20, 1, 0, 0 };
struct variable_list var_trap,var_obj;
var_trap.next_variable = &var_obj;
var_trap.name = objid_snmptrap; // snmpTrapOID.0
var_trap.name_length = sizeof(objid_snmptrap)/sizeof(oid);
var_trap.type = ASN_OBJECT_ID;
var_trap.val.objid = notifying_oid; //
var_trap.val_len = sizeof(notifying_oid);
var_obj.next_variable = NULL;
var_obj.name = tsoveripstatus_oid;
var_obj.name_length = sizeof(tsoveripstatus_oid)/sizeof(oid);
var_obj.type = ASN_INTEGER;
var_obj.val.integer = &my_value;
var_obj.val_len = sizeof(my_value);
send_v2trap(&var_trap);}
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev