mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-02-22 12:39:55 +00:00
Fix compile of SNMPv3 code with MSVC
This commit is contained in:
parent
64f79e7ffc
commit
12609c951c
@ -650,11 +650,12 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
#if LWIP_SNMP_V3
|
#if LWIP_SNMP_V3
|
||||||
if (request->version == SNMP_VERSION_3) {
|
if (request->version == SNMP_VERSION_3) {
|
||||||
u16_t u16_value;
|
u16_t u16_value;
|
||||||
|
u16_t inbound_msgAuthenticationParameters_offset;
|
||||||
|
|
||||||
/* SNMPv3 doesn't use communities */
|
/* SNMPv3 doesn't use communities */
|
||||||
/* @todo: Differentiate read/write access */
|
/* @todo: Differentiate read/write access */
|
||||||
strcpy((char*)request->community, snmp_community);
|
strcpy((char*)request->community, snmp_community);
|
||||||
request->community_strlen = strlen(snmp_community);
|
request->community_strlen = (u16_t)strlen(snmp_community);
|
||||||
|
|
||||||
/* RFC3414 globalData */
|
/* RFC3414 globalData */
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
||||||
@ -687,7 +688,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
IF_PARSE_ASSERT(parent_tlv_value_len > 0);
|
IF_PARSE_ASSERT(parent_tlv_value_len > 0);
|
||||||
|
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_s32t(&pbuf_stream, tlv.value_len, &s32_value));
|
IF_PARSE_EXEC(snmp_asn1_dec_s32t(&pbuf_stream, tlv.value_len, &s32_value));
|
||||||
request->msg_flags = s32_value;
|
request->msg_flags = (u8_t)s32_value;
|
||||||
|
|
||||||
/* decode msgSecurityModel */
|
/* decode msgSecurityModel */
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
||||||
@ -724,7 +725,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
|
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->msg_authoritative_engine_id,
|
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->msg_authoritative_engine_id,
|
||||||
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
||||||
request->msg_authoritative_engine_id_len = u16_value;
|
request->msg_authoritative_engine_id_len = (u8_t)u16_value;
|
||||||
|
|
||||||
/* msgAuthoritativeEngineBoots */
|
/* msgAuthoritativeEngineBoots */
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
||||||
@ -749,7 +750,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
|
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->msg_user_name,
|
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->msg_user_name,
|
||||||
&u16_value, SNMP_V3_MAX_USER_LENGTH));
|
&u16_value, SNMP_V3_MAX_USER_LENGTH));
|
||||||
request->msg_user_name_len = u16_value;
|
request->msg_user_name_len = (u8_t)u16_value;
|
||||||
/* @todo: Implement unknown user error response */
|
/* @todo: Implement unknown user error response */
|
||||||
IF_PARSE_EXEC(snmpv3_get_user((char*)request->msg_user_name, NULL, NULL, NULL, NULL));
|
IF_PARSE_EXEC(snmpv3_get_user((char*)request->msg_user_name, NULL, NULL, NULL, NULL));
|
||||||
|
|
||||||
@ -760,7 +761,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
parent_tlv_value_len -= SNMP_ASN1_TLV_LENGTH(tlv);
|
parent_tlv_value_len -= SNMP_ASN1_TLV_LENGTH(tlv);
|
||||||
IF_PARSE_ASSERT(parent_tlv_value_len > 0);
|
IF_PARSE_ASSERT(parent_tlv_value_len > 0);
|
||||||
/* Remember position */
|
/* Remember position */
|
||||||
u16_t inbound_msgAuthenticationParameters_offset = pbuf_stream.offset;
|
inbound_msgAuthenticationParameters_offset = pbuf_stream.offset;
|
||||||
LWIP_UNUSED_ARG(inbound_msgAuthenticationParameters_offset);
|
LWIP_UNUSED_ARG(inbound_msgAuthenticationParameters_offset);
|
||||||
/* Read auth parameters */
|
/* Read auth parameters */
|
||||||
IF_PARSE_ASSERT(tlv.value_len <= SNMP_V3_MAX_AUTH_PARAM_LENGTH);
|
IF_PARSE_ASSERT(tlv.value_len <= SNMP_V3_MAX_AUTH_PARAM_LENGTH);
|
||||||
@ -769,18 +770,19 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
|
|
||||||
#if LWIP_SNMP_V3_CRYPTO
|
#if LWIP_SNMP_V3_CRYPTO
|
||||||
if (request->msg_flags & SNMP_V3_AUTH_FLAG) {
|
if (request->msg_flags & SNMP_V3_AUTH_FLAG) {
|
||||||
/* Rewind stream */
|
|
||||||
IF_PARSE_EXEC(snmp_pbuf_stream_init(&pbuf_stream, request->inbound_pbuf, 0, request->inbound_pbuf->tot_len));
|
|
||||||
IF_PARSE_EXEC(snmp_pbuf_stream_seek_abs(&pbuf_stream, inbound_msgAuthenticationParameters_offset));
|
|
||||||
/* Set auth parameters to zero for verification */
|
|
||||||
const u8_t zero_arr[SNMP_V3_MAX_AUTH_PARAM_LENGTH] = { 0 };
|
const u8_t zero_arr[SNMP_V3_MAX_AUTH_PARAM_LENGTH] = { 0 };
|
||||||
IF_PARSE_EXEC(snmp_asn1_enc_raw(&pbuf_stream, zero_arr, tlv.value_len));
|
|
||||||
|
|
||||||
/* Verify authentication */
|
|
||||||
u8_t key[20];
|
u8_t key[20];
|
||||||
u8_t algo;
|
u8_t algo;
|
||||||
u8_t hmac[LWIP_MAX(SNMP_V3_SHA_LEN, SNMP_V3_MD5_LEN)];
|
u8_t hmac[LWIP_MAX(SNMP_V3_SHA_LEN, SNMP_V3_MD5_LEN)];
|
||||||
struct snmp_pbuf_stream auth_stream;
|
struct snmp_pbuf_stream auth_stream;
|
||||||
|
|
||||||
|
/* Rewind stream */
|
||||||
|
IF_PARSE_EXEC(snmp_pbuf_stream_init(&pbuf_stream, request->inbound_pbuf, 0, request->inbound_pbuf->tot_len));
|
||||||
|
IF_PARSE_EXEC(snmp_pbuf_stream_seek_abs(&pbuf_stream, inbound_msgAuthenticationParameters_offset));
|
||||||
|
/* Set auth parameters to zero for verification */
|
||||||
|
IF_PARSE_EXEC(snmp_asn1_enc_raw(&pbuf_stream, zero_arr, tlv.value_len));
|
||||||
|
|
||||||
|
/* Verify authentication */
|
||||||
IF_PARSE_EXEC(snmp_pbuf_stream_init(&auth_stream, request->inbound_pbuf, 0, request->inbound_pbuf->tot_len));
|
IF_PARSE_EXEC(snmp_pbuf_stream_init(&auth_stream, request->inbound_pbuf, 0, request->inbound_pbuf->tot_len));
|
||||||
|
|
||||||
IF_PARSE_EXEC(snmpv3_get_user((char*)request->msg_user_name, &algo, key, NULL, NULL));
|
IF_PARSE_EXEC(snmpv3_get_user((char*)request->msg_user_name, &algo, key, NULL, NULL));
|
||||||
@ -839,7 +841,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
|
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->context_engine_id,
|
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->context_engine_id,
|
||||||
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
||||||
request->context_engine_id_len = u16_value;
|
request->context_engine_id_len = (u8_t)u16_value;
|
||||||
|
|
||||||
/* contextName */
|
/* contextName */
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
IF_PARSE_EXEC(snmp_asn1_dec_tlv(&pbuf_stream, &tlv));
|
||||||
@ -849,7 +851,7 @@ snmp_parse_inbound_frame(struct snmp_request *request)
|
|||||||
|
|
||||||
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->context_name,
|
IF_PARSE_EXEC(snmp_asn1_dec_raw(&pbuf_stream, tlv.value_len, request->context_name,
|
||||||
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
&u16_value, SNMP_V3_MAX_ENGINE_ID_LENGTH));
|
||||||
request->context_name_len = u16_value;
|
request->context_name_len = (u8_t)u16_value;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
@ -283,7 +283,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef LWIP_SNMP_V3_CRYPTO
|
#ifndef LWIP_SNMP_V3_CRYPTO
|
||||||
#define LWIP_SNMP_V3_CRYPTO LWIP_SNMP_V3
|
#define LWIP_SNMP_V3_CRYPTO LWIP_SNMP_V3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef LWIP_SNMP_V3_MBEDTLS
|
||||||
|
#define LWIP_SNMP_V3_MBEDTLS LWIP_SNMP_V3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* LWIP_HDR_SNMP_OPTS_H */
|
#endif /* LWIP_HDR_SNMP_OPTS_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user