<p dir="ltr">Ivan,</p>
<p dir="ltr">Could you please check whether this issue exists in the Wireshark dissector as well? If yes, then we should submit a patch upstream.<br></p>
<p dir="ltr">Please excuse typos. Written with a touchscreen keyboard.</p>
<p dir="ltr">--<br>
Regards,<br>
Alexander Chemeris<br>
CEO/Founder Fairwaves LLC<br>
<a href="http://fairwaves.ru">http://fairwaves.ru</a></p>
<div class="gmail_quote">On Mar 1, 2013 1:16 AM, "Ivan Kluchnikov" <<a href="mailto:Ivan.Kluchnikov@fairwaves.ru">Ivan.Kluchnikov@fairwaves.ru</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
hi, andreas and steve!<br>
<br>
I fixed this problem, now decoding should work, you can check the last<br>
commit of master branch.<br>
There were problems with decoding and encoding of CSN_RECURSIVE_TARRAY,<br>
CSN_RECURSIVE_TARRAY_1, CSN_RECURSIVE_TARRAY_2.<br>
<br>
<br>
2013/2/19 jolly <<a href="mailto:andreas@eversberg.eu">andreas@eversberg.eu</a>>:<br>
> hi,<br>
><br>
> steve and me experienced a problem with dissecting a "packet resource<br>
> request" at pcu. the patch i attached will show the following output:<br>
><br>
> $ make && src/osmo-pcu<br>
><br>
> PayloadType = 1 | spare = 0 | R = 0 | MESSAGE_TYPE = 5 | Exist_ACCESS_TYPE =<br>
> 1 | ACCESS_TYPE = 3 |  : ID | Choice PacketResourceRequestID = 1 | u.TLLI =<br>
> 0x7ee0e8fd | : End ID | Exist_MS_Radio_Access_capability = 1 |  :<br>
> MS_Radio_Access_capability | MS_RA_capability_value { | Choice<br>
> MS_RA_capability_value_Choice = 1 | u.Content length = 34 |<br>
> RF_Power_Capability = 4 | Exist_A5_bits = 1 | A5_bits = 96 | ES_IND = 1 | PS<br>
> = 0 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 1 |  :<br>
> Multislot_capability | Exist_HSCSD_multislot_class = 0 |<br>
> Exist_GPRS_multislot_class = 1 | GPRS_multislot_class = 10 ....<br>
><br>
> this is all correct, but then i patched the get_ms_class_by_capability()<br>
> function at grps_rlcmac_data.c:<br>
><br>
> ...<br>
> printf("we have = %d\n", cap->Count_MS_RA_capability_value);<br>
>         for (i = 0; i < cap->Count_MS_RA_capability_value; i++) {<br>
> printf("index=%d\n", cap->MS_RA_capability_value[i].IndexOfAccTech);<br>
> printf("exists multislot capability %d\n",<br>
> cap->MS_RA_capability_value[i].u.Content.Exist_Multislot_capability);<br>
> printf("exists class %d\n",<br>
> cap->MS_RA_capability_value[i].u.Content.Multislot_capability.Exist_GPRS_multislot_class);<br>
> printf("class %d\n",<br>
> cap->MS_RA_capability_value[i].u.Content.Multislot_capability.GPRS_multislot_class);<br>
> ...<br>
><br>
> the output continues as this:<br>
><br>
> we have = 2<br>
> index=2<br>
> exists multislot capability 0<br>
> exists class 1<br>
> class 10<br>
> index=0<br>
> exists multislot capability 0<br>
> exists class 0<br>
> class 0<br>
><br>
> the "class 10" is correct, also it is correct that the class only exists in<br>
> the first entry of the capability array. the output of the dissector states<br>
> that multislot capability exists (Exist_Multislot_capability = 1), but if i<br>
> look at the structure, this field is not set.<br>
><br>
> i looked at the dissector code, but don't really understand why<br>
> CSN_NEXT_EXIST works for some elements and not for others.<br>
><br>
> any ideas?<br>
><br>
> regards,<br>
><br>
> andreas<br>
><br>
<br>
<br>
<br>
--<br>
Regards,<br>
Ivan Kluchnikov.<br>
<a href="http://fairwaves.ru" target="_blank">http://fairwaves.ru</a><br>
<br>
</blockquote></div>