summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/HI2Operations/HI2Operations.cnf
blob: db478bb2f241238532fd92c79a8fba2ff5337373 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# HI2Operations.cnf
# HI2Operations conformation file

#.MODULE
EpsHI2Operations EpsHI2
UmtsHI2Operations UmtsHI2
HI3CCLinkData	hi3cclinkdata
#.MODULE_IMPORT

#.EXPORTS

#.REGISTER

#.PDU
IRIsContent
UUS1-Content

#.NO_EMIT

#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
CallContentLinkCharacteristics
CCLink-State
Intercepted-Call-State
GPRSCorrelationNumber
GPRSEvent
TetraLocation

#.FIELD_RENAME
GSMLocation/geoCoordinates/latitude geoCoordinates_latitude
GSMLocation/geoCoordinates/longitude geoCoordinates_longitude

#.FN_HDR UUS1-Content

/* Heuristic test to see if it's our content */
    int8_t   tmp_class;
    bool tmp_pc;
    int32_t  tmp_tag;
    int      tmp_offset;
    unsigned length = tvb_captured_length(tvb);
    uint32_t tmp_length;
    bool tmp_ind;

    /* Check for min length */
    if (length < 6){
      return 0;
    }
    /* We start with UUS1-Content ::= SEQUENCE */
    tmp_offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
    if(tmp_class != BER_CLASS_UNI){
      return 0;
    }
    if(tmp_pc != 1){
      return 0;
    }
    if(tmp_tag != BER_UNI_TAG_SEQUENCE){
      return 0;
    }
    /* Get length just to move offset forward */
    tmp_offset = get_ber_length(tvb, tmp_offset, &tmp_length, &tmp_ind);

    /* Next 2 mandatorry elements
     *  lawfullInterceptionIdentifier [1] LawfulInterceptionIdentifier,
     *  communicationIdentifier       [2] CommunicationIdentifier,
     */
    get_ber_identifier(tvb, tmp_offset, &tmp_class, &tmp_pc, &tmp_tag);
    if(tmp_class != BER_CLASS_CON){
      return 0;
    }
    if(tmp_pc != 0){
      return 0;
    }
    if(tmp_tag != 1){
      return 0;
    }

#.FN_BODY Network-Element-Identifier/e164-Format VAL_PTR = &parameter_tvb
  tvbuff_t *parameter_tvb=NULL;

%(DEFAULT_BODY)s
  if (!parameter_tvb)
    return offset;

  dissect_isup_calling_party_number_parameter(parameter_tvb, actx->pinfo, tree, NULL);

#.FN_BODY UUS1-Content/bearer-capability VAL_PTR =&parameter_tvb
  tvbuff_t *parameter_tvb;

%(DEFAULT_BODY)s

  if (!parameter_tvb)
    return offset;

  dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), tree);

#.FIELD_ATTR
GSMLocation/geoCoordinates/latitude ABBREV=geoCoordinates.latitude
GSMLocation/geoCoordinates/longitude ABBREV=geoCoordinates.longitude
#.END