1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -b -C -q -L -p p772 -c ./p772.cnf -s ./packet-p772-template -D . -O ../.. MMSAbstractService.asn MMSInformationObjects.asn MMSOtherNotificationTypeExtensions.asn MMSObjectIdentifiers.asn MMSHeadingExtensions.asn MMSUpperBounds.asn MMSExtendedBodyPartTypes.asn MMSPerRecipientSpecifierExtensions.asn */
7 * Routines for STANAG 4406 (X.400 Military Message Extensions) packet dissection
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
19 #include <epan/packet.h>
20 #include <epan/asn1.h>
21 #include <wsutil/array.h>
23 #include "packet-ber.h"
25 #include "packet-x509if.h"
27 #include "packet-p772.h"
28 #include "packet-p1.h"
29 #include "packet-p22.h"
31 #define PNAME "STANAG 4406 Message"
35 void proto_register_p772(void);
36 void proto_reg_handoff_p772(void);
39 /* Initialize the protocol and registered fields */
40 static int proto_p772
;
42 #define id_mmhs "1.3.26.0.4406.0"
43 #define id_mod id_mmhs".0"
44 #define id_mm id_mmhs".2"
45 #define id_hat id_mmhs".3"
46 #define id_mcont id_mmhs".4"
47 #define id_policy id_mmhs".5"
48 #define id_cat id_mmhs".6"
49 #define id_et id_mmhs".7"
50 #define id_mmts id_mmhs".8"
51 #define id_nat id_mmhs".9"
52 #define id_mot id_mmhs".10"
53 #define id_mpt id_mmhs".11"
54 #define id_ref id_mmhs".12"
55 #define id_informationlabel id_mmhs".13"
56 #define id_mod_upper_bounds id_mod".0"
57 #define id_mod_mms id_mod".1"
58 #define id_mod_functional_objects id_mod".2"
59 #define id_mod_abstract_service id_mod".3"
60 #define id_mod_heading_extension id_mod".6"
61 #define id_mod_extended_body_part_types id_mod".7"
62 #define id_mod_message_store_attributes id_mod".8"
63 #define id_mod_per_recipient_specifier_extensions id_mod".11"
64 #define id_mod_other_notification_type_extensions id_mod".12"
65 #define id_mot_mmme id_mot".0"
66 #define id_mot_mms_user id_mot".1"
67 #define id_mot_mms id_mot".2"
68 #define id_mot_mms_ua id_mot".3"
69 #define id_mot_mms_ms id_mot".4"
70 #define id_mot_acp127au id_mot".5"
71 #define id_mot_pdau id_mot".6"
72 #define id_mpt_origination id_mpt".0"
73 #define id_mpt_reception id_mpt".1"
74 #define id_mpt_management id_mpt".2"
75 #define id_ref_primary id_ref".0"
76 #define id_ref_secondary id_ref".1"
77 #define id_nato_mmhs_et_adatp3 id_et".0"
78 #define id_nato_mmhs_et_corrections id_et".1"
79 #define id_nato_mmhs_et_adatp3_parameters id_et".2"
80 #define id_nato_mmhs_et_corrections_parameters id_et".3"
81 #define id_nato_mmhs_et_forwarded_encrypted id_et".6"
82 #define id_nato_mmhs_et_forwarded_encrypted_parameters id_et".7"
83 #define id_nato_mmhs_et_mm_message id_et".9"
84 #define id_nato_mmhs_et_mm_message_parameters id_et".10"
85 #define id_nato_mmhs_et_mm_acp127data id_et".12"
86 #define id_nato_mmhs_et_mm_acp127data_parameters id_et".13"
87 #define id_nato_mmhs_mm_primary_precedence id_mm".0"
88 #define id_nato_mmhs_mm_copy_precedence id_mm".1"
89 #define id_nato_mmhs_mm_message_type id_mm".2"
90 #define id_nato_mmhs_mm_address_list_indicator id_mm".3"
91 #define id_nato_mmhs_mm_exempted_address id_mm".4"
92 #define id_nato_mmhs_mm_extended_authorisation_info id_mm".5"
93 #define id_nato_mmhs_mm_distribution_codes id_mm".6"
94 #define id_nato_mmhs_mm_handling_instructions id_mm".7"
95 #define id_nato_mmhs_mm_message_instructions id_mm".8"
96 #define id_nato_mmhs_mm_codress_message id_mm".9"
97 #define id_nato_mmhs_mm_originator_reference id_mm".10"
98 #define id_nato_mmhs_mm_other_recipients_indicator id_mm".11"
99 #define id_nato_mmhs_mm_pilot_forwarding_info id_mm".12"
100 #define id_nato_mmhs_mm_acp127_message_identifier id_mm".13"
101 #define id_nato_mmhs_mm_originator_plad id_mm".14"
102 #define id_nato_mmhs_mm_information_labels id_mm".17"
103 #define id_nato_mmhs_mm_acp127_notification_request id_mm".15"
104 #define id_nato_mmhs_mm_acp127_notification_response id_mm".16"
105 #define id_nato_mmhs_hat_primary_precedence id_hat".0"
106 #define id_nato_mmhs_hat_copy_precedence id_hat".1"
107 #define id_nato_mmhs_hat_message_type id_hat".2"
108 #define id_nato_mmhs_hat_address_list_indicator id_hat".3"
109 #define id_nato_mmhs_hat_exempted_address id_hat".4"
110 #define id_nato_mmhs_hat_extended_authorisation_info id_hat".5"
111 #define id_nato_mmhs_hat_distribution_codes id_hat".6"
112 #define id_nato_mmhs_hat_handling_instructions id_hat".7"
113 #define id_nato_mmhs_hat_message_instructions id_hat".8"
114 #define id_nato_mmhs_hat_codress_message id_hat".9"
115 #define id_nato_mmhs_hat_originator_reference id_hat".10"
116 #define id_nato_mmhs_hat_other_recipients_indicator id_hat".11"
117 #define id_nato_mmhs_hat_pilot_forwarding_info id_hat".12"
118 #define id_nato_mmhs_hat_acp127_message_identifier id_hat".13"
119 #define id_nato_mmhs_hat_originator_plad id_hat".14"
120 #define id_nato_mmhs_hat_acp127_notification_request id_hat".15"
121 #define id_nato_mmhs_hat_sic_codes id_hat".16"
122 #define id_nato_mmhs_hat_distribution_extensions id_hat".17"
123 #define id_nato_mmhs_hat_body_part_information_label id_hat".18"
124 #define id_nato_mmhs_hat_security_information_labels id_hat".19"
125 #define id_nato_mmhs_cat id_cat".0"
126 #define id_nato_mmhs_cat_atomal id_cat".1"
127 #define id_nato_mmhs_cat_cryptosecurity id_cat".2"
128 #define id_nato_mmhs_cat_specialhandlingintel id_cat".3"
129 #define id_nato_mmhs_cat_ussiopesi id_cat".4"
130 #define id_nato_mmhs_cat_eyesonly id_cat".5"
131 #define id_nato_mmhs_cat_exclusive id_cat".6"
132 #define id_nato_mmhs_cat_information_label id_cat".7"
133 #define id_nato_mmhs_informationlabel_atomal id_informationlabel".1"
134 #define id_nato_mmhs_informationlabel_cryptosecurity id_informationlabel".2"
135 #define id_nato_mmhs_informationlabel_specialhandlingintel id_informationlabel".3"
136 #define id_nato_mmhs_informationlabel_ussiopesi id_informationlabel".4"
137 #define id_nato_mmhs_informationlabel_eyesonly id_informationlabel".5"
138 #define id_nato_mmhs_informationlabel_exclusive id_informationlabel".6"
139 #define id_nato_mmhs_nat_acp127_notification_response id_nat".0"
140 #define id_mct_p772 id_mcont".1"
141 #define ub_military_string 69
142 #define ub_military_number_of_sics 8
143 #define lb_military_sic 3
144 #define ub_military_sic 8
145 #define ub_military_bigstring 128
146 #define ub_data_size 65535
148 static int hf_p772_InformationObject_PDU
; /* InformationObject */
149 static int hf_p772_Acp127NotificationResponse_PDU
; /* Acp127NotificationResponse */
150 static int hf_p772_ExemptedAddressSeq_PDU
; /* ExemptedAddressSeq */
151 static int hf_p772_ExtendedAuthorisationInfo_PDU
; /* ExtendedAuthorisationInfo */
152 static int hf_p772_DistributionCodes_PDU
; /* DistributionCodes */
153 static int hf_p772_HandlingInstructions_PDU
; /* HandlingInstructions */
154 static int hf_p772_MessageInstructions_PDU
; /* MessageInstructions */
155 static int hf_p772_CodressMessage_PDU
; /* CodressMessage */
156 static int hf_p772_OriginatorReference_PDU
; /* OriginatorReference */
157 static int hf_p772_PrimaryPrecedence_PDU
; /* PrimaryPrecedence */
158 static int hf_p772_CopyPrecedence_PDU
; /* CopyPrecedence */
159 static int hf_p772_MessageType_PDU
; /* MessageType */
160 static int hf_p772_AddressListDesignatorSeq_PDU
; /* AddressListDesignatorSeq */
161 static int hf_p772_OtherRecipientDesignatorSeq_PDU
; /* OtherRecipientDesignatorSeq */
162 static int hf_p772_PilotInformationSeq_PDU
; /* PilotInformationSeq */
163 static int hf_p772_Acp127MessageIdentifier_PDU
; /* Acp127MessageIdentifier */
164 static int hf_p772_OriginatorPlad_PDU
; /* OriginatorPlad */
165 static int hf_p772_SecurityInformationLabels_PDU
; /* SecurityInformationLabels */
166 static int hf_p772_PriorityLevelQualifier_PDU
; /* PriorityLevelQualifier */
167 static int hf_p772_ADatP3Parameters_PDU
; /* ADatP3Parameters */
168 static int hf_p772_ADatP3Data_PDU
; /* ADatP3Data */
169 static int hf_p772_CorrectionsParameters_PDU
; /* CorrectionsParameters */
170 static int hf_p772_CorrectionsData_PDU
; /* CorrectionsData */
171 static int hf_p772_ForwardedEncryptedParameters_PDU
; /* ForwardedEncryptedParameters */
172 static int hf_p772_ForwardedEncryptedData_PDU
; /* ForwardedEncryptedData */
173 static int hf_p772_MMMessageParameters_PDU
; /* MMMessageParameters */
174 static int hf_p772_MMMessageData_PDU
; /* MMMessageData */
175 static int hf_p772_ACP127DataParameters_PDU
; /* ACP127DataParameters */
176 static int hf_p772_ACP127DataData_PDU
; /* ACP127DataData */
177 static int hf_p772_Acp127NotificationType_PDU
; /* Acp127NotificationType */
178 static int hf_p772_mm
; /* IPM */
179 static int hf_p772_mn
; /* IPN */
180 static int hf_p772_acp127_notification_type
; /* Acp127NotificationType */
181 static int hf_p772_receipt_time
; /* ReceiptTimeField */
182 static int hf_p772_addressListIndicator
; /* AddressListIndicator */
183 static int hf_p772_acp127_recipient
; /* Acp127Recipient */
184 static int hf_p772_acp127_supp_info
; /* Acp127SuppInfo */
185 static int hf_p772_AddressListIndicator_item
; /* AddressListDesignator */
186 static int hf_p772_ExemptedAddressSeq_item
; /* ExemptedAddress */
187 static int hf_p772_sics
; /* SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic */
188 static int hf_p772_sics_item
; /* Sic */
189 static int hf_p772_dist_Extensions
; /* SEQUENCE_OF_DistributionExtensionField */
190 static int hf_p772_dist_Extensions_item
; /* DistributionExtensionField */
191 static int hf_p772_dist_type
; /* OBJECT_IDENTIFIER */
192 static int hf_p772_dist_value
; /* T_dist_value */
193 static int hf_p772_HandlingInstructions_item
; /* MilitaryString */
194 static int hf_p772_MessageInstructions_item
; /* MilitaryString */
195 static int hf_p772_message_type_type
; /* TypeMessage */
196 static int hf_p772_identifier
; /* MessageIdentifier */
197 static int hf_p772_AddressListDesignatorSeq_item
; /* AddressListDesignator */
198 static int hf_p772_address_list_type
; /* AddressListType */
199 static int hf_p772_listName
; /* ORDescriptor */
200 static int hf_p772_notificationRequest
; /* AddressListRequest */
201 static int hf_p772_replyRequest
; /* AddressListRequest */
202 static int hf_p772_OtherRecipientDesignatorSeq_item
; /* OtherRecipientDesignator */
203 static int hf_p772_other_recipient_type
; /* OtherRecipientType */
204 static int hf_p772_designator
; /* MilitaryString */
205 static int hf_p772_PilotInformationSeq_item
; /* PilotInformation */
206 static int hf_p772_pilotPrecedence
; /* MMHSPrecedence */
207 static int hf_p772_pilotRecipient
; /* SEQUENCE_OF_ORDescriptor */
208 static int hf_p772_pilotRecipient_item
; /* ORDescriptor */
209 static int hf_p772_pilotSecurity
; /* SecurityLabel */
210 static int hf_p772_pilotHandling
; /* SEQUENCE_OF_MilitaryString */
211 static int hf_p772_pilotHandling_item
; /* MilitaryString */
212 static int hf_p772_content_security_label
; /* SecurityLabel */
213 static int hf_p772_heading_security_label
; /* SecurityLabel */
214 static int hf_p772_body_part_security_labels
; /* SEQUENCE_OF_BodyPartSecurityLabel */
215 static int hf_p772_body_part_security_labels_item
; /* BodyPartSecurityLabel */
216 static int hf_p772_body_part_security_label
; /* SecurityLabel */
217 static int hf_p772_body_part_sequence_number
; /* BodyPartSequenceNumber */
218 static int hf_p772_lineOriented
; /* IA5String */
219 static int hf_p772_setOriented
; /* T_setOriented */
220 static int hf_p772_setOriented_item
; /* IA5String */
221 static int hf_p772_delivery_time
; /* MessageDeliveryTime */
222 static int hf_p772_delivery_envelope
; /* OtherMessageDeliveryFields */
224 static int hf_p772_Acp127NotificationType_acp127_nn
;
225 static int hf_p772_Acp127NotificationType_acp127_pn
;
226 static int hf_p772_Acp127NotificationType_acp127_tn
;
228 /* Initialize the subtree pointers */
230 static int ett_p772_InformationObject
;
231 static int ett_p772_Acp127NotificationResponse
;
232 static int ett_p772_AddressListIndicator
;
233 static int ett_p772_ExemptedAddressSeq
;
234 static int ett_p772_DistributionCodes
;
235 static int ett_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic
;
236 static int ett_p772_SEQUENCE_OF_DistributionExtensionField
;
237 static int ett_p772_DistributionExtensionField
;
238 static int ett_p772_HandlingInstructions
;
239 static int ett_p772_MessageInstructions
;
240 static int ett_p772_MessageType
;
241 static int ett_p772_AddressListDesignatorSeq
;
242 static int ett_p772_AddressListDesignator
;
243 static int ett_p772_OtherRecipientDesignatorSeq
;
244 static int ett_p772_OtherRecipientDesignator
;
245 static int ett_p772_PilotInformationSeq
;
246 static int ett_p772_PilotInformation
;
247 static int ett_p772_SEQUENCE_OF_ORDescriptor
;
248 static int ett_p772_SEQUENCE_OF_MilitaryString
;
249 static int ett_p772_SecurityInformationLabels
;
250 static int ett_p772_SEQUENCE_OF_BodyPartSecurityLabel
;
251 static int ett_p772_BodyPartSecurityLabel
;
252 static int ett_p772_ADatP3Data
;
253 static int ett_p772_T_setOriented
;
254 static int ett_p772_ForwardedEncryptedParameters
;
255 static int ett_p772_MMMessageParameters
;
256 static int ett_p772_Acp127NotificationType
;
259 static const ber_choice_t InformationObject_choice
[] = {
260 { 0, &hf_p772_mm
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p22_IPM
},
261 { 1, &hf_p772_mn
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p22_IPN
},
262 { 0, NULL
, 0, 0, 0, NULL
}
266 dissect_p772_InformationObject(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
267 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
268 InformationObject_choice
, hf_index
, ett_p772_InformationObject
,
275 static int * const Acp127NotificationType_bits
[] = {
276 &hf_p772_Acp127NotificationType_acp127_nn
,
277 &hf_p772_Acp127NotificationType_acp127_pn
,
278 &hf_p772_Acp127NotificationType_acp127_tn
,
283 dissect_p772_Acp127NotificationType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
284 offset
= dissect_ber_bitstring(implicit_tag
, actx
, tree
, tvb
, offset
,
285 Acp127NotificationType_bits
, 3, hf_index
, ett_p772_Acp127NotificationType
,
292 static const value_string p772_AddressListType_vals
[] = {
293 { 0, "primaryAddressList" },
294 { 1, "copyAddressList" },
300 dissect_p772_AddressListType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
301 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
308 static const value_string p772_AddressListRequest_vals
[] = {
317 dissect_p772_AddressListRequest(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
318 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
325 static const ber_sequence_t AddressListDesignator_set
[] = {
326 { &hf_p772_address_list_type
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p772_AddressListType
},
327 { &hf_p772_listName
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p22_ORDescriptor
},
328 { &hf_p772_notificationRequest
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_AddressListRequest
},
329 { &hf_p772_replyRequest
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_AddressListRequest
},
330 { NULL
, 0, 0, 0, NULL
}
334 dissect_p772_AddressListDesignator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
335 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
336 AddressListDesignator_set
, hf_index
, ett_p772_AddressListDesignator
);
342 static const ber_sequence_t AddressListIndicator_sequence_of
[1] = {
343 { &hf_p772_AddressListIndicator_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p772_AddressListDesignator
},
347 dissect_p772_AddressListIndicator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
348 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
349 AddressListIndicator_sequence_of
, hf_index
, ett_p772_AddressListIndicator
);
357 dissect_p772_Acp127Recipient(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
358 offset
= dissect_ber_constrained_restricted_string(implicit_tag
, BER_UNI_TAG_PrintableString
,
359 actx
, tree
, tvb
, offset
,
360 1, ub_military_bigstring
, hf_index
, NULL
);
368 dissect_p772_Acp127SuppInfo(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
369 offset
= dissect_ber_constrained_restricted_string(implicit_tag
, BER_UNI_TAG_PrintableString
,
370 actx
, tree
, tvb
, offset
,
371 1, ub_military_bigstring
, hf_index
, NULL
);
377 static const ber_sequence_t Acp127NotificationResponse_set
[] = {
378 { &hf_p772_acp127_notification_type
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p772_Acp127NotificationType
},
379 { &hf_p772_receipt_time
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p22_ReceiptTimeField
},
380 { &hf_p772_addressListIndicator
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_AddressListIndicator
},
381 { &hf_p772_acp127_recipient
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_Acp127Recipient
},
382 { &hf_p772_acp127_supp_info
, BER_CLASS_CON
, 4, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_Acp127SuppInfo
},
383 { NULL
, 0, 0, 0, NULL
}
387 dissect_p772_Acp127NotificationResponse(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
388 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
389 Acp127NotificationResponse_set
, hf_index
, ett_p772_Acp127NotificationResponse
);
397 dissect_p772_ExemptedAddress(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
398 offset
= dissect_p22_ORDescriptor(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
404 static const ber_sequence_t ExemptedAddressSeq_sequence_of
[1] = {
405 { &hf_p772_ExemptedAddressSeq_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p772_ExemptedAddress
},
409 dissect_p772_ExemptedAddressSeq(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
410 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
411 ExemptedAddressSeq_sequence_of
, hf_index
, ett_p772_ExemptedAddressSeq
);
419 dissect_p772_ExtendedAuthorisationInfo(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
420 offset
= dissect_ber_UTCTime(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
, NULL
);
428 dissect_p772_Sic(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
429 offset
= dissect_ber_constrained_restricted_string(implicit_tag
, BER_UNI_TAG_PrintableString
,
430 actx
, tree
, tvb
, offset
,
431 lb_military_sic
, ub_military_sic
, hf_index
, NULL
);
437 static const ber_sequence_t SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic_sequence_of
[1] = {
438 { &hf_p772_sics_item
, BER_CLASS_UNI
, BER_UNI_TAG_PrintableString
, BER_FLAGS_NOOWNTAG
, dissect_p772_Sic
},
442 dissect_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
443 offset
= dissect_ber_constrained_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
444 1, ub_military_number_of_sics
, SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic_sequence_of
, hf_index
, ett_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic
);
452 dissect_p772_OBJECT_IDENTIFIER(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
453 offset
= dissect_ber_object_identifier(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
461 dissect_p772_T_dist_value(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
462 /* XXX: not implemented */
463 offset
= dissect_unknown_ber(actx
->pinfo
, tvb
, offset
, tree
);
470 static const ber_sequence_t DistributionExtensionField_sequence
[] = {
471 { &hf_p772_dist_type
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_p772_OBJECT_IDENTIFIER
},
472 { &hf_p772_dist_value
, BER_CLASS_ANY
, 0, BER_FLAGS_NOOWNTAG
, dissect_p772_T_dist_value
},
473 { NULL
, 0, 0, 0, NULL
}
477 dissect_p772_DistributionExtensionField(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
478 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
479 DistributionExtensionField_sequence
, hf_index
, ett_p772_DistributionExtensionField
);
485 static const ber_sequence_t SEQUENCE_OF_DistributionExtensionField_sequence_of
[1] = {
486 { &hf_p772_dist_Extensions_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_p772_DistributionExtensionField
},
490 dissect_p772_SEQUENCE_OF_DistributionExtensionField(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
491 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
492 SEQUENCE_OF_DistributionExtensionField_sequence_of
, hf_index
, ett_p772_SEQUENCE_OF_DistributionExtensionField
);
498 static const ber_sequence_t DistributionCodes_set
[] = {
499 { &hf_p772_sics
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic
},
500 { &hf_p772_dist_Extensions
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_SEQUENCE_OF_DistributionExtensionField
},
501 { NULL
, 0, 0, 0, NULL
}
505 dissect_p772_DistributionCodes(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
506 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
507 DistributionCodes_set
, hf_index
, ett_p772_DistributionCodes
);
515 dissect_p772_MilitaryString(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
516 offset
= dissect_ber_constrained_restricted_string(implicit_tag
, BER_UNI_TAG_PrintableString
,
517 actx
, tree
, tvb
, offset
,
518 1, ub_military_string
, hf_index
, NULL
);
524 static const ber_sequence_t HandlingInstructions_sequence_of
[1] = {
525 { &hf_p772_HandlingInstructions_item
, BER_CLASS_UNI
, BER_UNI_TAG_PrintableString
, BER_FLAGS_NOOWNTAG
, dissect_p772_MilitaryString
},
529 dissect_p772_HandlingInstructions(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
530 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
531 HandlingInstructions_sequence_of
, hf_index
, ett_p772_HandlingInstructions
);
537 static const ber_sequence_t MessageInstructions_sequence_of
[1] = {
538 { &hf_p772_MessageInstructions_item
, BER_CLASS_UNI
, BER_UNI_TAG_PrintableString
, BER_FLAGS_NOOWNTAG
, dissect_p772_MilitaryString
},
542 dissect_p772_MessageInstructions(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
543 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
544 MessageInstructions_sequence_of
, hf_index
, ett_p772_MessageInstructions
);
552 dissect_p772_CodressMessage(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
553 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
562 dissect_p772_OriginatorReference(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
563 offset
= dissect_p772_MilitaryString(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
569 static const value_string p772_MMHSPrecedence_vals
[] = {
584 dissect_p772_MMHSPrecedence(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
585 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
592 static const value_string p772_PrimaryPrecedence_vals
[] = {
607 dissect_p772_PrimaryPrecedence(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
609 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
613 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " (primary=%s)", val_to_str(precedence
, p772_PrimaryPrecedence_vals
, "precedence(%d)"));
620 static const value_string p772_CopyPrecedence_vals
[] = {
635 dissect_p772_CopyPrecedence(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
637 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
641 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " (copy=%s)", val_to_str(precedence
, p772_CopyPrecedence_vals
, "precedence(%d)"));
647 static const value_string p772_TypeMessage_vals
[] = {
657 dissect_p772_TypeMessage(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
658 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
667 dissect_p772_MessageIdentifier(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
668 offset
= dissect_p772_MilitaryString(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
674 static const ber_sequence_t MessageType_set
[] = {
675 { &hf_p772_message_type_type
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p772_TypeMessage
},
676 { &hf_p772_identifier
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_MessageIdentifier
},
677 { NULL
, 0, 0, 0, NULL
}
681 dissect_p772_MessageType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
682 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
683 MessageType_set
, hf_index
, ett_p772_MessageType
);
689 static const ber_sequence_t AddressListDesignatorSeq_sequence_of
[1] = {
690 { &hf_p772_AddressListDesignatorSeq_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p772_AddressListDesignator
},
694 dissect_p772_AddressListDesignatorSeq(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
695 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
696 AddressListDesignatorSeq_sequence_of
, hf_index
, ett_p772_AddressListDesignatorSeq
);
702 static const value_string p772_OtherRecipientType_vals
[] = {
710 dissect_p772_OtherRecipientType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
711 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
718 static const ber_sequence_t OtherRecipientDesignator_set
[] = {
719 { &hf_p772_other_recipient_type
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p772_OtherRecipientType
},
720 { &hf_p772_designator
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p772_MilitaryString
},
721 { NULL
, 0, 0, 0, NULL
}
725 dissect_p772_OtherRecipientDesignator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
726 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
727 OtherRecipientDesignator_set
, hf_index
, ett_p772_OtherRecipientDesignator
);
733 static const ber_sequence_t OtherRecipientDesignatorSeq_sequence_of
[1] = {
734 { &hf_p772_OtherRecipientDesignatorSeq_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p772_OtherRecipientDesignator
},
738 dissect_p772_OtherRecipientDesignatorSeq(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
739 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
740 OtherRecipientDesignatorSeq_sequence_of
, hf_index
, ett_p772_OtherRecipientDesignatorSeq
);
746 static const ber_sequence_t SEQUENCE_OF_ORDescriptor_sequence_of
[1] = {
747 { &hf_p772_pilotRecipient_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p22_ORDescriptor
},
751 dissect_p772_SEQUENCE_OF_ORDescriptor(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
752 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
753 SEQUENCE_OF_ORDescriptor_sequence_of
, hf_index
, ett_p772_SEQUENCE_OF_ORDescriptor
);
759 static const ber_sequence_t SEQUENCE_OF_MilitaryString_sequence_of
[1] = {
760 { &hf_p772_pilotHandling_item
, BER_CLASS_UNI
, BER_UNI_TAG_PrintableString
, BER_FLAGS_NOOWNTAG
, dissect_p772_MilitaryString
},
764 dissect_p772_SEQUENCE_OF_MilitaryString(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
765 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
766 SEQUENCE_OF_MilitaryString_sequence_of
, hf_index
, ett_p772_SEQUENCE_OF_MilitaryString
);
772 static const ber_sequence_t PilotInformation_sequence
[] = {
773 { &hf_p772_pilotPrecedence
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_MMHSPrecedence
},
774 { &hf_p772_pilotRecipient
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_SEQUENCE_OF_ORDescriptor
},
775 { &hf_p772_pilotSecurity
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p1_SecurityLabel
},
776 { &hf_p772_pilotHandling
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_SEQUENCE_OF_MilitaryString
},
777 { NULL
, 0, 0, 0, NULL
}
781 dissect_p772_PilotInformation(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
782 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
783 PilotInformation_sequence
, hf_index
, ett_p772_PilotInformation
);
789 static const ber_sequence_t PilotInformationSeq_sequence_of
[1] = {
790 { &hf_p772_PilotInformationSeq_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_p772_PilotInformation
},
794 dissect_p772_PilotInformationSeq(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
795 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
796 PilotInformationSeq_sequence_of
, hf_index
, ett_p772_PilotInformationSeq
);
804 dissect_p772_Acp127MessageIdentifier(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
805 offset
= dissect_p772_MilitaryString(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
813 dissect_p772_OriginatorPlad(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
814 offset
= dissect_p772_MilitaryString(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
822 dissect_p772_BodyPartSequenceNumber(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
823 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
830 static const ber_sequence_t BodyPartSecurityLabel_set
[] = {
831 { &hf_p772_body_part_security_label
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p1_SecurityLabel
},
832 { &hf_p772_body_part_sequence_number
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_BodyPartSequenceNumber
},
833 { NULL
, 0, 0, 0, NULL
}
837 dissect_p772_BodyPartSecurityLabel(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
838 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
839 BodyPartSecurityLabel_set
, hf_index
, ett_p772_BodyPartSecurityLabel
);
845 static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of
[1] = {
846 { &hf_p772_body_part_security_labels_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_p772_BodyPartSecurityLabel
},
850 dissect_p772_SEQUENCE_OF_BodyPartSecurityLabel(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
851 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
852 SEQUENCE_OF_BodyPartSecurityLabel_sequence_of
, hf_index
, ett_p772_SEQUENCE_OF_BodyPartSecurityLabel
);
858 static const ber_sequence_t SecurityInformationLabels_sequence
[] = {
859 { &hf_p772_content_security_label
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p1_SecurityLabel
},
860 { &hf_p772_heading_security_label
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p1_SecurityLabel
},
861 { &hf_p772_body_part_security_labels
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p772_SEQUENCE_OF_BodyPartSecurityLabel
},
862 { NULL
, 0, 0, 0, NULL
}
866 dissect_p772_SecurityInformationLabels(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
867 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
868 SecurityInformationLabels_sequence
, hf_index
, ett_p772_SecurityInformationLabels
);
874 static const value_string p772_PriorityLevelQualifier_vals
[] = {
882 dissect_p772_PriorityLevelQualifier(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
883 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
892 dissect_p772_ADatP3Parameters(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
893 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
902 dissect_p772_IA5String(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
903 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_IA5String
,
904 actx
, tree
, tvb
, offset
, hf_index
,
911 static const ber_sequence_t T_setOriented_sequence_of
[1] = {
912 { &hf_p772_setOriented_item
, BER_CLASS_UNI
, BER_UNI_TAG_IA5String
, BER_FLAGS_NOOWNTAG
, dissect_p772_IA5String
},
916 dissect_p772_T_setOriented(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
917 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
918 T_setOriented_sequence_of
, hf_index
, ett_p772_T_setOriented
);
924 static const value_string p772_ADatP3Data_vals
[] = {
925 { 0, "lineOriented" },
926 { 1, "setOriented" },
930 static const ber_choice_t ADatP3Data_choice
[] = {
931 { 0, &hf_p772_lineOriented
, BER_CLASS_CON
, 0, BER_FLAGS_IMPLTAG
, dissect_p772_IA5String
},
932 { 1, &hf_p772_setOriented
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p772_T_setOriented
},
933 { 0, NULL
, 0, 0, 0, NULL
}
937 dissect_p772_ADatP3Data(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
938 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
939 ADatP3Data_choice
, hf_index
, ett_p772_ADatP3Data
,
948 dissect_p772_CorrectionsParameters(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
949 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
958 dissect_p772_CorrectionsData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
959 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_IA5String
,
960 actx
, tree
, tvb
, offset
, hf_index
,
967 static const ber_sequence_t ForwardedEncryptedParameters_set
[] = {
968 { &hf_p772_delivery_time
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p1_MessageDeliveryTime
},
969 { &hf_p772_delivery_envelope
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p1_OtherMessageDeliveryFields
},
970 { NULL
, 0, 0, 0, NULL
}
974 dissect_p772_ForwardedEncryptedParameters(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
975 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
976 ForwardedEncryptedParameters_set
, hf_index
, ett_p772_ForwardedEncryptedParameters
);
984 dissect_p772_ForwardedEncryptedData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
985 offset
= dissect_ber_bitstring(implicit_tag
, actx
, tree
, tvb
, offset
,
986 NULL
, 0, hf_index
, -1,
993 static const ber_sequence_t MMMessageParameters_set
[] = {
994 { &hf_p772_delivery_time
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
|BER_FLAGS_IMPLTAG
, dissect_p1_MessageDeliveryTime
},
995 { &hf_p772_delivery_envelope
, BER_CLASS_CON
, 1, BER_FLAGS_IMPLTAG
, dissect_p1_OtherMessageDeliveryFields
},
996 { NULL
, 0, 0, 0, NULL
}
1000 dissect_p772_MMMessageParameters(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1001 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
1002 MMMessageParameters_set
, hf_index
, ett_p772_MMMessageParameters
);
1010 dissect_p772_MMMessageData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1011 offset
= dissect_p22_IPM(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1019 dissect_p772_ACP127DataParameters(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1020 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1029 dissect_p772_ACP127DataData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1030 offset
= dissect_ber_constrained_restricted_string(implicit_tag
, BER_UNI_TAG_IA5String
,
1031 actx
, tree
, tvb
, offset
,
1032 1, ub_data_size
, hf_index
, NULL
);
1039 static int dissect_InformationObject_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1041 asn1_ctx_t asn1_ctx
;
1042 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1043 offset
= dissect_p772_InformationObject(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_InformationObject_PDU
);
1046 static int dissect_Acp127NotificationResponse_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1048 asn1_ctx_t asn1_ctx
;
1049 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1050 offset
= dissect_p772_Acp127NotificationResponse(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_Acp127NotificationResponse_PDU
);
1053 static int dissect_ExemptedAddressSeq_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1055 asn1_ctx_t asn1_ctx
;
1056 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1057 offset
= dissect_p772_ExemptedAddressSeq(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ExemptedAddressSeq_PDU
);
1060 static int dissect_ExtendedAuthorisationInfo_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1062 asn1_ctx_t asn1_ctx
;
1063 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1064 offset
= dissect_p772_ExtendedAuthorisationInfo(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ExtendedAuthorisationInfo_PDU
);
1067 static int dissect_DistributionCodes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1069 asn1_ctx_t asn1_ctx
;
1070 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1071 offset
= dissect_p772_DistributionCodes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_DistributionCodes_PDU
);
1074 static int dissect_HandlingInstructions_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1076 asn1_ctx_t asn1_ctx
;
1077 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1078 offset
= dissect_p772_HandlingInstructions(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_HandlingInstructions_PDU
);
1081 static int dissect_MessageInstructions_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1083 asn1_ctx_t asn1_ctx
;
1084 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1085 offset
= dissect_p772_MessageInstructions(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_MessageInstructions_PDU
);
1088 static int dissect_CodressMessage_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1090 asn1_ctx_t asn1_ctx
;
1091 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1092 offset
= dissect_p772_CodressMessage(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_CodressMessage_PDU
);
1095 static int dissect_OriginatorReference_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1097 asn1_ctx_t asn1_ctx
;
1098 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1099 offset
= dissect_p772_OriginatorReference(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_OriginatorReference_PDU
);
1102 static int dissect_PrimaryPrecedence_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1104 asn1_ctx_t asn1_ctx
;
1105 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1106 offset
= dissect_p772_PrimaryPrecedence(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_PrimaryPrecedence_PDU
);
1109 static int dissect_CopyPrecedence_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1111 asn1_ctx_t asn1_ctx
;
1112 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1113 offset
= dissect_p772_CopyPrecedence(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_CopyPrecedence_PDU
);
1116 static int dissect_MessageType_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1118 asn1_ctx_t asn1_ctx
;
1119 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1120 offset
= dissect_p772_MessageType(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_MessageType_PDU
);
1123 static int dissect_AddressListDesignatorSeq_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1125 asn1_ctx_t asn1_ctx
;
1126 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1127 offset
= dissect_p772_AddressListDesignatorSeq(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_AddressListDesignatorSeq_PDU
);
1130 static int dissect_OtherRecipientDesignatorSeq_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1132 asn1_ctx_t asn1_ctx
;
1133 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1134 offset
= dissect_p772_OtherRecipientDesignatorSeq(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_OtherRecipientDesignatorSeq_PDU
);
1137 static int dissect_PilotInformationSeq_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1139 asn1_ctx_t asn1_ctx
;
1140 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1141 offset
= dissect_p772_PilotInformationSeq(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_PilotInformationSeq_PDU
);
1144 static int dissect_Acp127MessageIdentifier_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1146 asn1_ctx_t asn1_ctx
;
1147 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1148 offset
= dissect_p772_Acp127MessageIdentifier(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_Acp127MessageIdentifier_PDU
);
1151 static int dissect_OriginatorPlad_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1153 asn1_ctx_t asn1_ctx
;
1154 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1155 offset
= dissect_p772_OriginatorPlad(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_OriginatorPlad_PDU
);
1158 static int dissect_SecurityInformationLabels_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1160 asn1_ctx_t asn1_ctx
;
1161 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1162 offset
= dissect_p772_SecurityInformationLabels(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_SecurityInformationLabels_PDU
);
1165 static int dissect_PriorityLevelQualifier_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1167 asn1_ctx_t asn1_ctx
;
1168 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1169 offset
= dissect_p772_PriorityLevelQualifier(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_PriorityLevelQualifier_PDU
);
1172 static int dissect_ADatP3Parameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1174 asn1_ctx_t asn1_ctx
;
1175 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1176 offset
= dissect_p772_ADatP3Parameters(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ADatP3Parameters_PDU
);
1179 static int dissect_ADatP3Data_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1181 asn1_ctx_t asn1_ctx
;
1182 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1183 offset
= dissect_p772_ADatP3Data(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ADatP3Data_PDU
);
1186 static int dissect_CorrectionsParameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1188 asn1_ctx_t asn1_ctx
;
1189 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1190 offset
= dissect_p772_CorrectionsParameters(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_CorrectionsParameters_PDU
);
1193 static int dissect_CorrectionsData_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1195 asn1_ctx_t asn1_ctx
;
1196 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1197 offset
= dissect_p772_CorrectionsData(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_CorrectionsData_PDU
);
1200 static int dissect_ForwardedEncryptedParameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1202 asn1_ctx_t asn1_ctx
;
1203 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1204 offset
= dissect_p772_ForwardedEncryptedParameters(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ForwardedEncryptedParameters_PDU
);
1207 static int dissect_ForwardedEncryptedData_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1209 asn1_ctx_t asn1_ctx
;
1210 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1211 offset
= dissect_p772_ForwardedEncryptedData(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ForwardedEncryptedData_PDU
);
1214 static int dissect_MMMessageParameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1216 asn1_ctx_t asn1_ctx
;
1217 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1218 offset
= dissect_p772_MMMessageParameters(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_MMMessageParameters_PDU
);
1221 static int dissect_MMMessageData_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1223 asn1_ctx_t asn1_ctx
;
1224 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1225 offset
= dissect_p772_MMMessageData(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_MMMessageData_PDU
);
1228 static int dissect_ACP127DataParameters_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1230 asn1_ctx_t asn1_ctx
;
1231 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1232 offset
= dissect_p772_ACP127DataParameters(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ACP127DataParameters_PDU
);
1235 static int dissect_ACP127DataData_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1237 asn1_ctx_t asn1_ctx
;
1238 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1239 offset
= dissect_p772_ACP127DataData(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_ACP127DataData_PDU
);
1242 static int dissect_Acp127NotificationType_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1244 asn1_ctx_t asn1_ctx
;
1245 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1246 offset
= dissect_p772_Acp127NotificationType(false, tvb
, offset
, &asn1_ctx
, tree
, hf_p772_Acp127NotificationType_PDU
);
1253 * Dissect STANAG 4406 PDUs inside a PPDU.
1256 dissect_p772(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void* data _U_
)
1259 proto_item
*item
=NULL
;
1260 proto_tree
*tree
=NULL
;
1261 asn1_ctx_t asn1_ctx
;
1262 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1265 item
= proto_tree_add_item(parent_tree
, proto_p772
, tvb
, 0, -1, ENC_NA
);
1266 tree
= proto_item_add_subtree(item
, ett_p772
);
1269 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "P772");
1270 col_set_str(pinfo
->cinfo
, COL_INFO
, "Military");
1272 dissect_p772_InformationObject(true, tvb
, offset
, &asn1_ctx
, tree
, -1);
1273 return tvb_captured_length(tvb
);
1278 /*--- proto_register_p772 -------------------------------------------*/
1279 void proto_register_p772(void) {
1281 /* List of fields */
1282 static hf_register_info hf
[] =
1284 { &hf_p772_InformationObject_PDU
,
1285 { "InformationObject", "p772.InformationObject",
1286 FT_UINT32
, BASE_DEC
, VALS(p22_InformationObject_vals
), 0,
1288 { &hf_p772_Acp127NotificationResponse_PDU
,
1289 { "Acp127NotificationResponse", "p772.Acp127NotificationResponse_element",
1290 FT_NONE
, BASE_NONE
, NULL
, 0,
1292 { &hf_p772_ExemptedAddressSeq_PDU
,
1293 { "ExemptedAddressSeq", "p772.ExemptedAddressSeq",
1294 FT_UINT32
, BASE_DEC
, NULL
, 0,
1296 { &hf_p772_ExtendedAuthorisationInfo_PDU
,
1297 { "ExtendedAuthorisationInfo", "p772.ExtendedAuthorisationInfo",
1298 FT_STRING
, BASE_NONE
, NULL
, 0,
1300 { &hf_p772_DistributionCodes_PDU
,
1301 { "DistributionCodes", "p772.DistributionCodes_element",
1302 FT_NONE
, BASE_NONE
, NULL
, 0,
1304 { &hf_p772_HandlingInstructions_PDU
,
1305 { "HandlingInstructions", "p772.HandlingInstructions",
1306 FT_UINT32
, BASE_DEC
, NULL
, 0,
1308 { &hf_p772_MessageInstructions_PDU
,
1309 { "MessageInstructions", "p772.MessageInstructions",
1310 FT_UINT32
, BASE_DEC
, NULL
, 0,
1312 { &hf_p772_CodressMessage_PDU
,
1313 { "CodressMessage", "p772.CodressMessage",
1314 FT_INT32
, BASE_DEC
, NULL
, 0,
1316 { &hf_p772_OriginatorReference_PDU
,
1317 { "OriginatorReference", "p772.OriginatorReference",
1318 FT_STRING
, BASE_NONE
, NULL
, 0,
1320 { &hf_p772_PrimaryPrecedence_PDU
,
1321 { "PrimaryPrecedence", "p772.PrimaryPrecedence",
1322 FT_INT32
, BASE_DEC
, VALS(p772_PrimaryPrecedence_vals
), 0,
1324 { &hf_p772_CopyPrecedence_PDU
,
1325 { "CopyPrecedence", "p772.CopyPrecedence",
1326 FT_INT32
, BASE_DEC
, VALS(p772_CopyPrecedence_vals
), 0,
1328 { &hf_p772_MessageType_PDU
,
1329 { "MessageType", "p772.MessageType_element",
1330 FT_NONE
, BASE_NONE
, NULL
, 0,
1332 { &hf_p772_AddressListDesignatorSeq_PDU
,
1333 { "AddressListDesignatorSeq", "p772.AddressListDesignatorSeq",
1334 FT_UINT32
, BASE_DEC
, NULL
, 0,
1336 { &hf_p772_OtherRecipientDesignatorSeq_PDU
,
1337 { "OtherRecipientDesignatorSeq", "p772.OtherRecipientDesignatorSeq",
1338 FT_UINT32
, BASE_DEC
, NULL
, 0,
1340 { &hf_p772_PilotInformationSeq_PDU
,
1341 { "PilotInformationSeq", "p772.PilotInformationSeq",
1342 FT_UINT32
, BASE_DEC
, NULL
, 0,
1344 { &hf_p772_Acp127MessageIdentifier_PDU
,
1345 { "Acp127MessageIdentifier", "p772.Acp127MessageIdentifier",
1346 FT_STRING
, BASE_NONE
, NULL
, 0,
1348 { &hf_p772_OriginatorPlad_PDU
,
1349 { "OriginatorPlad", "p772.OriginatorPlad",
1350 FT_STRING
, BASE_NONE
, NULL
, 0,
1352 { &hf_p772_SecurityInformationLabels_PDU
,
1353 { "SecurityInformationLabels", "p772.SecurityInformationLabels_element",
1354 FT_NONE
, BASE_NONE
, NULL
, 0,
1356 { &hf_p772_PriorityLevelQualifier_PDU
,
1357 { "PriorityLevelQualifier", "p772.PriorityLevelQualifier",
1358 FT_UINT32
, BASE_DEC
, VALS(p772_PriorityLevelQualifier_vals
), 0,
1360 { &hf_p772_ADatP3Parameters_PDU
,
1361 { "ADatP3Parameters", "p772.ADatP3Parameters",
1362 FT_INT32
, BASE_DEC
, NULL
, 0,
1364 { &hf_p772_ADatP3Data_PDU
,
1365 { "ADatP3Data", "p772.ADatP3Data",
1366 FT_UINT32
, BASE_DEC
, VALS(p772_ADatP3Data_vals
), 0,
1368 { &hf_p772_CorrectionsParameters_PDU
,
1369 { "CorrectionsParameters", "p772.CorrectionsParameters",
1370 FT_INT32
, BASE_DEC
, NULL
, 0,
1372 { &hf_p772_CorrectionsData_PDU
,
1373 { "CorrectionsData", "p772.CorrectionsData",
1374 FT_STRING
, BASE_NONE
, NULL
, 0,
1376 { &hf_p772_ForwardedEncryptedParameters_PDU
,
1377 { "ForwardedEncryptedParameters", "p772.ForwardedEncryptedParameters_element",
1378 FT_NONE
, BASE_NONE
, NULL
, 0,
1380 { &hf_p772_ForwardedEncryptedData_PDU
,
1381 { "ForwardedEncryptedData", "p772.ForwardedEncryptedData",
1382 FT_BYTES
, BASE_NONE
, NULL
, 0,
1384 { &hf_p772_MMMessageParameters_PDU
,
1385 { "MMMessageParameters", "p772.MMMessageParameters_element",
1386 FT_NONE
, BASE_NONE
, NULL
, 0,
1388 { &hf_p772_MMMessageData_PDU
,
1389 { "MMMessageData", "p772.MMMessageData_element",
1390 FT_NONE
, BASE_NONE
, NULL
, 0,
1392 { &hf_p772_ACP127DataParameters_PDU
,
1393 { "ACP127DataParameters", "p772.ACP127DataParameters",
1394 FT_INT32
, BASE_DEC
, NULL
, 0,
1396 { &hf_p772_ACP127DataData_PDU
,
1397 { "ACP127DataData", "p772.ACP127DataData",
1398 FT_STRING
, BASE_NONE
, NULL
, 0,
1400 { &hf_p772_Acp127NotificationType_PDU
,
1401 { "Acp127NotificationType", "p772.Acp127NotificationType",
1402 FT_BYTES
, BASE_NONE
, NULL
, 0,
1405 { "mm", "p772.mm_element",
1406 FT_NONE
, BASE_NONE
, NULL
, 0,
1409 { "mn", "p772.mn_element",
1410 FT_NONE
, BASE_NONE
, NULL
, 0,
1412 { &hf_p772_acp127_notification_type
,
1413 { "acp127-notification-type", "p772.acp127_notification_type",
1414 FT_BYTES
, BASE_NONE
, NULL
, 0,
1415 "Acp127NotificationType", HFILL
}},
1416 { &hf_p772_receipt_time
,
1417 { "receipt-time", "p772.receipt_time",
1418 FT_STRING
, BASE_NONE
, NULL
, 0,
1419 "ReceiptTimeField", HFILL
}},
1420 { &hf_p772_addressListIndicator
,
1421 { "addressListIndicator", "p772.addressListIndicator",
1422 FT_UINT32
, BASE_DEC
, NULL
, 0,
1424 { &hf_p772_acp127_recipient
,
1425 { "acp127-recipient", "p772.acp127_recipient",
1426 FT_STRING
, BASE_NONE
, NULL
, 0,
1427 "Acp127Recipient", HFILL
}},
1428 { &hf_p772_acp127_supp_info
,
1429 { "acp127-supp-info", "p772.acp127_supp_info",
1430 FT_STRING
, BASE_NONE
, NULL
, 0,
1431 "Acp127SuppInfo", HFILL
}},
1432 { &hf_p772_AddressListIndicator_item
,
1433 { "AddressListDesignator", "p772.AddressListDesignator_element",
1434 FT_NONE
, BASE_NONE
, NULL
, 0,
1436 { &hf_p772_ExemptedAddressSeq_item
,
1437 { "ExemptedAddress", "p772.ExemptedAddress_element",
1438 FT_NONE
, BASE_NONE
, NULL
, 0,
1441 { "sics", "p772.sics",
1442 FT_UINT32
, BASE_DEC
, NULL
, 0,
1443 "SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic", HFILL
}},
1444 { &hf_p772_sics_item
,
1445 { "Sic", "p772.Sic",
1446 FT_STRING
, BASE_NONE
, NULL
, 0,
1448 { &hf_p772_dist_Extensions
,
1449 { "dist-Extensions", "p772.dist_Extensions",
1450 FT_UINT32
, BASE_DEC
, NULL
, 0,
1451 "SEQUENCE_OF_DistributionExtensionField", HFILL
}},
1452 { &hf_p772_dist_Extensions_item
,
1453 { "DistributionExtensionField", "p772.DistributionExtensionField_element",
1454 FT_NONE
, BASE_NONE
, NULL
, 0,
1456 { &hf_p772_dist_type
,
1457 { "dist-type", "p772.dist_type",
1458 FT_OID
, BASE_NONE
, NULL
, 0,
1459 "OBJECT_IDENTIFIER", HFILL
}},
1460 { &hf_p772_dist_value
,
1461 { "dist-value", "p772.dist_value_element",
1462 FT_NONE
, BASE_NONE
, NULL
, 0,
1463 "T_dist_value", HFILL
}},
1464 { &hf_p772_HandlingInstructions_item
,
1465 { "MilitaryString", "p772.MilitaryString",
1466 FT_STRING
, BASE_NONE
, NULL
, 0,
1468 { &hf_p772_MessageInstructions_item
,
1469 { "MilitaryString", "p772.MilitaryString",
1470 FT_STRING
, BASE_NONE
, NULL
, 0,
1472 { &hf_p772_message_type_type
,
1473 { "type", "p772.message_type_type",
1474 FT_INT32
, BASE_DEC
, VALS(p772_TypeMessage_vals
), 0,
1475 "TypeMessage", HFILL
}},
1476 { &hf_p772_identifier
,
1477 { "identifier", "p772.identifier",
1478 FT_STRING
, BASE_NONE
, NULL
, 0,
1479 "MessageIdentifier", HFILL
}},
1480 { &hf_p772_AddressListDesignatorSeq_item
,
1481 { "AddressListDesignator", "p772.AddressListDesignator_element",
1482 FT_NONE
, BASE_NONE
, NULL
, 0,
1484 { &hf_p772_address_list_type
,
1485 { "type", "p772.address_list_type",
1486 FT_INT32
, BASE_DEC
, VALS(p772_AddressListType_vals
), 0,
1487 "AddressListType", HFILL
}},
1488 { &hf_p772_listName
,
1489 { "listName", "p772.listName_element",
1490 FT_NONE
, BASE_NONE
, NULL
, 0,
1491 "ORDescriptor", HFILL
}},
1492 { &hf_p772_notificationRequest
,
1493 { "notificationRequest", "p772.notificationRequest",
1494 FT_INT32
, BASE_DEC
, VALS(p772_AddressListRequest_vals
), 0,
1495 "AddressListRequest", HFILL
}},
1496 { &hf_p772_replyRequest
,
1497 { "replyRequest", "p772.replyRequest",
1498 FT_INT32
, BASE_DEC
, VALS(p772_AddressListRequest_vals
), 0,
1499 "AddressListRequest", HFILL
}},
1500 { &hf_p772_OtherRecipientDesignatorSeq_item
,
1501 { "OtherRecipientDesignator", "p772.OtherRecipientDesignator_element",
1502 FT_NONE
, BASE_NONE
, NULL
, 0,
1504 { &hf_p772_other_recipient_type
,
1505 { "type", "p772.other_recipient_type",
1506 FT_INT32
, BASE_DEC
, VALS(p772_OtherRecipientType_vals
), 0,
1507 "OtherRecipientType", HFILL
}},
1508 { &hf_p772_designator
,
1509 { "designator", "p772.designator",
1510 FT_STRING
, BASE_NONE
, NULL
, 0,
1511 "MilitaryString", HFILL
}},
1512 { &hf_p772_PilotInformationSeq_item
,
1513 { "PilotInformation", "p772.PilotInformation_element",
1514 FT_NONE
, BASE_NONE
, NULL
, 0,
1516 { &hf_p772_pilotPrecedence
,
1517 { "pilotPrecedence", "p772.pilotPrecedence",
1518 FT_INT32
, BASE_DEC
, VALS(p772_MMHSPrecedence_vals
), 0,
1519 "MMHSPrecedence", HFILL
}},
1520 { &hf_p772_pilotRecipient
,
1521 { "pilotRecipient", "p772.pilotRecipient",
1522 FT_UINT32
, BASE_DEC
, NULL
, 0,
1523 "SEQUENCE_OF_ORDescriptor", HFILL
}},
1524 { &hf_p772_pilotRecipient_item
,
1525 { "ORDescriptor", "p772.ORDescriptor_element",
1526 FT_NONE
, BASE_NONE
, NULL
, 0,
1528 { &hf_p772_pilotSecurity
,
1529 { "pilotSecurity", "p772.pilotSecurity_element",
1530 FT_NONE
, BASE_NONE
, NULL
, 0,
1531 "SecurityLabel", HFILL
}},
1532 { &hf_p772_pilotHandling
,
1533 { "pilotHandling", "p772.pilotHandling",
1534 FT_UINT32
, BASE_DEC
, NULL
, 0,
1535 "SEQUENCE_OF_MilitaryString", HFILL
}},
1536 { &hf_p772_pilotHandling_item
,
1537 { "MilitaryString", "p772.MilitaryString",
1538 FT_STRING
, BASE_NONE
, NULL
, 0,
1540 { &hf_p772_content_security_label
,
1541 { "content-security-label", "p772.content_security_label_element",
1542 FT_NONE
, BASE_NONE
, NULL
, 0,
1543 "SecurityLabel", HFILL
}},
1544 { &hf_p772_heading_security_label
,
1545 { "heading-security-label", "p772.heading_security_label_element",
1546 FT_NONE
, BASE_NONE
, NULL
, 0,
1547 "SecurityLabel", HFILL
}},
1548 { &hf_p772_body_part_security_labels
,
1549 { "body-part-security-labels", "p772.body_part_security_labels",
1550 FT_UINT32
, BASE_DEC
, NULL
, 0,
1551 "SEQUENCE_OF_BodyPartSecurityLabel", HFILL
}},
1552 { &hf_p772_body_part_security_labels_item
,
1553 { "BodyPartSecurityLabel", "p772.BodyPartSecurityLabel_element",
1554 FT_NONE
, BASE_NONE
, NULL
, 0,
1556 { &hf_p772_body_part_security_label
,
1557 { "body-part-security-label", "p772.body_part_security_label_element",
1558 FT_NONE
, BASE_NONE
, NULL
, 0,
1559 "SecurityLabel", HFILL
}},
1560 { &hf_p772_body_part_sequence_number
,
1561 { "body-part-sequence-number", "p772.body_part_sequence_number",
1562 FT_INT32
, BASE_DEC
, NULL
, 0,
1563 "BodyPartSequenceNumber", HFILL
}},
1564 { &hf_p772_lineOriented
,
1565 { "lineOriented", "p772.lineOriented",
1566 FT_STRING
, BASE_NONE
, NULL
, 0,
1567 "IA5String", HFILL
}},
1568 { &hf_p772_setOriented
,
1569 { "setOriented", "p772.setOriented",
1570 FT_UINT32
, BASE_DEC
, NULL
, 0,
1572 { &hf_p772_setOriented_item
,
1573 { "setOriented item", "p772.setOriented_item",
1574 FT_STRING
, BASE_NONE
, NULL
, 0,
1575 "IA5String", HFILL
}},
1576 { &hf_p772_delivery_time
,
1577 { "delivery-time", "p772.delivery_time",
1578 FT_STRING
, BASE_NONE
, NULL
, 0,
1579 "MessageDeliveryTime", HFILL
}},
1580 { &hf_p772_delivery_envelope
,
1581 { "delivery-envelope", "p772.delivery_envelope_element",
1582 FT_NONE
, BASE_NONE
, NULL
, 0,
1583 "OtherMessageDeliveryFields", HFILL
}},
1584 { &hf_p772_Acp127NotificationType_acp127_nn
,
1585 { "acp127-nn", "p772.Acp127NotificationType.acp127.nn",
1586 FT_BOOLEAN
, 8, NULL
, 0x80,
1588 { &hf_p772_Acp127NotificationType_acp127_pn
,
1589 { "acp127-pn", "p772.Acp127NotificationType.acp127.pn",
1590 FT_BOOLEAN
, 8, NULL
, 0x40,
1592 { &hf_p772_Acp127NotificationType_acp127_tn
,
1593 { "acp127-tn", "p772.Acp127NotificationType.acp127.tn",
1594 FT_BOOLEAN
, 8, NULL
, 0x20,
1598 /* List of subtrees */
1599 static int *ett
[] = {
1601 &ett_p772_InformationObject
,
1602 &ett_p772_Acp127NotificationResponse
,
1603 &ett_p772_AddressListIndicator
,
1604 &ett_p772_ExemptedAddressSeq
,
1605 &ett_p772_DistributionCodes
,
1606 &ett_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic
,
1607 &ett_p772_SEQUENCE_OF_DistributionExtensionField
,
1608 &ett_p772_DistributionExtensionField
,
1609 &ett_p772_HandlingInstructions
,
1610 &ett_p772_MessageInstructions
,
1611 &ett_p772_MessageType
,
1612 &ett_p772_AddressListDesignatorSeq
,
1613 &ett_p772_AddressListDesignator
,
1614 &ett_p772_OtherRecipientDesignatorSeq
,
1615 &ett_p772_OtherRecipientDesignator
,
1616 &ett_p772_PilotInformationSeq
,
1617 &ett_p772_PilotInformation
,
1618 &ett_p772_SEQUENCE_OF_ORDescriptor
,
1619 &ett_p772_SEQUENCE_OF_MilitaryString
,
1620 &ett_p772_SecurityInformationLabels
,
1621 &ett_p772_SEQUENCE_OF_BodyPartSecurityLabel
,
1622 &ett_p772_BodyPartSecurityLabel
,
1623 &ett_p772_ADatP3Data
,
1624 &ett_p772_T_setOriented
,
1625 &ett_p772_ForwardedEncryptedParameters
,
1626 &ett_p772_MMMessageParameters
,
1627 &ett_p772_Acp127NotificationType
,
1630 /* Register protocol */
1631 proto_p772
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
1632 register_dissector("p772", dissect_p772
, proto_p772
);
1634 /* Register fields and subtrees */
1635 proto_register_field_array(proto_p772
, hf
, array_length(hf
));
1636 proto_register_subtree_array(ett
, array_length(ett
));
1638 register_ber_syntax_dissector("STANAG 4406", proto_p772
, dissect_p772
);
1639 register_ber_oid_syntax(".p772", NULL
, "STANAG 4406");
1643 /*--- proto_reg_handoff_p772 --- */
1644 void proto_reg_handoff_p772(void) {
1645 register_ber_oid_dissector("1.3.26.0.4406.0.2.0", dissect_PrimaryPrecedence_PDU
, proto_p772
, "primary-precedence");
1646 register_ber_oid_dissector("1.3.26.0.4406.0.2.1", dissect_CopyPrecedence_PDU
, proto_p772
, "copy-precedence");
1647 register_ber_oid_dissector("1.3.26.0.4406.0.2.2", dissect_MessageType_PDU
, proto_p772
, "message-type");
1648 register_ber_oid_dissector("1.3.26.0.4406.0.2.3", dissect_AddressListDesignatorSeq_PDU
, proto_p772
, "address-list-indicator");
1649 register_ber_oid_dissector("1.3.26.0.4406.0.2.4", dissect_ExemptedAddressSeq_PDU
, proto_p772
, "exempted-address");
1650 register_ber_oid_dissector("1.3.26.0.4406.0.2.5", dissect_ExtendedAuthorisationInfo_PDU
, proto_p772
, "extended-authorisation-info");
1651 register_ber_oid_dissector("1.3.26.0.4406.0.2.6", dissect_DistributionCodes_PDU
, proto_p772
, "distribution-codes");
1652 register_ber_oid_dissector("1.3.26.0.4406.0.2.7", dissect_HandlingInstructions_PDU
, proto_p772
, "handling-instructions");
1653 register_ber_oid_dissector("1.3.26.0.4406.0.2.8", dissect_MessageInstructions_PDU
, proto_p772
, "message-instructions");
1654 register_ber_oid_dissector("1.3.26.0.4406.0.2.9", dissect_CodressMessage_PDU
, proto_p772
, "codress-message");
1655 register_ber_oid_dissector("1.3.26.0.4406.0.2.10", dissect_OriginatorReference_PDU
, proto_p772
, "originator-reference");
1656 register_ber_oid_dissector("1.3.26.0.4406.0.2.11", dissect_OtherRecipientDesignatorSeq_PDU
, proto_p772
, "other-recipients-indicator");
1657 register_ber_oid_dissector("1.3.26.0.4406.0.2.12", dissect_PilotInformationSeq_PDU
, proto_p772
, "pilot-forwarding-info");
1658 register_ber_oid_dissector("1.3.26.0.4406.0.2.13", dissect_Acp127MessageIdentifier_PDU
, proto_p772
, "acp127-message-identifier");
1659 register_ber_oid_dissector("1.3.26.0.4406.0.2.14", dissect_OriginatorPlad_PDU
, proto_p772
, "originator-plad");
1660 register_ber_oid_dissector("1.3.26.0.4406.0.2.15", dissect_Acp127NotificationType_PDU
, proto_p772
, "acp127-notification-request");
1661 register_ber_oid_dissector("1.3.26.0.4406.0.2.16", dissect_Acp127NotificationResponse_PDU
, proto_p772
, "acp127-notification-response");
1662 register_ber_oid_dissector("1.3.26.0.4406.0.2.17", dissect_SecurityInformationLabels_PDU
, proto_p772
, "information-labels");
1663 register_ber_oid_dissector("1.3.26.0.4406.0.8.0", dissect_PriorityLevelQualifier_PDU
, proto_p772
, "priority-level-qualifier");
1664 register_ber_oid_dissector(id_nato_mmhs_et_adatp3
, dissect_ADatP3Data_PDU
, proto_p772
, "adatp3");
1665 register_ber_oid_dissector(id_nato_mmhs_et_adatp3_parameters
, dissect_ADatP3Parameters_PDU
, proto_p772
, "adatp3-parameters");
1666 register_ber_oid_dissector(id_nato_mmhs_et_corrections
, dissect_CorrectionsData_PDU
, proto_p772
, "corrections");
1667 register_ber_oid_dissector(id_nato_mmhs_et_corrections_parameters
, dissect_CorrectionsParameters_PDU
, proto_p772
, "corrections-parameters");
1668 register_ber_oid_dissector(id_nato_mmhs_et_forwarded_encrypted
, dissect_ForwardedEncryptedData_PDU
, proto_p772
, "forwarded-encrypted");
1669 register_ber_oid_dissector(id_nato_mmhs_et_forwarded_encrypted_parameters
, dissect_ForwardedEncryptedParameters_PDU
, proto_p772
, "forwarded-encrypted-parameters");
1670 register_ber_oid_dissector(id_nato_mmhs_et_mm_message
, dissect_MMMessageData_PDU
, proto_p772
, "mm-message");
1671 register_ber_oid_dissector(id_nato_mmhs_et_mm_message_parameters
, dissect_MMMessageParameters_PDU
, proto_p772
, "mm-message-parameters");
1672 register_ber_oid_dissector(id_nato_mmhs_et_mm_acp127data
, dissect_ACP127DataData_PDU
, proto_p772
, "acp127-data");
1673 register_ber_oid_dissector(id_nato_mmhs_et_mm_acp127data_parameters
, dissect_ACP127DataParameters_PDU
, proto_p772
, "acp127-data-parameters");
1674 register_ber_oid_dissector("2.6.1.4.17.1.3.26.0.4406.0.4.1", dissect_InformationObject_PDU
, proto_p772
, "id-et-content-p772");
1677 register_ber_oid_dissector("1.3.26.0.4406.0.4.1", dissect_p772
, proto_p772
, "STANAG 4406");