u32 offset, shift, index;
ip6srv_combo_header_t *ip6srv;
gtpu_pdu_session_t *sess = NULL;
- u16 ie_size = 0;
+ int ie_size = 0;
u16 tlv_siz = 0;
u8 ie_buf[GTPU_IE_MAX_SIZ];
u16 payload_len;
payload_len = clib_net_to_host_u16 (hdr->gtpu.length);
- if (payload_len != 0
- && payload_len > hdr_len - sizeof (ip4_gtpu_header_t))
+ if (payload_len != 0)
{
- u8 *ies;
-
- ies = (u8 *) ((u8 *) hdr + hdr_len);
ie_size =
payload_len - (hdr_len - sizeof (ip4_gtpu_header_t));
- clib_memcpy_fast (ie_buf, ies, ie_size);
- hdr_len += ie_size;
+ if (ie_size > 0)
+ {
+ u8 *ies;
+
+ ies = (u8 *) ((u8 *) hdr + hdr_len);
+ clib_memcpy_fast (ie_buf, ies, ie_size);
+ hdr_len += ie_size;
+ }
}
}
tlv =
(ip6_sr_tlv_t *) ((u8 *) ip6srv + (hdr_len - tlv_siz));
tlv->type = SRH_TLV_USER_PLANE_CONTAINER;
- tlv->length = tlv_siz - sizeof (ip6_sr_tlv_t);
+ tlv->length = (u8) (tlv_siz - sizeof (ip6_sr_tlv_t));
clib_memset (tlv->value, 0, tlv->length);
sub_tlv = (user_plane_sub_tlv_t *) tlv->value;
sub_tlv->type = USER_PLANE_SUB_TLV_IE;
- sub_tlv->length = ie_size;
+ sub_tlv->length = (u8) ie_size;
clib_memcpy_fast (sub_tlv->value, ie_buf, ie_size);
- ip6srv->sr.length += tlv_siz / 8;
+ ip6srv->sr.length += (u8) (tlv_siz / 8);
}
ip6srv->ip.payload_length =
u32 hdrlen;
ip6_header_t *encap = NULL;
gtpu_pdu_session_t *sess = NULL;
- u16 ie_size = 0;
+ int ie_size = 0;
u16 tlv_siz = 0;
u8 ie_buf[GTPU_IE_MAX_SIZ];
u16 payload_len;
payload_len = clib_net_to_host_u16 (hdr0->gtpu.length);
- if (payload_len != 0
- && payload_len > hdrlen - sizeof (ip6_gtpu_header_t))
+ if (payload_len != 0)
{
- u8 *ies;
-
- ies = (u8 *) ((u8 *) hdr0 + hdrlen);
ie_size =
payload_len - (hdrlen - sizeof (ip6_gtpu_header_t));
- clib_memcpy_fast (ie_buf, ies, ie_size);
- hdrlen += ie_size;
+ if (ie_size > 0)
+ {
+ u8 *ies;
+
+ ies = (u8 *) ((u8 *) hdr0 + hdrlen);
+ clib_memcpy_fast (ie_buf, ies, ie_size);
+ hdrlen += ie_size;
+ }
}
}
tlv =
(ip6_sr_tlv_t *) ((u8 *) ip6srv + (hdr_len - tlv_siz));
tlv->type = SRH_TLV_USER_PLANE_CONTAINER;
- tlv->length = tlv_siz - sizeof (ip6_sr_tlv_t);
+ tlv->length = (u8) (tlv_siz - sizeof (ip6_sr_tlv_t));
clib_memset (tlv->value, 0, tlv->length);
sub_tlv = (user_plane_sub_tlv_t *) tlv->value;
sub_tlv->type = USER_PLANE_SUB_TLV_IE;
- sub_tlv->length = ie_size;
+ sub_tlv->length = (u8) ie_size;
clib_memcpy_fast (sub_tlv->value, ie_buf, ie_size);
- ip6srv->sr.length += tlv_siz / 8;
+ ip6srv->sr.length += (u8) (tlv_siz / 8);
}
ip6srv->ip.payload_length =
u32 hdrlen;
ip6_header_t *encap = NULL;
gtpu_pdu_session_t *sess;
- u16 ie_size = 0;
+ int ie_size = 0;
u16 tlv_siz = 0;
u8 ie_buf[GTPU_IE_MAX_SIZ];
u16 payload_len;
payload_len = clib_net_to_host_u16 (hdr0->gtpu.length);
- if (payload_len != 0
- && payload_len > hdrlen - sizeof (ip6_gtpu_header_t))
+ if (payload_len != 0)
{
- u8 *ies;
-
- ies = (u8 *) ((u8 *) hdr0 + hdrlen);
ie_size =
payload_len - (hdrlen - sizeof (ip6_gtpu_header_t));
- clib_memcpy_fast (ie_buf, ies, ie_size);
- hdrlen += ie_size;
+ if (ie_size > 0)
+ {
+ u8 *ies;
+
+ ies = (u8 *) ((u8 *) hdr0 + hdrlen);
+ clib_memcpy_fast (ie_buf, ies, ie_size);
+ hdrlen += ie_size;
+ }
}
}
tlv =
(ip6_sr_tlv_t *) ((u8 *) ip6srv + (hdr_len - tlv_siz));
tlv->type = SRH_TLV_USER_PLANE_CONTAINER;
- tlv->length = tlv_siz - sizeof (ip6_sr_tlv_t);
+ tlv->length = (u8) (tlv_siz - sizeof (ip6_sr_tlv_t));
clib_memset (tlv->value, 0, tlv->length);
sub_tlv = (user_plane_sub_tlv_t *) tlv->value;
- sub_tlv->length = ie_size;
+ sub_tlv->length = (u8) (ie_size);
clib_memcpy_fast (sub_tlv->value, ie_buf, ie_size);
- ip6srv->sr.length += tlv_siz / 8;
+ ip6srv->sr.length += (u8) (tlv_siz / 8);
}
ip6srv->ip.payload_length =