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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
# sabp.cnf
# sabp conformation file
# Copyright 2007 Tomas Kukosa
#.OPT
PER
ALIGNED
#.END
#.NO_EMIT
#.PDU
SABP-PDU
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.USE_VALS_EXT
ProcedureCode
ProtocolIE-ID
Cause
#.OMIT_ASSIGNMENT
Presence
ProtocolIE-ContainerList
#.END
#.TF_RENAME
ProtocolIE-Field/value ProtocolIE_Field_value
InitiatingMessage/value InitiatingMessage_value
SuccessfulOutcome/value SuccessfulOutcome_value
UnsuccessfulOutcome/value UnsuccessfulOutcome_value
#.END
#.FIELD_RENAME
ProtocolExtensionField/id ext_id
MessageStructure/_item/repetitionNumber repetitionNumber1
#.END
#.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID
#.FN_FTR ProtocolIE-ID
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s",
val_to_str_ext(ProtocolIE_ID, &sabp_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
#.END
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
#.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID
#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.FN_FTR ProcedureCode
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
val_to_str_ext_const(ProcedureCode, &sabp_ProcedureCode_vals_ext,
"unknown message"));
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
#.ASSIGN_VALUE_TO_TYPE # SABP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-Write-Replace ProcedureCode
id-Kill ProcedureCode
id-Load-Status-Enquiry ProcedureCode
id-Message-Status-Query ProcedureCode
id-Restart-Indication ProcedureCode
id-Reset ProcedureCode
id-Failure-Indication ProcedureCode
id-Error-Indication ProcedureCode
# ProtocolIE-ID
id-Broadcast-Message-Content ProtocolIE-ID
id-Category ProtocolIE-ID
id-Cause ProtocolIE-ID
id-Criticality-Diagnostics ProtocolIE-ID
id-Data-Coding-Scheme ProtocolIE-ID
id-Failure-List ProtocolIE-ID
id-Message-Identifier ProtocolIE-ID
id-New-Serial-Number ProtocolIE-ID
id-Number-of-Broadcasts-Completed-List ProtocolIE-ID
id-Number-of-Broadcasts-Requested ProtocolIE-ID
id-Old-Serial-Number ProtocolIE-ID
id-Radio-Resource-Loading-List ProtocolIE-ID
id-Recovery-Indication ProtocolIE-ID
id-Repetition-Period ProtocolIE-ID
id-Serial-Number ProtocolIE-ID
id-Service-Areas-List ProtocolIE-ID
id-MessageStructure ProtocolIE-ID
id-TypeOfError ProtocolIE-ID
id-Paging-ETWS-Indicator ProtocolIE-ID
id-Warning-Type ProtocolIE-ID
id-WarningSecurityInfo ProtocolIE-ID
id-Broadcast-Message-Content-Validity-Indicator ProtocolIE-ID
#.END
#.REGISTER
#SABP-PROTOCOL-IES
Message-Identifier N sabp.ies id-Message-Identifier
New-Serial-Number N sabp.ies id-New-Serial-Number
Old-Serial-Number N sabp.ies id-Old-Serial-Number
Service-Areas-List N sabp.ies id-Service-Areas-List
Category N sabp.ies id-Category
Repetition-Period N sabp.ies id-Repetition-Period
Number-of-Broadcasts-Requested N sabp.ies id-Number-of-Broadcasts-Requested
Data-Coding-Scheme N sabp.ies id-Data-Coding-Scheme
Broadcast-Message-Content N sabp.ies id-Broadcast-Message-Content
Number-of-Broadcasts-Completed-List N sabp.ies id-Number-of-Broadcasts-Completed-List
Criticality-Diagnostics N sabp.ies id-Criticality-Diagnostics
Failure-List N sabp.ies id-Failure-List
Radio-Resource-Loading-List N sabp.ies id-Radio-Resource-Loading-List
Recovery-Indication N sabp.ies id-Recovery-Indication
Serial-Number N sabp.ies id-Serial-Number
Cause N sabp.ies id-Cause
#SABP-PROTOCOL-EXTENSION
MessageStructure N sabp.extension id-MessageStructure
TypeOfError N sabp.extension id-TypeOfError
Paging-ETWS-Indicator N sabp.extension id-Paging-ETWS-Indicator
Warning-Type N sabp.extension id-Warning-Type
WarningSecurityInfo N sabp.extension id-WarningSecurityInfo
Broadcast-Message-Content-Validity-Indicator N sabp.extension id-Broadcast-Message-Content-Validity-Indicator
#SABP-ELEMENTARY-PROCEDURE
Write-Replace N sabp.proc.imsg id-Write-Replace
Write-Replace-Complete N sabp.proc.sout id-Write-Replace
Write-Replace-Failure N sabp.proc.uout id-Write-Replace
Kill N sabp.proc.imsg id-Kill
Kill-Complete N sabp.proc.sout id-Kill
Kill-Failure N sabp.proc.uout id-Kill
Load-Query N sabp.proc.imsg id-Load-Status-Enquiry
Load-Query-Complete N sabp.proc.sout id-Load-Status-Enquiry
Load-Query-Failure N sabp.proc.uout id-Load-Status-Enquiry
Message-Status-Query N sabp.proc.imsg id-Message-Status-Query
Message-Status-Query-Complete N sabp.proc.sout id-Message-Status-Query
Message-Status-Query-Failure N sabp.proc.uout id-Message-Status-Query
Reset N sabp.proc.imsg id-Reset
Reset-Complete N sabp.proc.sout id-Reset
Reset-Failure N sabp.proc.uout id-Reset
Restart N sabp.proc.imsg id-Restart-Indication
Failure N sabp.proc.imsg id-Failure-Indication
Error-Indication N sabp.proc.imsg id-Error-Indication
# following construction is not supported by asn2wrs
# PLMNidentity ::= TBCD-STRING (SIZE (3))
# TBCD-STRING ::= OCTET STRING
#.FN_BODY Service-Area-Identifier/pLMNidentity VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, false, ¶meter_tvb);
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_sabp_e212);
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_SAI, false);
#.FN_BODY Data-Coding-Scheme VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_sabp_cbs_data_coding);
sms_encoding = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0);
#.FN_BODY Message-Identifier VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_cbs_message_identifier(parameter_tvb, tree, 0);
#.FN_BODY Serial-Number VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_sabp_cbs_serial_number);
dissect_cbs_serial_number(parameter_tvb, subtree, 0);
#.FN_BODY New-Serial-Number VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
proto_tree *subtree;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
subtree = proto_item_add_subtree(actx->created_item, ett_sabp_cbs_new_serial_number);
dissect_cbs_serial_number(parameter_tvb, subtree, 0);
#.FN_BODY Broadcast-Message-Content VAL_PTR = ¶meter_tvb
tvbuff_t *parameter_tvb=NULL;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_sabp_cb_data(parameter_tvb, actx->pinfo, tree);
# dissect_umts_cell_broadcast_message(parameter_tvb, actx->pinfo, proto_tree_get_root(tree));
|