From 53c3e8165a5b1c5a8fe879a25695e058e9636f50 Mon Sep 17 00:00:00 2001 From: qazmko1029 Date: Sat, 30 Dec 2023 23:15:52 +0800 Subject: [PATCH 1/3] snmp: fix SNMPv2 generic trap ID and special varbinds OID to send according to rfc3584 --- src/apps/snmp/snmp_traps.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/apps/snmp/snmp_traps.c b/src/apps/snmp/snmp_traps.c index 4acbe604..0ca8c3d3 100644 --- a/src/apps/snmp/snmp_traps.c +++ b/src/apps/snmp/snmp_traps.c @@ -256,7 +256,7 @@ snmp_prepare_trap_oid(struct snmp_obj_id *dest_snmp_trap_oid, const struct snmp_ if (sizeof(dest_snmp_trap_oid->id) >= sizeof(snmpTrapOID)) { MEMCPY(&dest_snmp_trap_oid->id, snmpTrapOID , sizeof(snmpTrapOID)); dest_snmp_trap_oid->len = LWIP_ARRAYSIZE(snmpTrapOID); - dest_snmp_trap_oid->id[dest_snmp_trap_oid->len++] = specific_trap + 1; + dest_snmp_trap_oid->id[dest_snmp_trap_oid->len++] = generic_trap + 1; } else { err = ERR_MEM; } @@ -359,8 +359,8 @@ snmp_send_trap_or_notification_or_inform_generic(struct snmp_msg_trap *trap_msg, NULL, /* *next */ NULL, /* *prev */ { /* oid */ - 8, /* oid len */ - {1, 3, 6, 1, 2, 1, 1, 3} /* oid for sysUpTime */ + 9, /* oid len */ + {1, 3, 6, 1, 2, 1, 1, 3, 0} /* oid for sysUpTime.0 */ }, SNMP_ASN1_TYPE_TIMETICKS, /* type */ sizeof(u32_t), /* value_len */ @@ -372,7 +372,7 @@ snmp_send_trap_or_notification_or_inform_generic(struct snmp_msg_trap *trap_msg, NULL, /* *prev */ { /* oid */ 10, /* oid len */ - {1, 3, 6, 1, 6, 3, 1, 1, 4, 1} /* oid for snmpTrapOID */ + {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0} /* oid for snmpTrapOID.0 */ }, SNMP_ASN1_TYPE_OBJECT_ID, /* type */ 0, /* value_len */ From 5c8a07cd871853b3eb0942239d04a997016ea298 Mon Sep 17 00:00:00 2001 From: qazmko1029 Date: Sat, 30 Dec 2023 23:19:59 +0800 Subject: [PATCH 2/3] LwipMibCompiler: compile read-create object as read-write in generated C code --- .../apps/LwipMibCompiler/LwipMibCompiler/Program.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs b/contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs index 5dff8405..600c9c87 100644 --- a/contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs +++ b/contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs @@ -74,7 +74,7 @@ namespace LwipMibCompiler string mibFileName = Path.GetFileNameWithoutExtension(mibFile).ToLowerInvariant(); destFile = Path.Combine(destFile, mibFileName + ".c"); } - + string destFileExt = Path.GetExtension(destFile); if (!String.IsNullOrEmpty(destFileExt)) { @@ -94,10 +94,10 @@ namespace LwipMibCompiler } } - + // read and resolve MIB Console.WriteLine(" Reading MIB file..."); - + MibDocument md = new MibDocument(mibFile); MibTypesResolver.ResolveTypes(md.Modules[0]); MibTree mt = new MibTree(md.Modules[0] as MibModule); @@ -335,7 +335,7 @@ namespace LwipMibCompiler { Console.WriteLine(String.Format("Unsupported BaseType: Module='{0}', Name='{1}'!", mibType.Module, mibType.Name)); } - + return null; } } @@ -353,7 +353,7 @@ namespace LwipMibCompiler } else if (ote.Access == MaxAccess.readCreate) { - result.AccessMode = SnmpAccessMode.ReadOnly; + result.AccessMode = SnmpAccessMode.ReadWrite; } else if (ignoreAccessibleFlag && (ote.Access == MaxAccess.notAccessible)) { @@ -426,7 +426,7 @@ namespace LwipMibCompiler } MibTreeNode rowNode = mibTreeNode.ChildNodes[0]; - + ObjectType rot = rowNode.Entity as ObjectType; if (rot != null) { From e46039adb9250b3b84bc9363c3018b6a28d3c655 Mon Sep 17 00:00:00 2001 From: qazmko1029 Date: Sat, 30 Dec 2023 23:30:06 +0800 Subject: [PATCH 3/3] snmp: forgot to change OID length --- src/apps/snmp/snmp_traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/snmp/snmp_traps.c b/src/apps/snmp/snmp_traps.c index 0ca8c3d3..c9597376 100644 --- a/src/apps/snmp/snmp_traps.c +++ b/src/apps/snmp/snmp_traps.c @@ -371,7 +371,7 @@ snmp_send_trap_or_notification_or_inform_generic(struct snmp_msg_trap *trap_msg, NULL, /* *next */ NULL, /* *prev */ { /* oid */ - 10, /* oid len */ + 11, /* oid len */ {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0} /* oid for snmpTrapOID.0 */ }, SNMP_ASN1_TYPE_OBJECT_ID, /* type */