if ip-id is not increased by1 for each packet in IPV4, uor-2-ts ip-id is decoded wrong
Bug #1008329 reported by
qingbaibai
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
rohc | Status tracked in Rohc-main | |||||
1.3.x |
Invalid
|
Undecided
|
Didier Barvaux | |||
1.4.x |
Invalid
|
Undecided
|
Didier Barvaux | |||
Rohc-main |
Invalid
|
Undecided
|
Didier Barvaux |
Bug Description
hello,
if ip-id is not increased by1 for each packet in IPV4, uor-2-ts ip-id is decoded wrong. For example, the ip-id of first packet is 65052 and the ip-id of next packet is 65054. The first packet is compressed as IR packet and the second packet is compressed as UOR-2-TS with extension3. When decoding UOR-2-TS with extension3, it uses "d_ip_id_decode()" function in ip_id.c. However, the ip-id is decoded as 65053.
Thank you.
To post a comment you must log in.
In RFC3095 page 75:
If value(RND) = 0, hdr(IP-ID) is compressed using Offset IP-ID
encoding (see section 4.5.5) using p = 0 and default-slope(IP-ID
offset) = 0.
If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID is
then passed as additional octets at the end of the compressed
header, after any extensions.
and page 85:
| IP-ID | 2 octets, if I = 1
Hence, in my opinion, if I=1, it corresponds to RND=1 and if I=0, it corresponds to RND=0.
Both in rohc-1.3.1 and rohc-1.3.2, in function" code_EXT3_ packet( )" in c_generic.c : version( ip) == IPV4) nr_ip_id_ bits > 0 && g_context- >ip_flags. info.v4. rnd == 0) || g_context- >ip_flags. info.v4. rnd_count < MAX_FO_COUNT &&
g_context- >ip_flags. info.v4. rnd == 0))
if(ip_get_
{
if((
(
{
I = 1;
}
f_byte |= (I & 0x01) << 2;
}
It sets I to 1 when rnd is 0.