Not sure about this one, a quick glance at RFC 3411 suggests this is just a binary string, so uint8_t is more appropriate.
Any snmp nerds around? clang complained about this: /usr/src/usr.sbin/snmpd/snmpd.c:349:47: warning: implicit conversion from 'int' to 'char' changes value from 128 to -128 [-Wconstant-conversion] env->sc_engineid[(env->sc_engineid_len)++] = SNMP_ENGINEID_FMT_EID; ~ ^~~~~~~~~~~~~~~~~~~~~ /usr/src/usr.sbin/snmpd/snmpd.h:80:31: note: expanded from macro 'SNMP_ENGINEID_FMT_EID' ^~~ diff --git snmpd/snmpd.h snmpd/snmpd.h index 91186f23e42..ce1902bdc03 100644 --- snmpd/snmpd.h +++ snmpd/snmpd.h @@ -438,7 +438,7 @@ struct snmp_message { long long sm_secmodel; u_int32_t sm_engine_boots; u_int32_t sm_engine_time; - char sm_ctxengineid[SNMPD_MAXENGINEIDLEN]; + uint8_t sm_ctxengineid[SNMPD_MAXENGINEIDLEN]; size_t sm_ctxengineid_len; char sm_ctxname[SNMPD_MAXCONTEXNAMELEN+1]; @@ -574,7 +574,7 @@ struct snmpd { char sc_rwcommunity[SNMPD_MAXCOMMUNITYLEN]; char sc_trcommunity[SNMPD_MAXCOMMUNITYLEN]; - char sc_engineid[SNMPD_MAXENGINEIDLEN]; + uint8_t sc_engineid[SNMPD_MAXENGINEIDLEN]; size_t sc_engineid_len; struct snmp_stats sc_stats; -- I'm not entirely sure you are real.