1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler */
4 /* ../../tools/asn2eth.py -X -b -e -p s4406 -c s4406.cnf -s packet-s4406-template s4406.asn */
6 /* Input file: packet-s4406-template.c */
8 #line 1 "packet-s4406-template.c"
10 * Routines for STANAG 4406 (X.400 Military Message Extensions) packet dissection
15 * Ethereal - Network traffic analyzer
16 * By Gerald Combs <gerald@ethereal.com>
17 * Copyright 1998 Gerald Combs
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.
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.
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.
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
45 #include "packet-ber.h"
47 #include "packet-x509if.h"
49 #include "packet-s4406.h"
50 #include "packet-x411.h"
51 #include "packet-x420.h"
53 #define PNAME "STANAG 4406 Military Message"
54 #define PSNAME "STANAG 4406"
55 #define PFNAME "s4406"
57 /* Initialize the protocol and registered fields */
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_SecurityInformationLabels_PDU = -1; /* SecurityInformationLabels */
86 static int hf_s4406_PriorityLevelQualifier_PDU = -1; /* PriorityLevelQualifier */
87 static int hf_s4406_mm = -1; /* IPM */
88 static int hf_s4406_mn = -1; /* IPN */
89 static int hf_s4406_sics = -1; /* SEQUENCE_OF_Sic */
90 static int hf_s4406_sics_item = -1; /* Sic */
91 static int hf_s4406_dist_Extensions = -1; /* SEQUENCE_OF_DistributionExtensionField */
92 static int hf_s4406_dist_Extensions_item = -1; /* DistributionExtensionField */
93 static int hf_s4406_dist_type = -1; /* OBJECT_IDENTIFIER */
94 static int hf_s4406_dist_value = -1; /* T_dist_value */
95 static int hf_s4406_HandlingInstructions_item = -1; /* MilitaryString */
96 static int hf_s4406_MessageInstructions_item = -1; /* MilitaryString */
97 static int hf_s4406_message_type_type = -1; /* TypeMessage */
98 static int hf_s4406_identifier = -1; /* MessageIdentifier */
99 static int hf_s4406_AddressListDesignatorSeq_item = -1; /* AddressListDesignator */
100 static int hf_s4406_address_list_type = -1; /* AddressListType */
101 static int hf_s4406_listName = -1; /* ORDescriptor */
102 static int hf_s4406_notificationRequest = -1; /* AddressListRequest */
103 static int hf_s4406_replyRequest = -1; /* AddressListRequest */
104 static int hf_s4406_OtherRecipientDesignatorSeq_item = -1; /* OtherRecipientDesignator */
105 static int hf_s4406_other_recipient_type = -1; /* OtherRecipientType */
106 static int hf_s4406_designator = -1; /* MilitaryString */
107 static int hf_s4406_PilotInformationSeq_item = -1; /* PilotInformation */
108 static int hf_s4406_pilotPrecedence = -1; /* PilotPrecedence */
109 static int hf_s4406_pilotRecipient = -1; /* SEQUENCE_OF_ORDescriptor */
110 static int hf_s4406_pilotRecipient_item = -1; /* ORDescriptor */
111 static int hf_s4406_pilotSecurity = -1; /* SecurityLabel */
112 static int hf_s4406_pilotHandling = -1; /* SEQUENCE_OF_MilitaryString */
113 static int hf_s4406_pilotHandling_item = -1; /* MilitaryString */
114 static int hf_s4406_content_security_label = -1; /* SecurityLabel */
115 static int hf_s4406_heading_security_label = -1; /* SecurityLabel */
116 static int hf_s4406_body_part_security_labels = -1; /* SEQUENCE_OF_BodyPartSecurityLabel */
117 static int hf_s4406_body_part_security_labels_item = -1; /* BodyPartSecurityLabel */
118 static int hf_s4406_body_part_security_label = -1; /* SecurityLabel */
119 static int hf_s4406_body_part_sequence_number = -1; /* BodyPartSequenceNumber */
121 /*--- End of included file: packet-s4406-hf.c ---*/
122 #line 53 "packet-s4406-template.c"
124 /* Initialize the subtree pointers */
125 static gint ett_s4406 = -1;
127 /*--- Included file: packet-s4406-ett.c ---*/
128 #line 1 "packet-s4406-ett.c"
129 static gint ett_s4406_InformationObject = -1;
130 static gint ett_s4406_DistributionCodes = -1;
131 static gint ett_s4406_SEQUENCE_OF_Sic = -1;
132 static gint ett_s4406_SEQUENCE_OF_DistributionExtensionField = -1;
133 static gint ett_s4406_DistributionExtensionField = -1;
134 static gint ett_s4406_HandlingInstructions = -1;
135 static gint ett_s4406_MessageInstructions = -1;
136 static gint ett_s4406_MessageType = -1;
137 static gint ett_s4406_AddressListDesignatorSeq = -1;
138 static gint ett_s4406_AddressListDesignator = -1;
139 static gint ett_s4406_OtherRecipientDesignatorSeq = -1;
140 static gint ett_s4406_OtherRecipientDesignator = -1;
141 static gint ett_s4406_PilotInformationSeq = -1;
142 static gint ett_s4406_PilotInformation = -1;
143 static gint ett_s4406_SEQUENCE_OF_ORDescriptor = -1;
144 static gint ett_s4406_SEQUENCE_OF_MilitaryString = -1;
145 static gint ett_s4406_SecurityInformationLabels = -1;
146 static gint ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel = -1;
147 static gint ett_s4406_BodyPartSecurityLabel = -1;
149 /*--- End of included file: packet-s4406-ett.c ---*/
150 #line 57 "packet-s4406-template.c"
153 /*--- Included file: packet-s4406-fn.c ---*/
154 #line 1 "packet-s4406-fn.c"
155 /*--- Fields for imported types ---*/
157 static int dissect_mm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
158 return dissect_x420_IPM(TRUE, tvb, offset, pinfo, tree, hf_s4406_mm);
160 static int dissect_mn_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
161 return dissect_x420_IPN(TRUE, tvb, offset, pinfo, tree, hf_s4406_mn);
163 static int dissect_listName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
164 return dissect_x420_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_s4406_listName);
166 static int dissect_pilotRecipient_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
167 return dissect_x420_ORDescriptor(FALSE, tvb, offset, pinfo, tree, hf_s4406_pilotRecipient_item);
169 static int dissect_pilotSecurity_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
170 return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotSecurity);
172 static int dissect_content_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
173 return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_content_security_label);
175 static int dissect_heading_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
176 return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_heading_security_label);
178 static int dissect_body_part_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
179 return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_label);
183 static const value_string s4406_InformationObject_vals[] = {
189 static const ber_choice_t InformationObject_choice[] = {
190 { 0, BER_CLASS_CON, 0, 0, dissect_mm_impl },
191 { 1, BER_CLASS_CON, 1, 0, dissect_mn_impl },
196 dissect_s4406_InformationObject(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
197 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
198 InformationObject_choice, hf_index, ett_s4406_InformationObject,
207 dissect_s4406_MMMessageData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
208 offset = dissect_x420_IPM(implicit_tag, tvb, offset, pinfo, tree, hf_index);
216 dissect_s4406_MMMessageParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
217 offset = dissect_x420_MessageParameters(implicit_tag, tvb, offset, pinfo, tree, hf_index);
225 dissect_s4406_ExemptedAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
226 offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, pinfo, tree, hf_index);
234 dissect_s4406_ExemptedAddressSeq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
235 offset = dissect_s4406_ExemptedAddress(implicit_tag, tvb, offset, pinfo, tree, hf_index);
243 dissect_s4406_ExtendedAuthorisationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
244 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
245 pinfo, tree, tvb, offset, hf_index,
254 dissect_s4406_Sic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
255 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
256 pinfo, tree, tvb, offset, hf_index,
261 static int dissect_sics_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
262 return dissect_s4406_Sic(FALSE, tvb, offset, pinfo, tree, hf_s4406_sics_item);
266 static const ber_sequence_t SEQUENCE_OF_Sic_sequence_of[1] = {
267 { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_sics_item },
271 dissect_s4406_SEQUENCE_OF_Sic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
272 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
273 SEQUENCE_OF_Sic_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_Sic);
277 static int dissect_sics_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
278 return dissect_s4406_SEQUENCE_OF_Sic(TRUE, tvb, offset, pinfo, tree, hf_s4406_sics);
284 dissect_s4406_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
285 offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
289 static int dissect_dist_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
290 return dissect_s4406_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_type);
296 dissect_s4406_T_dist_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
298 /* XXX: not implemented */
304 static int dissect_dist_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
305 return dissect_s4406_T_dist_value(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_value);
309 static const ber_sequence_t DistributionExtensionField_sequence[] = {
310 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_dist_type },
311 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_dist_value },
316 dissect_s4406_DistributionExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
317 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
318 DistributionExtensionField_sequence, hf_index, ett_s4406_DistributionExtensionField);
322 static int dissect_dist_Extensions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
323 return dissect_s4406_DistributionExtensionField(FALSE, tvb, offset, pinfo, tree, hf_s4406_dist_Extensions_item);
327 static const ber_sequence_t SEQUENCE_OF_DistributionExtensionField_sequence_of[1] = {
328 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_dist_Extensions_item },
332 dissect_s4406_SEQUENCE_OF_DistributionExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
333 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
334 SEQUENCE_OF_DistributionExtensionField_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_DistributionExtensionField);
338 static int dissect_dist_Extensions_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
339 return dissect_s4406_SEQUENCE_OF_DistributionExtensionField(TRUE, tvb, offset, pinfo, tree, hf_s4406_dist_Extensions);
343 static const ber_sequence_t DistributionCodes_set[] = {
344 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sics_impl },
345 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_dist_Extensions_impl },
350 dissect_s4406_DistributionCodes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
351 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
352 DistributionCodes_set, hf_index, ett_s4406_DistributionCodes);
360 dissect_s4406_MilitaryString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
361 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
362 pinfo, tree, tvb, offset, hf_index,
367 static int dissect_HandlingInstructions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
368 return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_HandlingInstructions_item);
370 static int dissect_MessageInstructions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
371 return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_MessageInstructions_item);
373 static int dissect_designator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
374 return dissect_s4406_MilitaryString(TRUE, tvb, offset, pinfo, tree, hf_s4406_designator);
376 static int dissect_pilotHandling_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
377 return dissect_s4406_MilitaryString(FALSE, tvb, offset, pinfo, tree, hf_s4406_pilotHandling_item);
381 static const ber_sequence_t HandlingInstructions_sequence_of[1] = {
382 { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_HandlingInstructions_item },
386 dissect_s4406_HandlingInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
387 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
388 HandlingInstructions_sequence_of, hf_index, ett_s4406_HandlingInstructions);
394 static const ber_sequence_t MessageInstructions_sequence_of[1] = {
395 { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_MessageInstructions_item },
399 dissect_s4406_MessageInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
400 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
401 MessageInstructions_sequence_of, hf_index, ett_s4406_MessageInstructions);
409 dissect_s4406_CodressMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
410 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
419 dissect_s4406_OriginatorReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
420 offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
426 static const value_string s4406_PrimaryPrecedence_vals[] = {
441 dissect_s4406_PrimaryPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
444 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
447 if((precedence != -1) && check_col(pinfo->cinfo, COL_INFO))
448 col_append_fstr(pinfo->cinfo, COL_INFO, " (primary=%s)", val_to_str(precedence, s4406_PrimaryPrecedence_vals, "precedence(%d)"));
456 static const value_string s4406_CopyPrecedence_vals[] = {
471 dissect_s4406_CopyPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
474 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
477 if((precedence != -1) && check_col(pinfo->cinfo, COL_INFO))
478 col_append_fstr(pinfo->cinfo, COL_INFO, " (copy=%s)", val_to_str(precedence, s4406_CopyPrecedence_vals, "precedence(%d)"));
485 static const value_string s4406_TypeMessage_vals[] = {
495 dissect_s4406_TypeMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
496 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
501 static int dissect_message_type_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
502 return dissect_s4406_TypeMessage(TRUE, tvb, offset, pinfo, tree, hf_s4406_message_type_type);
508 dissect_s4406_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
509 offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
513 static int dissect_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
514 return dissect_s4406_MessageIdentifier(TRUE, tvb, offset, pinfo, tree, hf_s4406_identifier);
518 static const ber_sequence_t MessageType_set[] = {
519 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_message_type_type_impl },
520 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_identifier_impl },
525 dissect_s4406_MessageType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
526 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
527 MessageType_set, hf_index, ett_s4406_MessageType);
533 static const value_string s4406_AddressListType_vals[] = {
534 { 0, "primaryAddressList" },
535 { 1, "copyAddressList" },
541 dissect_s4406_AddressListType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
542 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
547 static int dissect_address_list_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
548 return dissect_s4406_AddressListType(TRUE, tvb, offset, pinfo, tree, hf_s4406_address_list_type);
552 static const value_string s4406_AddressListRequest_vals[] = {
561 dissect_s4406_AddressListRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
562 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
567 static int dissect_notificationRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
568 return dissect_s4406_AddressListRequest(TRUE, tvb, offset, pinfo, tree, hf_s4406_notificationRequest);
570 static int dissect_replyRequest_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
571 return dissect_s4406_AddressListRequest(TRUE, tvb, offset, pinfo, tree, hf_s4406_replyRequest);
575 static const ber_sequence_t AddressListDesignator_set[] = {
576 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_address_list_type_impl },
577 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_listName_impl },
578 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_notificationRequest_impl },
579 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_replyRequest_impl },
584 dissect_s4406_AddressListDesignator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
585 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
586 AddressListDesignator_set, hf_index, ett_s4406_AddressListDesignator);
590 static int dissect_AddressListDesignatorSeq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
591 return dissect_s4406_AddressListDesignator(FALSE, tvb, offset, pinfo, tree, hf_s4406_AddressListDesignatorSeq_item);
595 static const ber_sequence_t AddressListDesignatorSeq_sequence_of[1] = {
596 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_AddressListDesignatorSeq_item },
600 dissect_s4406_AddressListDesignatorSeq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
601 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
602 AddressListDesignatorSeq_sequence_of, hf_index, ett_s4406_AddressListDesignatorSeq);
608 static const value_string s4406_OtherRecipientType_vals[] = {
616 dissect_s4406_OtherRecipientType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
617 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
622 static int dissect_other_recipient_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
623 return dissect_s4406_OtherRecipientType(TRUE, tvb, offset, pinfo, tree, hf_s4406_other_recipient_type);
627 static const ber_sequence_t OtherRecipientDesignator_set[] = {
628 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_other_recipient_type_impl },
629 { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_designator_impl },
634 dissect_s4406_OtherRecipientDesignator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
635 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
636 OtherRecipientDesignator_set, hf_index, ett_s4406_OtherRecipientDesignator);
640 static int dissect_OtherRecipientDesignatorSeq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
641 return dissect_s4406_OtherRecipientDesignator(FALSE, tvb, offset, pinfo, tree, hf_s4406_OtherRecipientDesignatorSeq_item);
645 static const ber_sequence_t OtherRecipientDesignatorSeq_sequence_of[1] = {
646 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_OtherRecipientDesignatorSeq_item },
650 dissect_s4406_OtherRecipientDesignatorSeq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
651 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
652 OtherRecipientDesignatorSeq_sequence_of, hf_index, ett_s4406_OtherRecipientDesignatorSeq);
658 static const value_string s4406_PilotPrecedence_vals[] = {
673 dissect_s4406_PilotPrecedence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
674 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
679 static int dissect_pilotPrecedence_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
680 return dissect_s4406_PilotPrecedence(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotPrecedence);
684 static const ber_sequence_t SEQUENCE_OF_ORDescriptor_sequence_of[1] = {
685 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_pilotRecipient_item },
689 dissect_s4406_SEQUENCE_OF_ORDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
690 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
691 SEQUENCE_OF_ORDescriptor_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_ORDescriptor);
695 static int dissect_pilotRecipient_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
696 return dissect_s4406_SEQUENCE_OF_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotRecipient);
700 static const ber_sequence_t SEQUENCE_OF_MilitaryString_sequence_of[1] = {
701 { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_pilotHandling_item },
705 dissect_s4406_SEQUENCE_OF_MilitaryString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
706 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
707 SEQUENCE_OF_MilitaryString_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_MilitaryString);
711 static int dissect_pilotHandling_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
712 return dissect_s4406_SEQUENCE_OF_MilitaryString(TRUE, tvb, offset, pinfo, tree, hf_s4406_pilotHandling);
716 static const ber_sequence_t PilotInformation_sequence[] = {
717 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotPrecedence_impl },
718 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotRecipient_impl },
719 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotSecurity_impl },
720 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pilotHandling_impl },
725 dissect_s4406_PilotInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
726 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
727 PilotInformation_sequence, hf_index, ett_s4406_PilotInformation);
731 static int dissect_PilotInformationSeq_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
732 return dissect_s4406_PilotInformation(FALSE, tvb, offset, pinfo, tree, hf_s4406_PilotInformationSeq_item);
736 static const ber_sequence_t PilotInformationSeq_sequence_of[1] = {
737 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_PilotInformationSeq_item },
741 dissect_s4406_PilotInformationSeq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
742 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
743 PilotInformationSeq_sequence_of, hf_index, ett_s4406_PilotInformationSeq);
751 dissect_s4406_Acp127MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
752 offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
760 dissect_s4406_OriginatorPlad(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
761 offset = dissect_s4406_MilitaryString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
769 dissect_s4406_BodyPartSequenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
770 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
775 static int dissect_body_part_sequence_number_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
776 return dissect_s4406_BodyPartSequenceNumber(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_sequence_number);
780 static const ber_sequence_t BodyPartSecurityLabel_set[] = {
781 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_body_part_security_label_impl },
782 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_body_part_sequence_number_impl },
787 dissect_s4406_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
788 offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
789 BodyPartSecurityLabel_set, hf_index, ett_s4406_BodyPartSecurityLabel);
793 static int dissect_body_part_security_labels_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
794 return dissect_s4406_BodyPartSecurityLabel(FALSE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_labels_item);
798 static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = {
799 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_body_part_security_labels_item },
803 dissect_s4406_SEQUENCE_OF_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
804 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
805 SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel);
809 static int dissect_body_part_security_labels_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
810 return dissect_s4406_SEQUENCE_OF_BodyPartSecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_s4406_body_part_security_labels);
814 static const ber_sequence_t SecurityInformationLabels_sequence[] = {
815 { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_content_security_label_impl },
816 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_heading_security_label_impl },
817 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_body_part_security_labels_impl },
822 dissect_s4406_SecurityInformationLabels(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
823 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
824 SecurityInformationLabels_sequence, hf_index, ett_s4406_SecurityInformationLabels);
830 static const value_string s4406_PriorityLevelQualifier_vals[] = {
838 dissect_s4406_PriorityLevelQualifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
839 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
847 static void dissect_InformationObject_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
848 dissect_s4406_InformationObject(FALSE, tvb, 0, pinfo, tree, hf_s4406_InformationObject_PDU);
850 static void dissect_MMMessageData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
851 dissect_s4406_MMMessageData(FALSE, tvb, 0, pinfo, tree, hf_s4406_MMMessageData_PDU);
853 static void dissect_MMMessageParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
854 dissect_s4406_MMMessageParameters(FALSE, tvb, 0, pinfo, tree, hf_s4406_MMMessageParameters_PDU);
856 static void dissect_ExemptedAddressSeq_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
857 dissect_s4406_ExemptedAddressSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExemptedAddressSeq_PDU);
859 static void dissect_ExemptedAddress_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
860 dissect_s4406_ExemptedAddress(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExemptedAddress_PDU);
862 static void dissect_ExtendedAuthorisationInfo_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
863 dissect_s4406_ExtendedAuthorisationInfo(FALSE, tvb, 0, pinfo, tree, hf_s4406_ExtendedAuthorisationInfo_PDU);
865 static void dissect_DistributionCodes_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
866 dissect_s4406_DistributionCodes(FALSE, tvb, 0, pinfo, tree, hf_s4406_DistributionCodes_PDU);
868 static void dissect_HandlingInstructions_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
869 dissect_s4406_HandlingInstructions(FALSE, tvb, 0, pinfo, tree, hf_s4406_HandlingInstructions_PDU);
871 static void dissect_MessageInstructions_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
872 dissect_s4406_MessageInstructions(FALSE, tvb, 0, pinfo, tree, hf_s4406_MessageInstructions_PDU);
874 static void dissect_CodressMessage_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
875 dissect_s4406_CodressMessage(FALSE, tvb, 0, pinfo, tree, hf_s4406_CodressMessage_PDU);
877 static void dissect_OriginatorReference_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
878 dissect_s4406_OriginatorReference(FALSE, tvb, 0, pinfo, tree, hf_s4406_OriginatorReference_PDU);
880 static void dissect_PrimaryPrecedence_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
881 dissect_s4406_PrimaryPrecedence(FALSE, tvb, 0, pinfo, tree, hf_s4406_PrimaryPrecedence_PDU);
883 static void dissect_CopyPrecedence_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
884 dissect_s4406_CopyPrecedence(FALSE, tvb, 0, pinfo, tree, hf_s4406_CopyPrecedence_PDU);
886 static void dissect_MessageType_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
887 dissect_s4406_MessageType(FALSE, tvb, 0, pinfo, tree, hf_s4406_MessageType_PDU);
889 static void dissect_AddressListDesignatorSeq_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
890 dissect_s4406_AddressListDesignatorSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_AddressListDesignatorSeq_PDU);
892 static void dissect_AddressListDesignator_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
893 dissect_s4406_AddressListDesignator(FALSE, tvb, 0, pinfo, tree, hf_s4406_AddressListDesignator_PDU);
895 static void dissect_OtherRecipientDesignatorSeq_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
896 dissect_s4406_OtherRecipientDesignatorSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_OtherRecipientDesignatorSeq_PDU);
898 static void dissect_OtherRecipientDesignator_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
899 dissect_s4406_OtherRecipientDesignator(FALSE, tvb, 0, pinfo, tree, hf_s4406_OtherRecipientDesignator_PDU);
901 static void dissect_PilotInformationSeq_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
902 dissect_s4406_PilotInformationSeq(FALSE, tvb, 0, pinfo, tree, hf_s4406_PilotInformationSeq_PDU);
904 static void dissect_PilotInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
905 dissect_s4406_PilotInformation(FALSE, tvb, 0, pinfo, tree, hf_s4406_PilotInformation_PDU);
907 static void dissect_Acp127MessageIdentifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
908 dissect_s4406_Acp127MessageIdentifier(FALSE, tvb, 0, pinfo, tree, hf_s4406_Acp127MessageIdentifier_PDU);
910 static void dissect_OriginatorPlad_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
911 dissect_s4406_OriginatorPlad(FALSE, tvb, 0, pinfo, tree, hf_s4406_OriginatorPlad_PDU);
913 static void dissect_SecurityInformationLabels_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
914 dissect_s4406_SecurityInformationLabels(FALSE, tvb, 0, pinfo, tree, hf_s4406_SecurityInformationLabels_PDU);
916 static void dissect_PriorityLevelQualifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
917 dissect_s4406_PriorityLevelQualifier(FALSE, tvb, 0, pinfo, tree, hf_s4406_PriorityLevelQualifier_PDU);
921 /*--- End of included file: packet-s4406-fn.c ---*/
922 #line 59 "packet-s4406-template.c"
926 * Dissect STANAG 4406 PDUs inside a PPDU.
929 dissect_s4406(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
932 proto_item *item=NULL;
933 proto_tree *tree=NULL;
936 item = proto_tree_add_item(parent_tree, proto_s4406, tvb, 0, -1, FALSE);
937 tree = proto_item_add_subtree(item, ett_s4406);
940 if (check_col(pinfo->cinfo, COL_PROTOCOL))
941 col_set_str(pinfo->cinfo, COL_PROTOCOL, "S4406");
942 if (check_col(pinfo->cinfo, COL_INFO))
943 col_add_str(pinfo->cinfo, COL_INFO, "Military");
945 dissect_s4406_InformationObject(TRUE, tvb, offset, pinfo , tree, -1);
950 /*--- proto_register_s4406 -------------------------------------------*/
951 void proto_register_s4406(void) {
954 static hf_register_info hf[] =
957 /*--- Included file: packet-s4406-hfarr.c ---*/
958 #line 1 "packet-s4406-hfarr.c"
959 { &hf_s4406_InformationObject_PDU,
960 { "InformationObject", "s4406.InformationObject",
961 FT_UINT32, BASE_DEC, VALS(x420_InformationObject_vals), 0,
962 "InformationObject", HFILL }},
963 { &hf_s4406_MMMessageData_PDU,
964 { "MMMessageData", "s4406.MMMessageData",
965 FT_NONE, BASE_NONE, NULL, 0,
966 "MMMessageData", HFILL }},
967 { &hf_s4406_MMMessageParameters_PDU,
968 { "MMMessageParameters", "s4406.MMMessageParameters",
969 FT_NONE, BASE_NONE, NULL, 0,
970 "MMMessageParameters", HFILL }},
971 { &hf_s4406_ExemptedAddressSeq_PDU,
972 { "ExemptedAddressSeq", "s4406.ExemptedAddressSeq",
973 FT_NONE, BASE_NONE, NULL, 0,
974 "ExemptedAddressSeq", HFILL }},
975 { &hf_s4406_ExemptedAddress_PDU,
976 { "ExemptedAddress", "s4406.ExemptedAddress",
977 FT_NONE, BASE_NONE, NULL, 0,
978 "ExemptedAddress", HFILL }},
979 { &hf_s4406_ExtendedAuthorisationInfo_PDU,
980 { "ExtendedAuthorisationInfo", "s4406.ExtendedAuthorisationInfo",
981 FT_STRING, BASE_NONE, NULL, 0,
982 "ExtendedAuthorisationInfo", HFILL }},
983 { &hf_s4406_DistributionCodes_PDU,
984 { "DistributionCodes", "s4406.DistributionCodes",
985 FT_NONE, BASE_NONE, NULL, 0,
986 "DistributionCodes", HFILL }},
987 { &hf_s4406_HandlingInstructions_PDU,
988 { "HandlingInstructions", "s4406.HandlingInstructions",
989 FT_UINT32, BASE_DEC, NULL, 0,
990 "HandlingInstructions", HFILL }},
991 { &hf_s4406_MessageInstructions_PDU,
992 { "MessageInstructions", "s4406.MessageInstructions",
993 FT_UINT32, BASE_DEC, NULL, 0,
994 "MessageInstructions", HFILL }},
995 { &hf_s4406_CodressMessage_PDU,
996 { "CodressMessage", "s4406.CodressMessage",
997 FT_INT32, BASE_DEC, NULL, 0,
998 "CodressMessage", HFILL }},
999 { &hf_s4406_OriginatorReference_PDU,
1000 { "OriginatorReference", "s4406.OriginatorReference",
1001 FT_STRING, BASE_NONE, NULL, 0,
1002 "OriginatorReference", HFILL }},
1003 { &hf_s4406_PrimaryPrecedence_PDU,
1004 { "PrimaryPrecedence", "s4406.PrimaryPrecedence",
1005 FT_INT32, BASE_DEC, VALS(s4406_PrimaryPrecedence_vals), 0,
1006 "PrimaryPrecedence", HFILL }},
1007 { &hf_s4406_CopyPrecedence_PDU,
1008 { "CopyPrecedence", "s4406.CopyPrecedence",
1009 FT_INT32, BASE_DEC, VALS(s4406_CopyPrecedence_vals), 0,
1010 "CopyPrecedence", HFILL }},
1011 { &hf_s4406_MessageType_PDU,
1012 { "MessageType", "s4406.MessageType",
1013 FT_NONE, BASE_NONE, NULL, 0,
1014 "MessageType", HFILL }},
1015 { &hf_s4406_AddressListDesignatorSeq_PDU,
1016 { "AddressListDesignatorSeq", "s4406.AddressListDesignatorSeq",
1017 FT_UINT32, BASE_DEC, NULL, 0,
1018 "AddressListDesignatorSeq", HFILL }},
1019 { &hf_s4406_AddressListDesignator_PDU,
1020 { "AddressListDesignator", "s4406.AddressListDesignator",
1021 FT_NONE, BASE_NONE, NULL, 0,
1022 "AddressListDesignator", HFILL }},
1023 { &hf_s4406_OtherRecipientDesignatorSeq_PDU,
1024 { "OtherRecipientDesignatorSeq", "s4406.OtherRecipientDesignatorSeq",
1025 FT_UINT32, BASE_DEC, NULL, 0,
1026 "OtherRecipientDesignatorSeq", HFILL }},
1027 { &hf_s4406_OtherRecipientDesignator_PDU,
1028 { "OtherRecipientDesignator", "s4406.OtherRecipientDesignator",
1029 FT_NONE, BASE_NONE, NULL, 0,
1030 "OtherRecipientDesignator", HFILL }},
1031 { &hf_s4406_PilotInformationSeq_PDU,
1032 { "PilotInformationSeq", "s4406.PilotInformationSeq",
1033 FT_UINT32, BASE_DEC, NULL, 0,
1034 "PilotInformationSeq", HFILL }},
1035 { &hf_s4406_PilotInformation_PDU,
1036 { "PilotInformation", "s4406.PilotInformation",
1037 FT_NONE, BASE_NONE, NULL, 0,
1038 "PilotInformation", HFILL }},
1039 { &hf_s4406_Acp127MessageIdentifier_PDU,
1040 { "Acp127MessageIdentifier", "s4406.Acp127MessageIdentifier",
1041 FT_STRING, BASE_NONE, NULL, 0,
1042 "Acp127MessageIdentifier", HFILL }},
1043 { &hf_s4406_OriginatorPlad_PDU,
1044 { "OriginatorPlad", "s4406.OriginatorPlad",
1045 FT_STRING, BASE_NONE, NULL, 0,
1046 "OriginatorPlad", HFILL }},
1047 { &hf_s4406_SecurityInformationLabels_PDU,
1048 { "SecurityInformationLabels", "s4406.SecurityInformationLabels",
1049 FT_NONE, BASE_NONE, NULL, 0,
1050 "SecurityInformationLabels", HFILL }},
1051 { &hf_s4406_PriorityLevelQualifier_PDU,
1052 { "PriorityLevelQualifier", "s4406.PriorityLevelQualifier",
1053 FT_UINT32, BASE_DEC, VALS(s4406_PriorityLevelQualifier_vals), 0,
1054 "PriorityLevelQualifier", HFILL }},
1057 FT_NONE, BASE_NONE, NULL, 0,
1058 "InformationObject/mm", HFILL }},
1061 FT_NONE, BASE_NONE, NULL, 0,
1062 "InformationObject/mn", HFILL }},
1064 { "sics", "s4406.sics",
1065 FT_UINT32, BASE_DEC, NULL, 0,
1066 "DistributionCodes/sics", HFILL }},
1067 { &hf_s4406_sics_item,
1068 { "Item", "s4406.sics_item",
1069 FT_STRING, BASE_NONE, NULL, 0,
1070 "DistributionCodes/sics/_item", HFILL }},
1071 { &hf_s4406_dist_Extensions,
1072 { "dist-Extensions", "s4406.dist_Extensions",
1073 FT_UINT32, BASE_DEC, NULL, 0,
1074 "DistributionCodes/dist-Extensions", HFILL }},
1075 { &hf_s4406_dist_Extensions_item,
1076 { "Item", "s4406.dist_Extensions_item",
1077 FT_NONE, BASE_NONE, NULL, 0,
1078 "DistributionCodes/dist-Extensions/_item", HFILL }},
1079 { &hf_s4406_dist_type,
1080 { "dist-type", "s4406.dist_type",
1081 FT_OID, BASE_NONE, NULL, 0,
1082 "DistributionExtensionField/dist-type", HFILL }},
1083 { &hf_s4406_dist_value,
1084 { "dist-value", "s4406.dist_value",
1085 FT_NONE, BASE_NONE, NULL, 0,
1086 "DistributionExtensionField/dist-value", HFILL }},
1087 { &hf_s4406_HandlingInstructions_item,
1088 { "Item", "s4406.HandlingInstructions_item",
1089 FT_STRING, BASE_NONE, NULL, 0,
1090 "HandlingInstructions/_item", HFILL }},
1091 { &hf_s4406_MessageInstructions_item,
1092 { "Item", "s4406.MessageInstructions_item",
1093 FT_STRING, BASE_NONE, NULL, 0,
1094 "MessageInstructions/_item", HFILL }},
1095 { &hf_s4406_message_type_type,
1096 { "type", "s4406.type",
1097 FT_INT32, BASE_DEC, VALS(s4406_TypeMessage_vals), 0,
1098 "MessageType/type", HFILL }},
1099 { &hf_s4406_identifier,
1100 { "identifier", "s4406.identifier",
1101 FT_STRING, BASE_NONE, NULL, 0,
1102 "MessageType/identifier", HFILL }},
1103 { &hf_s4406_AddressListDesignatorSeq_item,
1104 { "Item", "s4406.AddressListDesignatorSeq_item",
1105 FT_NONE, BASE_NONE, NULL, 0,
1106 "AddressListDesignatorSeq/_item", HFILL }},
1107 { &hf_s4406_address_list_type,
1108 { "type", "s4406.type",
1109 FT_INT32, BASE_DEC, VALS(s4406_AddressListType_vals), 0,
1110 "AddressListDesignator/type", HFILL }},
1111 { &hf_s4406_listName,
1112 { "listName", "s4406.listName",
1113 FT_NONE, BASE_NONE, NULL, 0,
1114 "AddressListDesignator/listName", HFILL }},
1115 { &hf_s4406_notificationRequest,
1116 { "notificationRequest", "s4406.notificationRequest",
1117 FT_INT32, BASE_DEC, VALS(s4406_AddressListRequest_vals), 0,
1118 "AddressListDesignator/notificationRequest", HFILL }},
1119 { &hf_s4406_replyRequest,
1120 { "replyRequest", "s4406.replyRequest",
1121 FT_INT32, BASE_DEC, VALS(s4406_AddressListRequest_vals), 0,
1122 "AddressListDesignator/replyRequest", HFILL }},
1123 { &hf_s4406_OtherRecipientDesignatorSeq_item,
1124 { "Item", "s4406.OtherRecipientDesignatorSeq_item",
1125 FT_NONE, BASE_NONE, NULL, 0,
1126 "OtherRecipientDesignatorSeq/_item", HFILL }},
1127 { &hf_s4406_other_recipient_type,
1128 { "type", "s4406.type",
1129 FT_INT32, BASE_DEC, VALS(s4406_OtherRecipientType_vals), 0,
1130 "OtherRecipientDesignator/type", HFILL }},
1131 { &hf_s4406_designator,
1132 { "designator", "s4406.designator",
1133 FT_STRING, BASE_NONE, NULL, 0,
1134 "OtherRecipientDesignator/designator", HFILL }},
1135 { &hf_s4406_PilotInformationSeq_item,
1136 { "Item", "s4406.PilotInformationSeq_item",
1137 FT_NONE, BASE_NONE, NULL, 0,
1138 "PilotInformationSeq/_item", HFILL }},
1139 { &hf_s4406_pilotPrecedence,
1140 { "pilotPrecedence", "s4406.pilotPrecedence",
1141 FT_INT32, BASE_DEC, VALS(s4406_PilotPrecedence_vals), 0,
1142 "PilotInformation/pilotPrecedence", HFILL }},
1143 { &hf_s4406_pilotRecipient,
1144 { "pilotRecipient", "s4406.pilotRecipient",
1145 FT_UINT32, BASE_DEC, NULL, 0,
1146 "PilotInformation/pilotRecipient", HFILL }},
1147 { &hf_s4406_pilotRecipient_item,
1148 { "Item", "s4406.pilotRecipient_item",
1149 FT_NONE, BASE_NONE, NULL, 0,
1150 "PilotInformation/pilotRecipient/_item", HFILL }},
1151 { &hf_s4406_pilotSecurity,
1152 { "pilotSecurity", "s4406.pilotSecurity",
1153 FT_NONE, BASE_NONE, NULL, 0,
1154 "PilotInformation/pilotSecurity", HFILL }},
1155 { &hf_s4406_pilotHandling,
1156 { "pilotHandling", "s4406.pilotHandling",
1157 FT_UINT32, BASE_DEC, NULL, 0,
1158 "PilotInformation/pilotHandling", HFILL }},
1159 { &hf_s4406_pilotHandling_item,
1160 { "Item", "s4406.pilotHandling_item",
1161 FT_STRING, BASE_NONE, NULL, 0,
1162 "PilotInformation/pilotHandling/_item", HFILL }},
1163 { &hf_s4406_content_security_label,
1164 { "content-security-label", "s4406.content_security_label",
1165 FT_NONE, BASE_NONE, NULL, 0,
1166 "SecurityInformationLabels/content-security-label", HFILL }},
1167 { &hf_s4406_heading_security_label,
1168 { "heading-security-label", "s4406.heading_security_label",
1169 FT_NONE, BASE_NONE, NULL, 0,
1170 "SecurityInformationLabels/heading-security-label", HFILL }},
1171 { &hf_s4406_body_part_security_labels,
1172 { "body-part-security-labels", "s4406.body_part_security_labels",
1173 FT_UINT32, BASE_DEC, NULL, 0,
1174 "SecurityInformationLabels/body-part-security-labels", HFILL }},
1175 { &hf_s4406_body_part_security_labels_item,
1176 { "Item", "s4406.body_part_security_labels_item",
1177 FT_NONE, BASE_NONE, NULL, 0,
1178 "SecurityInformationLabels/body-part-security-labels/_item", HFILL }},
1179 { &hf_s4406_body_part_security_label,
1180 { "body-part-security-label", "s4406.body_part_security_label",
1181 FT_NONE, BASE_NONE, NULL, 0,
1182 "BodyPartSecurityLabel/body-part-security-label", HFILL }},
1183 { &hf_s4406_body_part_sequence_number,
1184 { "body-part-sequence-number", "s4406.body_part_sequence_number",
1185 FT_INT32, BASE_DEC, NULL, 0,
1186 "BodyPartSecurityLabel/body-part-sequence-number", HFILL }},
1188 /*--- End of included file: packet-s4406-hfarr.c ---*/
1189 #line 93 "packet-s4406-template.c"
1192 /* List of subtrees */
1193 static gint *ett[] = {
1196 /*--- Included file: packet-s4406-ettarr.c ---*/
1197 #line 1 "packet-s4406-ettarr.c"
1198 &ett_s4406_InformationObject,
1199 &ett_s4406_DistributionCodes,
1200 &ett_s4406_SEQUENCE_OF_Sic,
1201 &ett_s4406_SEQUENCE_OF_DistributionExtensionField,
1202 &ett_s4406_DistributionExtensionField,
1203 &ett_s4406_HandlingInstructions,
1204 &ett_s4406_MessageInstructions,
1205 &ett_s4406_MessageType,
1206 &ett_s4406_AddressListDesignatorSeq,
1207 &ett_s4406_AddressListDesignator,
1208 &ett_s4406_OtherRecipientDesignatorSeq,
1209 &ett_s4406_OtherRecipientDesignator,
1210 &ett_s4406_PilotInformationSeq,
1211 &ett_s4406_PilotInformation,
1212 &ett_s4406_SEQUENCE_OF_ORDescriptor,
1213 &ett_s4406_SEQUENCE_OF_MilitaryString,
1214 &ett_s4406_SecurityInformationLabels,
1215 &ett_s4406_SEQUENCE_OF_BodyPartSecurityLabel,
1216 &ett_s4406_BodyPartSecurityLabel,
1218 /*--- End of included file: packet-s4406-ettarr.c ---*/
1219 #line 99 "packet-s4406-template.c"
1222 /* Register protocol */
1223 proto_s4406 = proto_register_protocol(PNAME, PSNAME, PFNAME);
1225 /* Register fields and subtrees */
1226 proto_register_field_array(proto_s4406, hf, array_length(hf));
1227 proto_register_subtree_array(ett, array_length(ett));
1232 /*--- proto_reg_handoff_s4406 --- */
1233 void proto_reg_handoff_s4406(void) {
1235 /*--- Included file: packet-s4406-dis-tab.c ---*/
1236 #line 1 "packet-s4406-dis-tab.c"
1237 register_ber_oid_dissector("1.3.26.0.4406.0.2.0", dissect_PrimaryPrecedence_PDU, proto_s4406, "primary-precedence");
1238 register_ber_oid_dissector("1.3.26.0.4406.0.2.1", dissect_CopyPrecedence_PDU, proto_s4406, "copy-precedence");
1239 register_ber_oid_dissector("1.3.26.0.4406.0.2.2", dissect_MessageType_PDU, proto_s4406, "message-type");
1240 register_ber_oid_dissector("1.3.26.0.4406.0.2.3", dissect_AddressListDesignatorSeq_PDU, proto_s4406, "address-list-indicator");
1241 register_ber_oid_dissector("1.3.26.0.4406.0.2.4", dissect_ExemptedAddressSeq_PDU, proto_s4406, "exempted-address");
1242 register_ber_oid_dissector("1.3.26.0.4406.0.2.5", dissect_ExtendedAuthorisationInfo_PDU, proto_s4406, "extended-authorisation-info");
1243 register_ber_oid_dissector("1.3.26.0.4406.0.2.6", dissect_DistributionCodes_PDU, proto_s4406, "distribution-codes");
1244 register_ber_oid_dissector("1.3.26.0.4406.0.2.7", dissect_HandlingInstructions_PDU, proto_s4406, "handling-instructions");
1245 register_ber_oid_dissector("1.3.26.0.4406.0.2.8", dissect_MessageInstructions_PDU, proto_s4406, "message-instructions");
1246 register_ber_oid_dissector("1.3.26.0.4406.0.2.9", dissect_CodressMessage_PDU, proto_s4406, "codress-message");
1247 register_ber_oid_dissector("1.3.26.0.4406.0.2.10", dissect_OriginatorReference_PDU, proto_s4406, "originator-reference");
1248 register_ber_oid_dissector("1.3.26.0.4406.0.2.11", dissect_OtherRecipientDesignatorSeq_PDU, proto_s4406, "other-recipients-indicator");
1249 register_ber_oid_dissector("1.3.26.0.4406.0.2.12", dissect_PilotInformationSeq_PDU, proto_s4406, "pilot-forwarding-info");
1250 register_ber_oid_dissector("1.3.26.0.4406.0.2.13", dissect_Acp127MessageIdentifier_PDU, proto_s4406, "acp127-message-identifierr");
1251 register_ber_oid_dissector("1.3.26.0.4406.0.2.14", dissect_OriginatorPlad_PDU, proto_s4406, "originator-plad");
1252 register_ber_oid_dissector("1.3.26.0.4406.0.2.17", dissect_SecurityInformationLabels_PDU, proto_s4406, "information-labels");
1253 register_ber_oid_dissector("1.3.26.0.4406.0.8.0", dissect_PriorityLevelQualifier_PDU, proto_s4406, "priority-level-qualifier");
1254 register_ber_oid_dissector("1.3.26.0.4406.0.7.9", dissect_MMMessageData_PDU, proto_s4406, "mm-message");
1255 register_ber_oid_dissector("1.3.26.0.4406.0.7.10", dissect_MMMessageParameters_PDU, proto_s4406, "mm-message-parameters");
1256 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");
1259 /*--- End of included file: packet-s4406-dis-tab.c ---*/
1260 #line 114 "packet-s4406-template.c"
1262 register_ber_oid_dissector("1.3.26.0.4406.0.4.1", dissect_s4406, proto_s4406, "Military Message");