Hi, I'm Mitsuo.
I found a problem that causes net-snmp to respond
IF-MIB::ifPhysAddress with wrong value.
More specifically 1st octet of MAC addres(00:xx:xx:xx:xx:xx)
bacomes always 00.
My environment is NetBSD 3 on Virtualbox.
Though I use the net-snmp 5.6.1.1 on it, as far as I take a look
the latest one it seems to have a same problem.
A patch for fixing this is below.
|
|struct sockaddr_dl {
| u_char sdl_len; /* Total length of sockaddr */
| sa_family_t sdl_family; /* AF_LINK */
| u_int16_t sdl_index; /* if != 0, system given index for interface */
| u_char sdl_type; /* interface type */
| u_char sdl_nlen; /* interface name length, no trailing 0 reqd. */
| u_char sdl_alen; /* link level address length */
| u_char sdl_slen; /* link layer selector length */
| char sdl_data[24]; /* minimum work area, can be larger;
| contains both if name and ll address */
|};
|
The sdl_data contains both if name and ll address so filling \0
isn't right.
Regards,
--
Kuroishi Mitsuo
Index: agent/mibgroup/if-mib/data_access/interface_sysctl.c
===================================================================
--- agent/mibgroup/if-mib/data_access/interface_sysctl.c
+++ agent/mibgroup/if-mib/data_access/interface_sysctl.c
@@ -325,7 +325,7 @@
struct sockaddr *a;
struct sockaddr_dl *adl;
int amask;
- char *if_name;
+ char if_name[64];
int flags;
DEBUGMSGTL(("access:interface:container:sysctl",
@@ -363,7 +363,6 @@
for (cp = if_list; cp < if_list + if_list_size; cp += ifp->ifm_msglen) {
ifp = (struct if_msghdr *) cp;
- if_name = NULL;
flags = 0;
adl = NULL;
@@ -386,8 +385,13 @@
}
}
adl = (struct sockaddr_dl *) a;
- if_name = (char *) adl->sdl_data;
- if_name[adl->sdl_nlen] = '\0';
+
+ if (sizeof(if_name) < adl->sdl_nlen + 1) {
+ snmp_log(LOG_ERR, "no space for interface name"
+ "(sdl_nlen: %lu bytes)\n", adl->sdl_nlen);
+ return -3;
+ }
+ snprintf(if_name, adl->sdl_nlen + 1, "%s", adl->sdl_data);
}
if (!(ifp->ifm_addrs & RTA_IFP) || if_name == NULL) {
snmp_log(LOG_ERR, "ifm_index %u: no interface name
in message, "
------------------------------------------------------------------------------
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users