diff --git a/platform/src/kni_acceptor.cpp b/platform/src/kni_acceptor.cpp index 0c63407..39dc425 100644 --- a/platform/src/kni_acceptor.cpp +++ b/platform/src/kni_acceptor.cpp @@ -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;