修正KNI-ACCEPTOR中kni_info定义错误导致的KNI消息解析错误的问题。

This commit is contained in:
Lu Qiuwen
2018-11-23 20:21:24 +08:00
parent 86884e807a
commit f2a425c4a5

View File

@@ -70,7 +70,7 @@ struct kni_tlv_header
{
uint16_t magic;
uint16_t counts;
};
} __attribute__((__packed__));
struct kni_tlv_info
{
@@ -80,11 +80,11 @@ struct kni_tlv_info
union
{
uint8_t value_as_raw[0];
uint16_t value_as_uint16;
uint32_t value_as_uint32;
uint16_t value_as_uint64;
uint16_t value_as_uint16[0];
uint32_t value_as_uint32[0];
uint64_t value_as_uint64[0];
};
};
} __attribute__((__packed__));
struct kni_acceptor
{
@@ -166,7 +166,7 @@ static int __kni_parse_tlv_data(struct kni_acceptor * ctx,
/* VALUE is uint32_t, length is 4 */
case KNI_TLV_TYPE_PROTOCOL:
{
uint32_t __value = tlv_info->value_as_uint32;
uint32_t __value = tlv_info->value_as_uint32[0];
if (__value == KNI_TLV_VALUE_HTTP)
{
out_para->session_type = STREAM_PROTO_PLAIN;
@@ -182,7 +182,7 @@ static int __kni_parse_tlv_data(struct kni_acceptor * ctx,
/* VALUE is uint32_t, length is 4 */
case KNI_TLV_TYPE_KEYRING_ID:
{
uint32_t __value = tlv_info->value_as_uint32;
uint32_t __value = tlv_info->value_as_uint32[0];
out_para->keyring_id = __value;
assert(tlv_info->len == sizeof(uint32_t));
break;