change the signature that asn2wrs generates for functions to marm all parameters...
[obnox/wireshark/wip.git] / epan / dissectors / packet-s4406.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* ./packet-s4406.c                                                           */
4 /* ../../tools/asn2wrs.py -b -e -p s4406 -c s4406.cnf -s packet-s4406-template s4406.asn */
5
6 /* Input file: packet-s4406-template.c */
7
8 #line 1 "packet-s4406-template.c"
9 /* packet-s4406.c
10  * Routines for STANAG 4406 (X.400 Military Message Extensions)  packet dissection
11  * Graeme Lunt 2005
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
41
42 #include <stdio.h>
43 #include <string.h>
44
45 #include "packet-ber.h"
46
47 #include "packet-x509if.h"
48
49 #include "packet-s4406.h"
50 #include "packet-x411.h" 
51 #include "packet-x420.h" 
52
53 #define PNAME  "STANAG 4406 Military Message"
54 #define PSNAME "STANAG 4406"
55 #define PFNAME "s4406"
56
57 /* Initialize the protocol and registered fields */
58 int proto_s4406 = -1;
59
60
61 /*--- Included file: packet-s4406-hf.c ---*/
62 #line 1 "packet-s4406-hf.c"
63 static int hf_s4406_InformationObject_PDU = -1;   /* InformationObject */
64 static int hf_s4406_MMMessageData_PDU = -1;       /* MMMessageData */
65 static int hf_s4406_MMMessageParameters_PDU = -1;  /* MMMessageParameters */
66 static int hf_s4406_ExemptedAddressSeq_PDU = -1;  /* ExemptedAddressSeq */
67 static int hf_s4406_ExemptedAddress_PDU = -1;     /* ExemptedAddress */
68 static int hf_s4406_ExtendedAuthorisationInfo_PDU = -1;  /* ExtendedAuthorisationInfo */
69 static int hf_s4406_DistributionCodes_PDU = -1;   /* DistributionCodes */
70 static int hf_s4406_HandlingInstructions_PDU = -1;  /* HandlingInstructions */
71 static int hf_s4406_MessageInstructions_PDU = -1;  /* MessageInstructions */
72 static int hf_s4406_CodressMessage_PDU = -1;      /* CodressMessage */
73 static int hf_s4406_OriginatorReference_PDU = -1;  /* OriginatorReference */
74 static int hf_s4406_PrimaryPrecedence_PDU = -1;   /* PrimaryPrecedence */
75 static int hf_s4406_CopyPrecedence_PDU = -1;      /* CopyPrecedence */
76 static int hf_s4406_MessageType_PDU = -1;         /* MessageType */
77 static int hf_s4406_AddressListDesignatorSeq_PDU = -1;  /* AddressListDesignatorSeq */
78 static int hf_s4406_AddressListDesignator_PDU = -1;  /* AddressListDesignator */
79 static int hf_s4406_OtherRecipientDesignatorSeq_PDU = -1;  /* OtherRecipientDesignatorSeq */
80 static int hf_s4406_OtherRecipientDesignator_PDU = -1;  /* OtherRecipientDesignator */
81 static int hf_s4406_PilotInformationSeq_PDU = -1;  /* PilotInformationSeq */
82 static int hf_s4406_PilotInformation_PDU = -1;    /* PilotInformation */
83 static int hf_s4406_Acp127MessageIdentifier_PDU = -1;  /* Acp127MessageIdentifier */
84 static int hf_s4406_OriginatorPlad_PDU = -1;      /* OriginatorPlad */
85 static int hf_s4406_Acp127NotificationType_PDU = -1;  /* Acp127NotificationType */
86 static int hf_s4406_SecurityInformationLabels_PDU = -1;  /* SecurityInformationLabels */
87 static int hf_s4406_PriorityLevelQualifier_PDU = -1;  /* PriorityLevelQualifier */
88 static int hf_s4406_mm = -1;                      /* IPM */
89 static int hf_s4406_mn = -1;                      /* IPN */
90 static int hf_s4406_sics = -1;                    /* SEQUENCE_OF_Sic */
91 static int hf_s4406_sics_item = -1;               /* Sic */
92 static int hf_s4406_dist_Extensions = -1;         /* SEQUENCE_OF_DistributionExtensionField */
93 static int hf_s4406_dist_Extensions_item = -1;    /* DistributionExtensionField */
94 static int hf_s4406_dist_type = -1;               /* OBJECT_IDENTIFIER */
95 static int hf_s4406_dist_value = -1;              /* T_dist_value */
96 static int hf_s4406_HandlingInstructions_item = -1;  /* MilitaryString */
97 static int hf_s4406_MessageInstructions_item = -1;  /* MilitaryString */
98 static int hf_s4406_message_type_type = -1;       /* TypeMessage */
99 static int hf_s4406_identifier = -1;              /* MessageIdentifier */
100 static int hf_s4406_AddressListDesignatorSeq_item = -1;  /* AddressListDesignator */
101 static int hf_s4406_address_list_type = -1;       /* AddressListType */
102 static int hf_s4406_listName = -1;                /* ORDescriptor */
103 static int hf_s4406_notificationRequest = -1;     /* AddressListRequest */
104 static int hf_s4406_replyRequest = -1;            /* AddressListRequest */
105 static int hf_s4406_OtherRecipientDesignatorSeq_item = -1;  /* OtherRecipientDesignator */
106 static int hf_s4406_other_recipient_type = -1;    /* OtherRecipientType */
107 static int hf_s4406_designator = -1;              /* MilitaryString */
108 static int hf_s4406_PilotInformationSeq_item = -1;  /* PilotInformation */
109 static int hf_s4406_pilotPrecedence = -1;         /* PilotPrecedence */
110 static int hf_s4406_pilotRecipient = -1;          /* SEQUENCE_OF_ORDescriptor */
111 static int hf_s4406_pilotRecipient_item = -1;     /* ORDescriptor */
112 static int hf_s4406_pilotSecurity = -1;           /* SecurityLabel */
113 static int hf_s4406_pilotHandling = -1;           /* SEQUENCE_OF_MilitaryString */
114 static int hf_s4406_pilotHandling_item = -1;      /* MilitaryString */
115 static int hf_s4406_content_security_label = -1;  /* SecurityLabel */
116 static int hf_s4406_heading_security_label = -1;  /* SecurityLabel */
117 static int hf_s4406_body_part_security_labels = -1;  /* SEQUENCE_OF_BodyPartSecurityLabel */
118 static int hf_s4406_body_part_security_labels_item = -1;  /* BodyPartSecurityLabel */
119 static int hf_s4406_body_part_security_label = -1;  /* SecurityLabel */
120 static int hf_s4406_body_part_sequence_number = -1;  /* BodyPartSequenceNumber */
121 /* named bits */
122 static int hf_s4406_Acp127NotificationType_negative = -1;
123 static int hf_s4406_Acp127NotificationType_positive = -1;
124 static int hf_s4406_Acp127NotificationType_transfer = -1;
125
126 /*--- End of included file: packet-s4406-hf.c ---*/
127 #line 53 "packet-s4406-template.c"
128
129 /* Initialize the subtree pointers */
130 static gint ett_s4406 = -1;
131
132 /*--- Included file: packet-s4406-ett.c ---*/
133 #line 1 "packet-s4406-ett.c"
134 static gint ett_s4406_InformationObject = -1;
135 static gint ett_s4406_DistributionCodes = -1;
136 static gint ett_s4406_SEQUENCE_OF_Sic = -1;
137 static gint ett_s4406_SEQUENCE_OF_DistributionExtensionField = -1;
138 static gint ett_s4406_DistributionExtensionField = -1;
139 static gint ett_s4406_HandlingInstructions = -1;
140 static gint ett_s4406_MessageInstructions = -1;
141 static gint ett_s4406_MessageType = -1;
142 static gint ett_s4406_AddressListDesignatorSeq = -1;
143 static gint ett_s4406_AddressListDesignator = -1;
144 static gint ett_s4406_OtherRecipientDesignatorSeq = -1;
145 static gint ett_s4406_OtherRecipientDesignator = -1;
146 static gint ett_s4406_PilotInformationSeq = -1;
147 static gint ett_s4406_PilotInformation = -1;
148 static gint ett_s4406_SEQUENCE_OF_ORDescriptor = -1;
149 static gint ett_s4406_SEQUENCE_OF_MilitaryString = -1;
150 static gint ett_s4406_Acp127NotificationType = -1;
151 static gint ett_s4406_SecurityInformationLabels = -1;
152 static gint ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel = -1;
153 static gint ett_s4406_BodyPartSecurityLabel = -1;
154
155 /*--- End of included file: packet-s4406-ett.c ---*/
156 #line 57 "packet-s4406-template.c"
157
158
159 /*--- Included file: packet-s4406-fn.c ---*/
160 #line 1 "packet-s4406-fn.c"
161 /*--- Fields for imported types ---*/
162
163 static int dissect_mm_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
164   return dissect_x420_IPM(TRUE, tvb, offset, pinfo, tree, hf_s4406_mm);
165 }
166 static int dissect_mn_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
167   return dissect_x420_IPN(TRUE, tvb, offset, pinfo, tree, hf_s4406_mn);
168 }
169 static int dissect_listName_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
170   return dissect_x420_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_s4406_listName);
171 }
172 static int dissect_pilotRecipient_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
173   return dissect_x420_ORDescriptor(FALSE, tvb, offset, pinfo, tree, hf_s4406_pilotRecipient_item);
174 }
175 static int dissect_pilotSecurity_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
176   return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotSecurity);
177 }
178 static int dissect_content_security_label_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
179   return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_content_security_label);
180 }
181 static int dissect_heading_security_label_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
182   return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_heading_security_label);
183 }
184 static int dissect_body_part_security_label_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
185   return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_label);
186 }
187
188
189 static const value_string s4406_InformationObject_vals[] = {
190   {   0, "mm" },
191   {   1, "mn" },
192   { 0, NULL }
193 };
194
195 static const ber_choice_t InformationObject_choice[] = {
196   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mm_impl },
197   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mn_impl },
198   { 0, 0, 0, 0, NULL }
199 };
200
201 static int
202 dissect_s4406_InformationObject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
203   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
204                                  InformationObject_choice, hf_index, ett_s4406_InformationObject,
205                                  NULL);
206
207   return offset;
208 }
209
210
211
212 static int
213 dissect_s4406_MMMessageData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
214   offset = dissect_x420_IPM(implicit_tag, tvb, offset, pinfo, tree, hf_index);
215
216   return offset;
217 }
218
219
220
221 static int
222 dissect_s4406_MMMessageParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
223   offset = dissect_x420_MessageParameters(implicit_tag, tvb, offset, pinfo, tree, hf_index);
224
225   return offset;
226 }
227
228
229
230 static int
231 dissect_s4406_ExemptedAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
232   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, pinfo, tree, hf_index);
233
234   return offset;
235 }
236
237
238
239 static int
240 dissect_s4406_ExemptedAddressSeq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
241   offset = dissect_s4406_ExemptedAddress(implicit_tag, tvb, offset, pinfo, tree, hf_index);
242
243   return offset;
244 }
245
246
247
248 static int
249 dissect_s4406_ExtendedAuthorisationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
250   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
251                                             pinfo, tree, tvb, offset, hf_index,
252                                             NULL);
253
254   return offset;
255 }
256
257
258
259 static int
260 dissect_s4406_Sic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
261   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
262                                             pinfo, tree, tvb, offset, hf_index,
263                                             NULL);
264
265   return offset;
266 }
267 static int dissect_sics_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
268   return dissect_s4406_Sic(FALSE, tvb, offset, pinfo, tree, hf_s4406_sics_item);
269 }
270
271
272 static const ber_sequence_t SEQUENCE_OF_Sic_sequence_of[1] = {
273   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_sics_item },
274 };
275
276 static int
277 dissect_s4406_SEQUENCE_OF_Sic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
278   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
279                                       SEQUENCE_OF_Sic_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_Sic);
280
281   return offset;
282 }
283 static int dissect_sics_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
284   return dissect_s4406_SEQUENCE_OF_Sic(TRUE, tvb, offset, pinfo, tree, hf_s4406_sics);
285 }
286
287
288
289 static int
290 dissect_s4406_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
291   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
292
293   return offset;
294 }
295 static int dissect_dist_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
296   return dissect_s4406_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_type);
297 }
298
299
300
301 static int
302 dissect_s4406_T_dist_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
303 #line 65 "s4406.cnf"
304 /* XXX: not implemented */
305
306
307
308   return offset;
309 }
310 static int dissect_dist_value(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
311   return dissect_s4406_T_dist_value(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_value);
312 }
313
314
315 static const ber_sequence_t DistributionExtensionField_sequence[] = {
316   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dist_type },
317   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_dist_value },
318   { 0, 0, 0, NULL }
319 };
320
321 static int
322 dissect_s4406_DistributionExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
323   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
324                                    DistributionExtensionField_sequence, hf_index, ett_s4406_DistributionExtensionField);
325
326   return offset;
327 }
328 static int dissect_dist_Extensions_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
329   return dissect_s4406_DistributionExtensionField(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_Extensions_item);
330 }
331
332
333 static const ber_sequence_t SEQUENCE_OF_DistributionExtensionField_sequence_of[1] = {
334   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dist_Extensions_item },
335 };
336
337 static int
338 dissect_s4406_SEQUENCE_OF_DistributionExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
339   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
340                                       SEQUENCE_OF_DistributionExtensionField_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_DistributionExtensionField);
341
342   return offset;
343 }
344 static int dissect_dist_Extensions_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
345   return dissect_s4406_SEQUENCE_OF_DistributionExtensionField(TRUE, tvb, offset, pinfo, tree, hf_s4406_dist_Extensions);
346 }
347
348
349 static const ber_sequence_t DistributionCodes_set[] = {
350   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sics_impl },
351   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dist_Extensions_impl },
352   { 0, 0, 0, NULL }
353 };
354
355 static int
356 dissect_s4406_DistributionCodes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
357   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
358                               DistributionCodes_set, hf_index, ett_s4406_DistributionCodes);
359
360   return offset;
361 }
362
363
364
365 static int
366 dissect_s4406_MilitaryString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
367   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
368                                             pinfo, tree, tvb, offset, hf_index,
369                                             NULL);
370
371   return offset;
372 }
373 static int dissect_HandlingInstructions_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
374   return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_HandlingInstructions_item);
375 }
376 static int dissect_MessageInstructions_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
377   return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_MessageInstructions_item);
378 }
379 static int dissect_designator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
380   return dissect_s4406_MilitaryString(TRUE, tvb, offset, pinfo, tree, hf_s4406_designator);
381 }
382 static int dissect_pilotHandling_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
383   return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_pilotHandling_item);
384 }
385
386
387 static const ber_sequence_t HandlingInstructions_sequence_of[1] = {
388   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_HandlingInstructions_item },
389 };
390
391 static int
392 dissect_s4406_HandlingInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
393   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
394                                       HandlingInstructions_sequence_of, hf_index, ett_s4406_HandlingInstructions);
395
396   return offset;
397 }
398
399
400 static const ber_sequence_t MessageInstructions_sequence_of[1] = {
401   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_MessageInstructions_item },
402 };
403
404 static int
405 dissect_s4406_MessageInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
406   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
407                                       MessageInstructions_sequence_of, hf_index, ett_s4406_MessageInstructions);
408
409   return offset;
410 }
411
412
413
414 static int
415 dissect_s4406_CodressMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
416   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
417                                   NULL);
418
419   return offset;
420 }
421
422
423
424 static int
425 dissect_s4406_OriginatorReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
426   offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
427
428   return offset;
429 }
430
431
432 static const value_string s4406_PrimaryPrecedence_vals[] = {
433   {   0, "deferred" },
434   {   1, "routine" },
435   {   2, "priority" },
436   {   3, "immediate" },
437   {   4, "flash" },
438   {   5, "override" },
439   {  16, "ecp" },
440   {  17, "critic" },
441   {  18, "override" },
442   { 0, NULL }
443 };
444
445
446 static int
447 dissect_s4406_PrimaryPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
448 #line 70 "s4406.cnf"
449   int precedence = -1;
450     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
451                                   &precedence);
452
453   if((precedence != -1) && check_col(pinfo->cinfo, COL_INFO))
454    col_append_fstr(pinfo->cinfo, COL_INFO, " (primary=%s)", val_to_str(precedence, s4406_PrimaryPrecedence_vals, "precedence(%d)"));
455
456
457
458   return offset;
459 }
460
461
462 static const value_string s4406_CopyPrecedence_vals[] = {
463   {   0, "deferred" },
464   {   1, "routine" },
465   {   2, "priority" },
466   {   3, "immediate" },
467   {   4, "flash" },
468   {   5, "override" },
469   {  16, "ecp" },
470   {  17, "critic" },
471   {  18, "override" },
472   { 0, NULL }
473 };
474
475
476 static int
477 dissect_s4406_CopyPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
478 #line 78 "s4406.cnf"
479   int precedence = -1;
480     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
481                                   &precedence);
482
483   if((precedence != -1) && check_col(pinfo->cinfo, COL_INFO))
484    col_append_fstr(pinfo->cinfo, COL_INFO, " (copy=%s)", val_to_str(precedence, s4406_CopyPrecedence_vals, "precedence(%d)"));
485
486
487   return offset;
488 }
489
490
491 static const value_string s4406_TypeMessage_vals[] = {
492   {   0, "exercise" },
493   {   1, "operation" },
494   {   2, "project" },
495   {   3, "drill" },
496   { 0, NULL }
497 };
498
499
500 static int
501 dissect_s4406_TypeMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
502   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
503                                   NULL);
504
505   return offset;
506 }
507 static int dissect_message_type_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
508   return dissect_s4406_TypeMessage(TRUE, tvb, offset, pinfo, tree, hf_s4406_message_type_type);
509 }
510
511
512
513 static int
514 dissect_s4406_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
515   offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
516
517   return offset;
518 }
519 static int dissect_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
520   return dissect_s4406_MessageIdentifier(TRUE, tvb, offset, pinfo, tree, hf_s4406_identifier);
521 }
522
523
524 static const ber_sequence_t MessageType_set[] = {
525   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_message_type_type_impl },
526   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_identifier_impl },
527   { 0, 0, 0, NULL }
528 };
529
530 static int
531 dissect_s4406_MessageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
532   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
533                               MessageType_set, hf_index, ett_s4406_MessageType);
534
535   return offset;
536 }
537
538
539 static const value_string s4406_AddressListType_vals[] = {
540   {   0, "primaryAddressList" },
541   {   1, "copyAddressList" },
542   { 0, NULL }
543 };
544
545
546 static int
547 dissect_s4406_AddressListType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
548   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
549                                   NULL);
550
551   return offset;
552 }
553 static int dissect_address_list_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
554   return dissect_s4406_AddressListType(TRUE, tvb, offset, pinfo, tree, hf_s4406_address_list_type);
555 }
556
557
558 static const value_string s4406_AddressListRequest_vals[] = {
559   {   0, "action" },
560   {   1, "info" },
561   {   2, "both" },
562   { 0, NULL }
563 };
564
565
566 static int
567 dissect_s4406_AddressListRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
568   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
569                                   NULL);
570
571   return offset;
572 }
573 static int dissect_notificationRequest_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
574   return dissect_s4406_AddressListRequest(TRUE, tvb, offset, pinfo, tree, hf_s4406_notificationRequest);
575 }
576 static int dissect_replyRequest_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
577   return dissect_s4406_AddressListRequest(TRUE, tvb, offset, pinfo, tree, hf_s4406_replyRequest);
578 }
579
580
581 static const ber_sequence_t AddressListDesignator_set[] = {
582   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_address_list_type_impl },
583   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_listName_impl },
584   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationRequest_impl },
585   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replyRequest_impl },
586   { 0, 0, 0, NULL }
587 };
588
589 static int
590 dissect_s4406_AddressListDesignator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
591   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
592                               AddressListDesignator_set, hf_index, ett_s4406_AddressListDesignator);
593
594   return offset;
595 }
596 static int dissect_AddressListDesignatorSeq_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
597   return dissect_s4406_AddressListDesignator(FALSE, tvb, offset, pinfo, tree, hf_s4406_AddressListDesignatorSeq_item);
598 }
599
600
601 static const ber_sequence_t AddressListDesignatorSeq_sequence_of[1] = {
602   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_AddressListDesignatorSeq_item },
603 };
604
605 static int
606 dissect_s4406_AddressListDesignatorSeq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
607   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
608                                       AddressListDesignatorSeq_sequence_of, hf_index, ett_s4406_AddressListDesignatorSeq);
609
610   return offset;
611 }
612
613
614 static const value_string s4406_OtherRecipientType_vals[] = {
615   {   0, "primary" },
616   {   1, "copy" },
617   { 0, NULL }
618 };
619
620
621 static int
622 dissect_s4406_OtherRecipientType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
623   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
624                                   NULL);
625
626   return offset;
627 }
628 static int dissect_other_recipient_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
629   return dissect_s4406_OtherRecipientType(TRUE, tvb, offset, pinfo, tree, hf_s4406_other_recipient_type);
630 }
631
632
633 static const ber_sequence_t OtherRecipientDesignator_set[] = {
634   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_other_recipient_type_impl },
635   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_designator_impl },
636   { 0, 0, 0, NULL }
637 };
638
639 static int
640 dissect_s4406_OtherRecipientDesignator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
641   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
642                               OtherRecipientDesignator_set, hf_index, ett_s4406_OtherRecipientDesignator);
643
644   return offset;
645 }
646 static int dissect_OtherRecipientDesignatorSeq_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
647   return dissect_s4406_OtherRecipientDesignator(FALSE, tvb, offset, pinfo, tree, hf_s4406_OtherRecipientDesignatorSeq_item);
648 }
649
650
651 static const ber_sequence_t OtherRecipientDesignatorSeq_sequence_of[1] = {
652   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_OtherRecipientDesignatorSeq_item },
653 };
654
655 static int
656 dissect_s4406_OtherRecipientDesignatorSeq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
657   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
658                                       OtherRecipientDesignatorSeq_sequence_of, hf_index, ett_s4406_OtherRecipientDesignatorSeq);
659
660   return offset;
661 }
662
663
664 static const value_string s4406_PilotPrecedence_vals[] = {
665   {   0, "deferred" },
666   {   1, "routine" },
667   {   2, "priority" },
668   {   3, "immediate" },
669   {   4, "flash" },
670   {   5, "override" },
671   {  16, "ecp" },
672   {  17, "critic" },
673   {  18, "override" },
674   { 0, NULL }
675 };
676
677
678 static int
679 dissect_s4406_PilotPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
680   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
681                                   NULL);
682
683   return offset;
684 }
685 static int dissect_pilotPrecedence_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
686   return dissect_s4406_PilotPrecedence(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotPrecedence);
687 }
688
689
690 static const ber_sequence_t SEQUENCE_OF_ORDescriptor_sequence_of[1] = {
691   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_pilotRecipient_item },
692 };
693
694 static int
695 dissect_s4406_SEQUENCE_OF_ORDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
696   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
697                                       SEQUENCE_OF_ORDescriptor_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_ORDescriptor);
698
699   return offset;
700 }
701 static int dissect_pilotRecipient_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
702   return dissect_s4406_SEQUENCE_OF_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotRecipient);
703 }
704
705
706 static const ber_sequence_t SEQUENCE_OF_MilitaryString_sequence_of[1] = {
707   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_pilotHandling_item },
708 };
709
710 static int
711 dissect_s4406_SEQUENCE_OF_MilitaryString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
712   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
713                                       SEQUENCE_OF_MilitaryString_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_MilitaryString);
714
715   return offset;
716 }
717 static int dissect_pilotHandling_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
718   return dissect_s4406_SEQUENCE_OF_MilitaryString(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotHandling);
719 }
720
721
722 static const ber_sequence_t PilotInformation_sequence[] = {
723   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotPrecedence_impl },
724   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotRecipient_impl },
725   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotSecurity_impl },
726   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotHandling_impl },
727   { 0, 0, 0, NULL }
728 };
729
730 static int
731 dissect_s4406_PilotInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
732   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
733                                    PilotInformation_sequence, hf_index, ett_s4406_PilotInformation);
734
735   return offset;
736 }
737 static int dissect_PilotInformationSeq_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
738   return dissect_s4406_PilotInformation(FALSE, tvb, offset, pinfo, tree, hf_s4406_PilotInformationSeq_item);
739 }
740
741
742 static const ber_sequence_t PilotInformationSeq_sequence_of[1] = {
743   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PilotInformationSeq_item },
744 };
745
746 static int
747 dissect_s4406_PilotInformationSeq(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
748   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
749                                       PilotInformationSeq_sequence_of, hf_index, ett_s4406_PilotInformationSeq);
750
751   return offset;
752 }
753
754
755
756 static int
757 dissect_s4406_Acp127MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
758   offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
759
760   return offset;
761 }
762
763
764
765 static int
766 dissect_s4406_OriginatorPlad(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
767   offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
768
769   return offset;
770 }
771
772
773 static const asn_namedbit Acp127NotificationType_bits[] = {
774   {  0, &hf_s4406_Acp127NotificationType_negative, -1, -1, "negative", NULL },
775   {  1, &hf_s4406_Acp127NotificationType_positive, -1, -1, "positive", NULL },
776   {  2, &hf_s4406_Acp127NotificationType_transfer, -1, -1, "transfer", NULL },
777   { 0, NULL, 0, 0, NULL, NULL }
778 };
779
780 static int
781 dissect_s4406_Acp127NotificationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
782   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
783                                     Acp127NotificationType_bits, hf_index, ett_s4406_Acp127NotificationType,
784                                     NULL);
785
786   return offset;
787 }
788
789
790
791 static int
792 dissect_s4406_BodyPartSequenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
793   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
794                                   NULL);
795
796   return offset;
797 }
798 static int dissect_body_part_sequence_number_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
799   return dissect_s4406_BodyPartSequenceNumber(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_sequence_number);
800 }
801
802
803 static const ber_sequence_t BodyPartSecurityLabel_set[] = {
804   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_body_part_security_label_impl },
805   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_body_part_sequence_number_impl },
806   { 0, 0, 0, NULL }
807 };
808
809 static int
810 dissect_s4406_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
811   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
812                               BodyPartSecurityLabel_set, hf_index, ett_s4406_BodyPartSecurityLabel);
813
814   return offset;
815 }
816 static int dissect_body_part_security_labels_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
817   return dissect_s4406_BodyPartSecurityLabel(FALSE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_labels_item);
818 }
819
820
821 static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = {
822   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_body_part_security_labels_item },
823 };
824
825 static int
826 dissect_s4406_SEQUENCE_OF_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
827   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
828                                       SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel);
829
830   return offset;
831 }
832 static int dissect_body_part_security_labels_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
833   return dissect_s4406_SEQUENCE_OF_BodyPartSecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_labels);
834 }
835
836
837 static const ber_sequence_t SecurityInformationLabels_sequence[] = {
838   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_content_security_label_impl },
839   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_heading_security_label_impl },
840   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_body_part_security_labels_impl },
841   { 0, 0, 0, NULL }
842 };
843
844 static int
845 dissect_s4406_SecurityInformationLabels(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
846   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
847                                    SecurityInformationLabels_sequence, hf_index, ett_s4406_SecurityInformationLabels);
848
849   return offset;
850 }
851
852
853 static const value_string s4406_PriorityLevelQualifier_vals[] = {
854   {   0, "low" },
855   {   1, "high" },
856   { 0, NULL }
857 };
858
859
860 static int
861 dissect_s4406_PriorityLevelQualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
862   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
863                                   NULL);
864
865   return offset;
866 }
867
868 /*--- PDUs ---*/
869
870 static void dissect_InformationObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
871   dissect_s4406_InformationObject(FALSE, tvb, 0, pinfo, tree, hf_s4406_InformationObject_PDU);
872 }
873 static void dissect_MMMessageData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
874   dissect_s4406_MMMessageData(FALSE, tvb, 0, pinfo, tree, hf_s4406_MMMessageData_PDU);
875 }
876 static void dissect_MMMessageParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
877   dissect_s4406_MMMessageParameters(FALSE, tvb, 0, pinfo, tree, hf_s4406_MMMessageParameters_PDU);
878 }
879 static void dissect_ExemptedAddressSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
880   dissect_s4406_ExemptedAddressSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExemptedAddressSeq_PDU);
881 }
882 static void dissect_ExemptedAddress_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
883   dissect_s4406_ExemptedAddress(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExemptedAddress_PDU);
884 }
885 static void dissect_ExtendedAuthorisationInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
886   dissect_s4406_ExtendedAuthorisationInfo(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExtendedAuthorisationInfo_PDU);
887 }
888 static void dissect_DistributionCodes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
889   dissect_s4406_DistributionCodes(FALSE, tvb, 0, pinfo, tree, hf_s4406_DistributionCodes_PDU);
890 }
891 static void dissect_HandlingInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
892   dissect_s4406_HandlingInstructions(FALSE, tvb, 0, pinfo, tree, hf_s4406_HandlingInstructions_PDU);
893 }
894 static void dissect_MessageInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
895   dissect_s4406_MessageInstructions(FALSE, tvb, 0, pinfo, tree, hf_s4406_MessageInstructions_PDU);
896 }
897 static void dissect_CodressMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
898   dissect_s4406_CodressMessage(FALSE, tvb, 0, pinfo, tree, hf_s4406_CodressMessage_PDU);
899 }
900 static void dissect_OriginatorReference_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
901   dissect_s4406_OriginatorReference(FALSE, tvb, 0, pinfo, tree, hf_s4406_OriginatorReference_PDU);
902 }
903 static void dissect_PrimaryPrecedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
904   dissect_s4406_PrimaryPrecedence(FALSE, tvb, 0, pinfo, tree, hf_s4406_PrimaryPrecedence_PDU);
905 }
906 static void dissect_CopyPrecedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
907   dissect_s4406_CopyPrecedence(FALSE, tvb, 0, pinfo, tree, hf_s4406_CopyPrecedence_PDU);
908 }
909 static void dissect_MessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
910   dissect_s4406_MessageType(FALSE, tvb, 0, pinfo, tree, hf_s4406_MessageType_PDU);
911 }
912 static void dissect_AddressListDesignatorSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
913   dissect_s4406_AddressListDesignatorSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_AddressListDesignatorSeq_PDU);
914 }
915 static void dissect_AddressListDesignator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
916   dissect_s4406_AddressListDesignator(FALSE, tvb, 0, pinfo, tree, hf_s4406_AddressListDesignator_PDU);
917 }
918 static void dissect_OtherRecipientDesignatorSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
919   dissect_s4406_OtherRecipientDesignatorSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_OtherRecipientDesignatorSeq_PDU);
920 }
921 static void dissect_OtherRecipientDesignator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
922   dissect_s4406_OtherRecipientDesignator(FALSE, tvb, 0, pinfo, tree, hf_s4406_OtherRecipientDesignator_PDU);
923 }
924 static void dissect_PilotInformationSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
925   dissect_s4406_PilotInformationSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_PilotInformationSeq_PDU);
926 }
927 static void dissect_PilotInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
928   dissect_s4406_PilotInformation(FALSE, tvb, 0, pinfo, tree, hf_s4406_PilotInformation_PDU);
929 }
930 static void dissect_Acp127MessageIdentifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
931   dissect_s4406_Acp127MessageIdentifier(FALSE, tvb, 0, pinfo, tree, hf_s4406_Acp127MessageIdentifier_PDU);
932 }
933 static void dissect_OriginatorPlad_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
934   dissect_s4406_OriginatorPlad(FALSE, tvb, 0, pinfo, tree, hf_s4406_OriginatorPlad_PDU);
935 }
936 static void dissect_Acp127NotificationType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
937   dissect_s4406_Acp127NotificationType(FALSE, tvb, 0, pinfo, tree, hf_s4406_Acp127NotificationType_PDU);
938 }
939 static void dissect_SecurityInformationLabels_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
940   dissect_s4406_SecurityInformationLabels(FALSE, tvb, 0, pinfo, tree, hf_s4406_SecurityInformationLabels_PDU);
941 }
942 static void dissect_PriorityLevelQualifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
943   dissect_s4406_PriorityLevelQualifier(FALSE, tvb, 0, pinfo, tree, hf_s4406_PriorityLevelQualifier_PDU);
944 }
945
946
947 /*--- End of included file: packet-s4406-fn.c ---*/
948 #line 59 "packet-s4406-template.c"
949
950
951 /*
952 * Dissect STANAG 4406 PDUs inside a PPDU.
953 */
954 static void
955 dissect_s4406(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
956 {
957         int offset = 0;
958         proto_item *item=NULL;
959         proto_tree *tree=NULL;
960
961         if(parent_tree){
962                 item = proto_tree_add_item(parent_tree, proto_s4406, tvb, 0, -1, FALSE);
963                 tree = proto_item_add_subtree(item, ett_s4406);
964         }
965
966         if (check_col(pinfo->cinfo, COL_PROTOCOL))
967                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "S4406");
968         if (check_col(pinfo->cinfo, COL_INFO))
969           col_add_str(pinfo->cinfo, COL_INFO, "Military");
970
971         dissect_s4406_InformationObject(TRUE, tvb, offset, pinfo , tree, -1);
972 }
973
974
975
976 /*--- proto_register_s4406 -------------------------------------------*/
977 void proto_register_s4406(void) {
978
979   /* List of fields */
980   static hf_register_info hf[] =
981   {
982
983 /*--- Included file: packet-s4406-hfarr.c ---*/
984 #line 1 "packet-s4406-hfarr.c"
985     { &hf_s4406_InformationObject_PDU,
986       { "InformationObject", "s4406.InformationObject",
987         FT_UINT32, BASE_DEC, VALS(x420_InformationObject_vals), 0,
988         "s4406.InformationObject", HFILL }},
989     { &hf_s4406_MMMessageData_PDU,
990       { "MMMessageData", "s4406.MMMessageData",
991         FT_NONE, BASE_NONE, NULL, 0,
992         "s4406.MMMessageData", HFILL }},
993     { &hf_s4406_MMMessageParameters_PDU,
994       { "MMMessageParameters", "s4406.MMMessageParameters",
995         FT_NONE, BASE_NONE, NULL, 0,
996         "s4406.MMMessageParameters", HFILL }},
997     { &hf_s4406_ExemptedAddressSeq_PDU,
998       { "ExemptedAddressSeq", "s4406.ExemptedAddressSeq",
999         FT_NONE, BASE_NONE, NULL, 0,
1000         "s4406.ExemptedAddressSeq", HFILL }},
1001     { &hf_s4406_ExemptedAddress_PDU,
1002       { "ExemptedAddress", "s4406.ExemptedAddress",
1003         FT_NONE, BASE_NONE, NULL, 0,
1004         "s4406.ExemptedAddress", HFILL }},
1005     { &hf_s4406_ExtendedAuthorisationInfo_PDU,
1006       { "ExtendedAuthorisationInfo", "s4406.ExtendedAuthorisationInfo",
1007         FT_STRING, BASE_NONE, NULL, 0,
1008         "s4406.ExtendedAuthorisationInfo", HFILL }},
1009     { &hf_s4406_DistributionCodes_PDU,
1010       { "DistributionCodes", "s4406.DistributionCodes",
1011         FT_NONE, BASE_NONE, NULL, 0,
1012         "s4406.DistributionCodes", HFILL }},
1013     { &hf_s4406_HandlingInstructions_PDU,
1014       { "HandlingInstructions", "s4406.HandlingInstructions",
1015         FT_UINT32, BASE_DEC, NULL, 0,
1016         "s4406.HandlingInstructions", HFILL }},
1017     { &hf_s4406_MessageInstructions_PDU,
1018       { "MessageInstructions", "s4406.MessageInstructions",
1019         FT_UINT32, BASE_DEC, NULL, 0,
1020         "s4406.MessageInstructions", HFILL }},
1021     { &hf_s4406_CodressMessage_PDU,
1022       { "CodressMessage", "s4406.CodressMessage",
1023         FT_INT32, BASE_DEC, NULL, 0,
1024         "s4406.CodressMessage", HFILL }},
1025     { &hf_s4406_OriginatorReference_PDU,
1026       { "OriginatorReference", "s4406.OriginatorReference",
1027         FT_STRING, BASE_NONE, NULL, 0,
1028         "s4406.OriginatorReference", HFILL }},
1029     { &hf_s4406_PrimaryPrecedence_PDU,
1030       { "PrimaryPrecedence", "s4406.PrimaryPrecedence",
1031         FT_INT32, BASE_DEC, VALS(s4406_PrimaryPrecedence_vals), 0,
1032         "s4406.PrimaryPrecedence", HFILL }},
1033     { &hf_s4406_CopyPrecedence_PDU,
1034       { "CopyPrecedence", "s4406.CopyPrecedence",
1035         FT_INT32, BASE_DEC, VALS(s4406_CopyPrecedence_vals), 0,
1036         "s4406.CopyPrecedence", HFILL }},
1037     { &hf_s4406_MessageType_PDU,
1038       { "MessageType", "s4406.MessageType",
1039         FT_NONE, BASE_NONE, NULL, 0,
1040         "s4406.MessageType", HFILL }},
1041     { &hf_s4406_AddressListDesignatorSeq_PDU,
1042       { "AddressListDesignatorSeq", "s4406.AddressListDesignatorSeq",
1043         FT_UINT32, BASE_DEC, NULL, 0,
1044         "s4406.AddressListDesignatorSeq", HFILL }},
1045     { &hf_s4406_AddressListDesignator_PDU,
1046       { "AddressListDesignator", "s4406.AddressListDesignator",
1047         FT_NONE, BASE_NONE, NULL, 0,
1048         "s4406.AddressListDesignator", HFILL }},
1049     { &hf_s4406_OtherRecipientDesignatorSeq_PDU,
1050       { "OtherRecipientDesignatorSeq", "s4406.OtherRecipientDesignatorSeq",
1051         FT_UINT32, BASE_DEC, NULL, 0,
1052         "s4406.OtherRecipientDesignatorSeq", HFILL }},
1053     { &hf_s4406_OtherRecipientDesignator_PDU,
1054       { "OtherRecipientDesignator", "s4406.OtherRecipientDesignator",
1055         FT_NONE, BASE_NONE, NULL, 0,
1056         "s4406.OtherRecipientDesignator", HFILL }},
1057     { &hf_s4406_PilotInformationSeq_PDU,
1058       { "PilotInformationSeq", "s4406.PilotInformationSeq",
1059         FT_UINT32, BASE_DEC, NULL, 0,
1060         "s4406.PilotInformationSeq", HFILL }},
1061     { &hf_s4406_PilotInformation_PDU,
1062       { "PilotInformation", "s4406.PilotInformation",
1063         FT_NONE, BASE_NONE, NULL, 0,
1064         "s4406.PilotInformation", HFILL }},
1065     { &hf_s4406_Acp127MessageIdentifier_PDU,
1066       { "Acp127MessageIdentifier", "s4406.Acp127MessageIdentifier",
1067         FT_STRING, BASE_NONE, NULL, 0,
1068         "s4406.Acp127MessageIdentifier", HFILL }},
1069     { &hf_s4406_OriginatorPlad_PDU,
1070       { "OriginatorPlad", "s4406.OriginatorPlad",
1071         FT_STRING, BASE_NONE, NULL, 0,
1072         "s4406.OriginatorPlad", HFILL }},
1073     { &hf_s4406_Acp127NotificationType_PDU,
1074       { "Acp127NotificationType", "s4406.Acp127NotificationType",
1075         FT_BYTES, BASE_HEX, NULL, 0,
1076         "s4406.Acp127NotificationType", HFILL }},
1077     { &hf_s4406_SecurityInformationLabels_PDU,
1078       { "SecurityInformationLabels", "s4406.SecurityInformationLabels",
1079         FT_NONE, BASE_NONE, NULL, 0,
1080         "s4406.SecurityInformationLabels", HFILL }},
1081     { &hf_s4406_PriorityLevelQualifier_PDU,
1082       { "PriorityLevelQualifier", "s4406.PriorityLevelQualifier",
1083         FT_UINT32, BASE_DEC, VALS(s4406_PriorityLevelQualifier_vals), 0,
1084         "s4406.PriorityLevelQualifier", HFILL }},
1085     { &hf_s4406_mm,
1086       { "mm", "s4406.mm",
1087         FT_NONE, BASE_NONE, NULL, 0,
1088         "x420.IPM", HFILL }},
1089     { &hf_s4406_mn,
1090       { "mn", "s4406.mn",
1091         FT_NONE, BASE_NONE, NULL, 0,
1092         "x420.IPN", HFILL }},
1093     { &hf_s4406_sics,
1094       { "sics", "s4406.sics",
1095         FT_UINT32, BASE_DEC, NULL, 0,
1096         "s4406.SEQUENCE_OF_Sic", HFILL }},
1097     { &hf_s4406_sics_item,
1098       { "Item", "s4406.sics_item",
1099         FT_STRING, BASE_NONE, NULL, 0,
1100         "s4406.Sic", HFILL }},
1101     { &hf_s4406_dist_Extensions,
1102       { "dist-Extensions", "s4406.dist_Extensions",
1103         FT_UINT32, BASE_DEC, NULL, 0,
1104         "s4406.SEQUENCE_OF_DistributionExtensionField", HFILL }},
1105     { &hf_s4406_dist_Extensions_item,
1106       { "Item", "s4406.dist_Extensions_item",
1107         FT_NONE, BASE_NONE, NULL, 0,
1108         "s4406.DistributionExtensionField", HFILL }},
1109     { &hf_s4406_dist_type,
1110       { "dist-type", "s4406.dist_type",
1111         FT_OID, BASE_NONE, NULL, 0,
1112         "s4406.OBJECT_IDENTIFIER", HFILL }},
1113     { &hf_s4406_dist_value,
1114       { "dist-value", "s4406.dist_value",
1115         FT_NONE, BASE_NONE, NULL, 0,
1116         "s4406.T_dist_value", HFILL }},
1117     { &hf_s4406_HandlingInstructions_item,
1118       { "Item", "s4406.HandlingInstructions_item",
1119         FT_STRING, BASE_NONE, NULL, 0,
1120         "s4406.MilitaryString", HFILL }},
1121     { &hf_s4406_MessageInstructions_item,
1122       { "Item", "s4406.MessageInstructions_item",
1123         FT_STRING, BASE_NONE, NULL, 0,
1124         "s4406.MilitaryString", HFILL }},
1125     { &hf_s4406_message_type_type,
1126       { "type", "s4406.type",
1127         FT_INT32, BASE_DEC, VALS(s4406_TypeMessage_vals), 0,
1128         "s4406.TypeMessage", HFILL }},
1129     { &hf_s4406_identifier,
1130       { "identifier", "s4406.identifier",
1131         FT_STRING, BASE_NONE, NULL, 0,
1132         "s4406.MessageIdentifier", HFILL }},
1133     { &hf_s4406_AddressListDesignatorSeq_item,
1134       { "Item", "s4406.AddressListDesignatorSeq_item",
1135         FT_NONE, BASE_NONE, NULL, 0,
1136         "s4406.AddressListDesignator", HFILL }},
1137     { &hf_s4406_address_list_type,
1138       { "type", "s4406.type",
1139         FT_INT32, BASE_DEC, VALS(s4406_AddressListType_vals), 0,
1140         "s4406.AddressListType", HFILL }},
1141     { &hf_s4406_listName,
1142       { "listName", "s4406.listName",
1143         FT_NONE, BASE_NONE, NULL, 0,
1144         "x420.ORDescriptor", HFILL }},
1145     { &hf_s4406_notificationRequest,
1146       { "notificationRequest", "s4406.notificationRequest",
1147         FT_INT32, BASE_DEC, VALS(s4406_AddressListRequest_vals), 0,
1148         "s4406.AddressListRequest", HFILL }},
1149     { &hf_s4406_replyRequest,
1150       { "replyRequest", "s4406.replyRequest",
1151         FT_INT32, BASE_DEC, VALS(s4406_AddressListRequest_vals), 0,
1152         "s4406.AddressListRequest", HFILL }},
1153     { &hf_s4406_OtherRecipientDesignatorSeq_item,
1154       { "Item", "s4406.OtherRecipientDesignatorSeq_item",
1155         FT_NONE, BASE_NONE, NULL, 0,
1156         "s4406.OtherRecipientDesignator", HFILL }},
1157     { &hf_s4406_other_recipient_type,
1158       { "type", "s4406.type",
1159         FT_INT32, BASE_DEC, VALS(s4406_OtherRecipientType_vals), 0,
1160         "s4406.OtherRecipientType", HFILL }},
1161     { &hf_s4406_designator,
1162       { "designator", "s4406.designator",
1163         FT_STRING, BASE_NONE, NULL, 0,
1164         "s4406.MilitaryString", HFILL }},
1165     { &hf_s4406_PilotInformationSeq_item,
1166       { "Item", "s4406.PilotInformationSeq_item",
1167         FT_NONE, BASE_NONE, NULL, 0,
1168         "s4406.PilotInformation", HFILL }},
1169     { &hf_s4406_pilotPrecedence,
1170       { "pilotPrecedence", "s4406.pilotPrecedence",
1171         FT_INT32, BASE_DEC, VALS(s4406_PilotPrecedence_vals), 0,
1172         "s4406.PilotPrecedence", HFILL }},
1173     { &hf_s4406_pilotRecipient,
1174       { "pilotRecipient", "s4406.pilotRecipient",
1175         FT_UINT32, BASE_DEC, NULL, 0,
1176         "s4406.SEQUENCE_OF_ORDescriptor", HFILL }},
1177     { &hf_s4406_pilotRecipient_item,
1178       { "Item", "s4406.pilotRecipient_item",
1179         FT_NONE, BASE_NONE, NULL, 0,
1180         "x420.ORDescriptor", HFILL }},
1181     { &hf_s4406_pilotSecurity,
1182       { "pilotSecurity", "s4406.pilotSecurity",
1183         FT_NONE, BASE_NONE, NULL, 0,
1184         "x411.SecurityLabel", HFILL }},
1185     { &hf_s4406_pilotHandling,
1186       { "pilotHandling", "s4406.pilotHandling",
1187         FT_UINT32, BASE_DEC, NULL, 0,
1188         "s4406.SEQUENCE_OF_MilitaryString", HFILL }},
1189     { &hf_s4406_pilotHandling_item,
1190       { "Item", "s4406.pilotHandling_item",
1191         FT_STRING, BASE_NONE, NULL, 0,
1192         "s4406.MilitaryString", HFILL }},
1193     { &hf_s4406_content_security_label,
1194       { "content-security-label", "s4406.content_security_label",
1195         FT_NONE, BASE_NONE, NULL, 0,
1196         "x411.SecurityLabel", HFILL }},
1197     { &hf_s4406_heading_security_label,
1198       { "heading-security-label", "s4406.heading_security_label",
1199         FT_NONE, BASE_NONE, NULL, 0,
1200         "x411.SecurityLabel", HFILL }},
1201     { &hf_s4406_body_part_security_labels,
1202       { "body-part-security-labels", "s4406.body_part_security_labels",
1203         FT_UINT32, BASE_DEC, NULL, 0,
1204         "s4406.SEQUENCE_OF_BodyPartSecurityLabel", HFILL }},
1205     { &hf_s4406_body_part_security_labels_item,
1206       { "Item", "s4406.body_part_security_labels_item",
1207         FT_NONE, BASE_NONE, NULL, 0,
1208         "s4406.BodyPartSecurityLabel", HFILL }},
1209     { &hf_s4406_body_part_security_label,
1210       { "body-part-security-label", "s4406.body_part_security_label",
1211         FT_NONE, BASE_NONE, NULL, 0,
1212         "x411.SecurityLabel", HFILL }},
1213     { &hf_s4406_body_part_sequence_number,
1214       { "body-part-sequence-number", "s4406.body_part_sequence_number",
1215         FT_INT32, BASE_DEC, NULL, 0,
1216         "s4406.BodyPartSequenceNumber", HFILL }},
1217     { &hf_s4406_Acp127NotificationType_negative,
1218       { "negative", "s4406.negative",
1219         FT_BOOLEAN, 8, NULL, 0x80,
1220         "", HFILL }},
1221     { &hf_s4406_Acp127NotificationType_positive,
1222       { "positive", "s4406.positive",
1223         FT_BOOLEAN, 8, NULL, 0x40,
1224         "", HFILL }},
1225     { &hf_s4406_Acp127NotificationType_transfer,
1226       { "transfer", "s4406.transfer",
1227         FT_BOOLEAN, 8, NULL, 0x20,
1228         "", HFILL }},
1229
1230 /*--- End of included file: packet-s4406-hfarr.c ---*/
1231 #line 93 "packet-s4406-template.c"
1232   };
1233
1234   /* List of subtrees */
1235   static gint *ett[] = {
1236     &ett_s4406,
1237
1238 /*--- Included file: packet-s4406-ettarr.c ---*/
1239 #line 1 "packet-s4406-ettarr.c"
1240     &ett_s4406_InformationObject,
1241     &ett_s4406_DistributionCodes,
1242     &ett_s4406_SEQUENCE_OF_Sic,
1243     &ett_s4406_SEQUENCE_OF_DistributionExtensionField,
1244     &ett_s4406_DistributionExtensionField,
1245     &ett_s4406_HandlingInstructions,
1246     &ett_s4406_MessageInstructions,
1247     &ett_s4406_MessageType,
1248     &ett_s4406_AddressListDesignatorSeq,
1249     &ett_s4406_AddressListDesignator,
1250     &ett_s4406_OtherRecipientDesignatorSeq,
1251     &ett_s4406_OtherRecipientDesignator,
1252     &ett_s4406_PilotInformationSeq,
1253     &ett_s4406_PilotInformation,
1254     &ett_s4406_SEQUENCE_OF_ORDescriptor,
1255     &ett_s4406_SEQUENCE_OF_MilitaryString,
1256     &ett_s4406_Acp127NotificationType,
1257     &ett_s4406_SecurityInformationLabels,
1258     &ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel,
1259     &ett_s4406_BodyPartSecurityLabel,
1260
1261 /*--- End of included file: packet-s4406-ettarr.c ---*/
1262 #line 99 "packet-s4406-template.c"
1263   };
1264
1265   /* Register protocol */
1266   proto_s4406 = proto_register_protocol(PNAME, PSNAME, PFNAME);
1267
1268   /* Register fields and subtrees */
1269   proto_register_field_array(proto_s4406, hf, array_length(hf));
1270   proto_register_subtree_array(ett, array_length(ett));
1271
1272 }
1273
1274
1275 /*--- proto_reg_handoff_s4406 --- */
1276 void proto_reg_handoff_s4406(void) {
1277
1278 /*--- Included file: packet-s4406-dis-tab.c ---*/
1279 #line 1 "packet-s4406-dis-tab.c"
1280   register_ber_oid_dissector("1.3.26.0.4406.0.2.0", dissect_PrimaryPrecedence_PDU, proto_s4406, "primary-precedence");
1281   register_ber_oid_dissector("1.3.26.0.4406.0.2.1", dissect_CopyPrecedence_PDU, proto_s4406, "copy-precedence");
1282   register_ber_oid_dissector("1.3.26.0.4406.0.2.2", dissect_MessageType_PDU, proto_s4406, "message-type");
1283   register_ber_oid_dissector("1.3.26.0.4406.0.2.3", dissect_AddressListDesignatorSeq_PDU, proto_s4406, "address-list-indicator");
1284   register_ber_oid_dissector("1.3.26.0.4406.0.2.4", dissect_ExemptedAddressSeq_PDU, proto_s4406, "exempted-address");
1285   register_ber_oid_dissector("1.3.26.0.4406.0.2.5", dissect_ExtendedAuthorisationInfo_PDU, proto_s4406, "extended-authorisation-info");
1286   register_ber_oid_dissector("1.3.26.0.4406.0.2.6", dissect_DistributionCodes_PDU, proto_s4406, "distribution-codes");
1287   register_ber_oid_dissector("1.3.26.0.4406.0.2.7", dissect_HandlingInstructions_PDU, proto_s4406, "handling-instructions");
1288   register_ber_oid_dissector("1.3.26.0.4406.0.2.8", dissect_MessageInstructions_PDU, proto_s4406, "message-instructions");
1289   register_ber_oid_dissector("1.3.26.0.4406.0.2.9", dissect_CodressMessage_PDU, proto_s4406, "codress-message");
1290   register_ber_oid_dissector("1.3.26.0.4406.0.2.10", dissect_OriginatorReference_PDU, proto_s4406, "originator-reference");
1291   register_ber_oid_dissector("1.3.26.0.4406.0.2.11", dissect_OtherRecipientDesignatorSeq_PDU, proto_s4406, "other-recipients-indicator");
1292   register_ber_oid_dissector("1.3.26.0.4406.0.2.12", dissect_PilotInformationSeq_PDU, proto_s4406, "pilot-forwarding-info");
1293   register_ber_oid_dissector("1.3.26.0.4406.0.2.13", dissect_Acp127MessageIdentifier_PDU, proto_s4406, "acp127-message-identifier");
1294   register_ber_oid_dissector("1.3.26.0.4406.0.2.14", dissect_OriginatorPlad_PDU, proto_s4406, "originator-plad");
1295   register_ber_oid_dissector("1.3.26.0.4406.0.2.15", dissect_Acp127NotificationType_PDU, proto_s4406, "acp127-notification-request");
1296   register_ber_oid_dissector("1.3.26.0.4406.0.2.17", dissect_SecurityInformationLabels_PDU, proto_s4406, "information-labels");
1297   register_ber_oid_dissector("1.3.26.0.4406.0.8.0", dissect_PriorityLevelQualifier_PDU, proto_s4406, "priority-level-qualifier");
1298   register_ber_oid_dissector("1.3.26.0.4406.0.7.9", dissect_MMMessageData_PDU, proto_s4406, "mm-message");
1299   register_ber_oid_dissector("1.3.26.0.4406.0.7.10", dissect_MMMessageParameters_PDU, proto_s4406, "mm-message-parameters");
1300   register_ber_oid_dissector("2.6.1.4.17.1.3.26.0.4406.0.4.1", dissect_InformationObject_PDU, proto_s4406, "id-et-content-p772");
1301
1302
1303 /*--- End of included file: packet-s4406-dis-tab.c ---*/
1304 #line 114 "packet-s4406-template.c"
1305
1306   register_ber_oid_dissector("1.3.26.0.4406.0.4.1", dissect_s4406, proto_s4406, "Military Message");
1307
1308   register_ber_syntax_dissector("MilitaryMessage", proto_s4406, dissect_s4406); 
1309   register_ber_oid_syntax(".p772", NULL, "MilitaryMessage");
1310
1311 }