Coverage Report

Created: 2026-01-02 06:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-p772.c
Line
Count
Source
1
/* Do not modify this file. Changes will be overwritten.                      */
2
/* Generated automatically by the ASN.1 to Wireshark dissector compiler       */
3
/* packet-p772.c                                                              */
4
/* asn2wrs.py -b -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 */
5
6
/* packet-p772.c
7
 * Routines for STANAG 4406 (X.400 Military Message Extensions)  packet dissection
8
 * Graeme Lunt 2005
9
 *
10
 * Wireshark - Network traffic analyzer
11
 * By Gerald Combs <gerald@wireshark.org>
12
 * Copyright 1998 Gerald Combs
13
 *
14
 * SPDX-License-Identifier: GPL-2.0-or-later
15
 */
16
17
#include "config.h"
18
19
#include <epan/packet.h>
20
#include <epan/asn1.h>
21
#include <wsutil/array.h>
22
23
#include "packet-ber.h"
24
25
#include "packet-x509if.h"
26
27
#include "packet-p772.h"
28
#include "packet-p1.h"
29
#include "packet-p22.h"
30
31
14
#define PNAME  "STANAG 4406 Message"
32
14
#define PSNAME "P772"
33
14
#define PFNAME "p772"
34
35
void proto_register_p772(void);
36
void proto_reg_handoff_p772(void);
37
38
39
/* Initialize the protocol and registered fields */
40
static int proto_p772;
41
42
140
#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
140
#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
14
#define id_nato_mmhs_et_adatp3         id_et".0"
78
14
#define id_nato_mmhs_et_corrections    id_et".1"
79
14
#define id_nato_mmhs_et_adatp3_parameters id_et".2"
80
14
#define id_nato_mmhs_et_corrections_parameters id_et".3"
81
14
#define id_nato_mmhs_et_forwarded_encrypted id_et".6"
82
14
#define id_nato_mmhs_et_forwarded_encrypted_parameters id_et".7"
83
14
#define id_nato_mmhs_et_mm_message     id_et".9"
84
14
#define id_nato_mmhs_et_mm_message_parameters id_et".10"
85
14
#define id_nato_mmhs_et_mm_acp127data  id_et".12"
86
14
#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
0
#define ub_military_string             69
142
0
#define ub_military_number_of_sics     8
143
0
#define lb_military_sic                3
144
0
#define ub_military_sic                8
145
0
#define ub_military_bigstring          128
146
0
#define ub_data_size                   65535
147
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 */
223
/* named bits */
224
static int hf_p772_Acp127NotificationType_acp127_nn;
225
static int hf_p772_Acp127NotificationType_acp127_pn;
226
static int hf_p772_Acp127NotificationType_acp127_tn;
227
228
/* Initialize the subtree pointers */
229
static int ett_p772;
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;
257
258
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 }
263
};
264
265
static unsigned
266
0
dissect_p772_InformationObject(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
267
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
268
0
                                 InformationObject_choice, hf_index, ett_p772_InformationObject,
269
0
                                 NULL);
270
271
0
  return offset;
272
0
}
273
274
275
static int * const Acp127NotificationType_bits[] = {
276
  &hf_p772_Acp127NotificationType_acp127_nn,
277
  &hf_p772_Acp127NotificationType_acp127_pn,
278
  &hf_p772_Acp127NotificationType_acp127_tn,
279
  NULL
280
};
281
282
static unsigned
283
0
dissect_p772_Acp127NotificationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
284
0
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
285
0
                                    Acp127NotificationType_bits, 3, hf_index, ett_p772_Acp127NotificationType,
286
0
                                    NULL);
287
288
0
  return offset;
289
0
}
290
291
292
static const value_string p772_AddressListType_vals[] = {
293
  {   0, "primaryAddressList" },
294
  {   1, "copyAddressList" },
295
  { 0, NULL }
296
};
297
298
299
static unsigned
300
0
dissect_p772_AddressListType(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
301
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
302
0
                                                NULL);
303
304
0
  return offset;
305
0
}
306
307
308
static const value_string p772_AddressListRequest_vals[] = {
309
  {   0, "action" },
310
  {   1, "info" },
311
  {   2, "both" },
312
  { 0, NULL }
313
};
314
315
316
static unsigned
317
0
dissect_p772_AddressListRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
318
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
319
0
                                                NULL);
320
321
0
  return offset;
322
0
}
323
324
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 }
331
};
332
333
static unsigned
334
0
dissect_p772_AddressListDesignator(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
335
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
336
0
                              AddressListDesignator_set, hf_index, ett_p772_AddressListDesignator);
337
338
0
  return offset;
339
0
}
340
341
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 },
344
};
345
346
static unsigned
347
0
dissect_p772_AddressListIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
348
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
349
0
                                      AddressListIndicator_sequence_of, hf_index, ett_p772_AddressListIndicator);
350
351
0
  return offset;
352
0
}
353
354
355
356
static unsigned
357
0
dissect_p772_Acp127Recipient(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
358
0
  offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
359
0
                                                        actx, tree, tvb, offset,
360
0
                                                        1, ub_military_bigstring, hf_index, NULL);
361
362
0
  return offset;
363
0
}
364
365
366
367
static unsigned
368
0
dissect_p772_Acp127SuppInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
369
0
  offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
370
0
                                                        actx, tree, tvb, offset,
371
0
                                                        1, ub_military_bigstring, hf_index, NULL);
372
373
0
  return offset;
374
0
}
375
376
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 }
384
};
385
386
static unsigned
387
0
dissect_p772_Acp127NotificationResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
388
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
389
0
                              Acp127NotificationResponse_set, hf_index, ett_p772_Acp127NotificationResponse);
390
391
0
  return offset;
392
0
}
393
394
395
396
static unsigned
397
0
dissect_p772_ExemptedAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
398
0
  offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
399
400
0
  return offset;
401
0
}
402
403
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 },
406
};
407
408
static unsigned
409
0
dissect_p772_ExemptedAddressSeq(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
410
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
411
0
                                      ExemptedAddressSeq_sequence_of, hf_index, ett_p772_ExemptedAddressSeq);
412
413
0
  return offset;
414
0
}
415
416
417
418
static unsigned
419
0
dissect_p772_ExtendedAuthorisationInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
420
0
  offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index, NULL, NULL);
421
422
0
  return offset;
423
0
}
424
425
426
427
static unsigned
428
0
dissect_p772_Sic(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
429
0
  offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
430
0
                                                        actx, tree, tvb, offset,
431
0
                                                        lb_military_sic, ub_military_sic, hf_index, NULL);
432
433
0
  return offset;
434
0
}
435
436
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 },
439
};
440
441
static unsigned
442
0
dissect_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
443
0
  offset = dissect_ber_constrained_sequence_of(implicit_tag, actx, tree, tvb, offset,
444
0
                                                  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);
445
446
0
  return offset;
447
0
}
448
449
450
451
static unsigned
452
0
dissect_p772_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
453
0
  offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
454
455
0
  return offset;
456
0
}
457
458
459
460
static unsigned
461
0
dissect_p772_T_dist_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
462
/* XXX: not implemented */
463
0
  offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
464
465
466
0
  return offset;
467
0
}
468
469
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 }
474
};
475
476
static unsigned
477
0
dissect_p772_DistributionExtensionField(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
478
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
479
0
                                   DistributionExtensionField_sequence, hf_index, ett_p772_DistributionExtensionField);
480
481
0
  return offset;
482
0
}
483
484
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 },
487
};
488
489
static unsigned
490
0
dissect_p772_SEQUENCE_OF_DistributionExtensionField(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
491
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
492
0
                                      SEQUENCE_OF_DistributionExtensionField_sequence_of, hf_index, ett_p772_SEQUENCE_OF_DistributionExtensionField);
493
494
0
  return offset;
495
0
}
496
497
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 }
502
};
503
504
static unsigned
505
0
dissect_p772_DistributionCodes(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
506
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
507
0
                              DistributionCodes_set, hf_index, ett_p772_DistributionCodes);
508
509
0
  return offset;
510
0
}
511
512
513
514
static unsigned
515
0
dissect_p772_MilitaryString(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
516
0
  offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
517
0
                                                        actx, tree, tvb, offset,
518
0
                                                        1, ub_military_string, hf_index, NULL);
519
520
0
  return offset;
521
0
}
522
523
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 },
526
};
527
528
static unsigned
529
0
dissect_p772_HandlingInstructions(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
530
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
531
0
                                      HandlingInstructions_sequence_of, hf_index, ett_p772_HandlingInstructions);
532
533
0
  return offset;
534
0
}
535
536
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 },
539
};
540
541
static unsigned
542
0
dissect_p772_MessageInstructions(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
543
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
544
0
                                      MessageInstructions_sequence_of, hf_index, ett_p772_MessageInstructions);
545
546
0
  return offset;
547
0
}
548
549
550
551
static unsigned
552
0
dissect_p772_CodressMessage(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
553
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
554
0
                                                NULL);
555
556
0
  return offset;
557
0
}
558
559
560
561
static unsigned
562
0
dissect_p772_OriginatorReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
563
0
  offset = dissect_p772_MilitaryString(implicit_tag, tvb, offset, actx, tree, hf_index);
564
565
0
  return offset;
566
0
}
567
568
569
static const value_string p772_MMHSPrecedence_vals[] = {
570
  {   0, "deferred" },
571
  {   1, "routine" },
572
  {   2, "priority" },
573
  {   3, "immediate" },
574
  {   4, "flash" },
575
  {   5, "override" },
576
  {  16, "ecp" },
577
  {  17, "critic" },
578
  {  18, "override" },
579
  { 0, NULL }
580
};
581
582
583
static unsigned
584
0
dissect_p772_MMHSPrecedence(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
585
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
586
0
                                                NULL);
587
588
0
  return offset;
589
0
}
590
591
592
static const value_string p772_PrimaryPrecedence_vals[] = {
593
  {   0, "deferred" },
594
  {   1, "routine" },
595
  {   2, "priority" },
596
  {   3, "immediate" },
597
  {   4, "flash" },
598
  {   5, "override" },
599
  {  16, "ecp" },
600
  {  17, "critic" },
601
  {  18, "override" },
602
  { 0, NULL }
603
};
604
605
606
static unsigned
607
0
dissect_p772_PrimaryPrecedence(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
608
0
  int32_t precedence;
609
0
    offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
610
0
                                                (uint32_t*)&precedence);
611
612
0
  col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (primary=%s)", val_to_str(actx->pinfo->pool, precedence, p772_PrimaryPrecedence_vals, "precedence(%d)"));
613
614
615
0
  return offset;
616
0
}
617
618
619
static const value_string p772_CopyPrecedence_vals[] = {
620
  {   0, "deferred" },
621
  {   1, "routine" },
622
  {   2, "priority" },
623
  {   3, "immediate" },
624
  {   4, "flash" },
625
  {   5, "override" },
626
  {  16, "ecp" },
627
  {  17, "critic" },
628
  {  18, "override" },
629
  { 0, NULL }
630
};
631
632
633
static unsigned
634
0
dissect_p772_CopyPrecedence(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
635
0
  int32_t precedence;
636
0
    offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
637
0
                                                (uint32_t*)&precedence);
638
639
0
  col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (copy=%s)", val_to_str(actx->pinfo->pool, precedence, p772_CopyPrecedence_vals, "precedence(%d)"));
640
641
0
  return offset;
642
0
}
643
644
645
static const value_string p772_TypeMessage_vals[] = {
646
  {   0, "exercise" },
647
  {   1, "operation" },
648
  {   2, "project" },
649
  {   3, "drill" },
650
  { 0, NULL }
651
};
652
653
654
static unsigned
655
0
dissect_p772_TypeMessage(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
656
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
657
0
                                                NULL);
658
659
0
  return offset;
660
0
}
661
662
663
664
static unsigned
665
0
dissect_p772_MessageIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
666
0
  offset = dissect_p772_MilitaryString(implicit_tag, tvb, offset, actx, tree, hf_index);
667
668
0
  return offset;
669
0
}
670
671
672
static const ber_sequence_t MessageType_set[] = {
673
  { &hf_p772_message_type_type, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p772_TypeMessage },
674
  { &hf_p772_identifier     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_MessageIdentifier },
675
  { NULL, 0, 0, 0, NULL }
676
};
677
678
static unsigned
679
0
dissect_p772_MessageType(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
680
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
681
0
                              MessageType_set, hf_index, ett_p772_MessageType);
682
683
0
  return offset;
684
0
}
685
686
687
static const ber_sequence_t AddressListDesignatorSeq_sequence_of[1] = {
688
  { &hf_p772_AddressListDesignatorSeq_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p772_AddressListDesignator },
689
};
690
691
static unsigned
692
0
dissect_p772_AddressListDesignatorSeq(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
693
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
694
0
                                      AddressListDesignatorSeq_sequence_of, hf_index, ett_p772_AddressListDesignatorSeq);
695
696
0
  return offset;
697
0
}
698
699
700
static const value_string p772_OtherRecipientType_vals[] = {
701
  {   0, "primary" },
702
  {   1, "copy" },
703
  { 0, NULL }
704
};
705
706
707
static unsigned
708
0
dissect_p772_OtherRecipientType(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
709
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
710
0
                                                NULL);
711
712
0
  return offset;
713
0
}
714
715
716
static const ber_sequence_t OtherRecipientDesignator_set[] = {
717
  { &hf_p772_other_recipient_type, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p772_OtherRecipientType },
718
  { &hf_p772_designator     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p772_MilitaryString },
719
  { NULL, 0, 0, 0, NULL }
720
};
721
722
static unsigned
723
0
dissect_p772_OtherRecipientDesignator(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
724
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
725
0
                              OtherRecipientDesignator_set, hf_index, ett_p772_OtherRecipientDesignator);
726
727
0
  return offset;
728
0
}
729
730
731
static const ber_sequence_t OtherRecipientDesignatorSeq_sequence_of[1] = {
732
  { &hf_p772_OtherRecipientDesignatorSeq_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p772_OtherRecipientDesignator },
733
};
734
735
static unsigned
736
0
dissect_p772_OtherRecipientDesignatorSeq(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
737
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
738
0
                                      OtherRecipientDesignatorSeq_sequence_of, hf_index, ett_p772_OtherRecipientDesignatorSeq);
739
740
0
  return offset;
741
0
}
742
743
744
static const ber_sequence_t SEQUENCE_OF_ORDescriptor_sequence_of[1] = {
745
  { &hf_p772_pilotRecipient_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_ORDescriptor },
746
};
747
748
static unsigned
749
0
dissect_p772_SEQUENCE_OF_ORDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
750
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
751
0
                                      SEQUENCE_OF_ORDescriptor_sequence_of, hf_index, ett_p772_SEQUENCE_OF_ORDescriptor);
752
753
0
  return offset;
754
0
}
755
756
757
static const ber_sequence_t SEQUENCE_OF_MilitaryString_sequence_of[1] = {
758
  { &hf_p772_pilotHandling_item, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_p772_MilitaryString },
759
};
760
761
static unsigned
762
0
dissect_p772_SEQUENCE_OF_MilitaryString(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
763
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
764
0
                                      SEQUENCE_OF_MilitaryString_sequence_of, hf_index, ett_p772_SEQUENCE_OF_MilitaryString);
765
766
0
  return offset;
767
0
}
768
769
770
static const ber_sequence_t PilotInformation_sequence[] = {
771
  { &hf_p772_pilotPrecedence, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_MMHSPrecedence },
772
  { &hf_p772_pilotRecipient , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_SEQUENCE_OF_ORDescriptor },
773
  { &hf_p772_pilotSecurity  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
774
  { &hf_p772_pilotHandling  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_SEQUENCE_OF_MilitaryString },
775
  { NULL, 0, 0, 0, NULL }
776
};
777
778
static unsigned
779
0
dissect_p772_PilotInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
780
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
781
0
                                   PilotInformation_sequence, hf_index, ett_p772_PilotInformation);
782
783
0
  return offset;
784
0
}
785
786
787
static const ber_sequence_t PilotInformationSeq_sequence_of[1] = {
788
  { &hf_p772_PilotInformationSeq_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p772_PilotInformation },
789
};
790
791
static unsigned
792
0
dissect_p772_PilotInformationSeq(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
793
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
794
0
                                      PilotInformationSeq_sequence_of, hf_index, ett_p772_PilotInformationSeq);
795
796
0
  return offset;
797
0
}
798
799
800
801
static unsigned
802
0
dissect_p772_Acp127MessageIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
803
0
  offset = dissect_p772_MilitaryString(implicit_tag, tvb, offset, actx, tree, hf_index);
804
805
0
  return offset;
806
0
}
807
808
809
810
static unsigned
811
0
dissect_p772_OriginatorPlad(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
812
0
  offset = dissect_p772_MilitaryString(implicit_tag, tvb, offset, actx, tree, hf_index);
813
814
0
  return offset;
815
0
}
816
817
818
819
static unsigned
820
0
dissect_p772_BodyPartSequenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
821
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
822
0
                                                NULL);
823
824
0
  return offset;
825
0
}
826
827
828
static const ber_sequence_t BodyPartSecurityLabel_set[] = {
829
  { &hf_p772_body_part_security_label, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
830
  { &hf_p772_body_part_sequence_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_BodyPartSequenceNumber },
831
  { NULL, 0, 0, 0, NULL }
832
};
833
834
static unsigned
835
0
dissect_p772_BodyPartSecurityLabel(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
836
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
837
0
                              BodyPartSecurityLabel_set, hf_index, ett_p772_BodyPartSecurityLabel);
838
839
0
  return offset;
840
0
}
841
842
843
static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = {
844
  { &hf_p772_body_part_security_labels_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p772_BodyPartSecurityLabel },
845
};
846
847
static unsigned
848
0
dissect_p772_SEQUENCE_OF_BodyPartSecurityLabel(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
849
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
850
0
                                      SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_p772_SEQUENCE_OF_BodyPartSecurityLabel);
851
852
0
  return offset;
853
0
}
854
855
856
static const ber_sequence_t SecurityInformationLabels_sequence[] = {
857
  { &hf_p772_content_security_label, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
858
  { &hf_p772_heading_security_label, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
859
  { &hf_p772_body_part_security_labels, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p772_SEQUENCE_OF_BodyPartSecurityLabel },
860
  { NULL, 0, 0, 0, NULL }
861
};
862
863
static unsigned
864
0
dissect_p772_SecurityInformationLabels(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
865
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
866
0
                                   SecurityInformationLabels_sequence, hf_index, ett_p772_SecurityInformationLabels);
867
868
0
  return offset;
869
0
}
870
871
872
static const value_string p772_PriorityLevelQualifier_vals[] = {
873
  {   0, "low" },
874
  {   1, "high" },
875
  { 0, NULL }
876
};
877
878
879
static unsigned
880
0
dissect_p772_PriorityLevelQualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
881
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
882
0
                                  NULL);
883
884
0
  return offset;
885
0
}
886
887
888
889
static unsigned
890
0
dissect_p772_ADatP3Parameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
891
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
892
0
                                                NULL);
893
894
0
  return offset;
895
0
}
896
897
898
899
static unsigned
900
0
dissect_p772_IA5String(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
901
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
902
0
                                            actx, tree, tvb, offset, hf_index,
903
0
                                            NULL);
904
905
0
  return offset;
906
0
}
907
908
909
static const ber_sequence_t T_setOriented_sequence_of[1] = {
910
  { &hf_p772_setOriented_item, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_p772_IA5String },
911
};
912
913
static unsigned
914
0
dissect_p772_T_setOriented(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
915
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
916
0
                                      T_setOriented_sequence_of, hf_index, ett_p772_T_setOriented);
917
918
0
  return offset;
919
0
}
920
921
922
static const value_string p772_ADatP3Data_vals[] = {
923
  {   0, "lineOriented" },
924
  {   1, "setOriented" },
925
  { 0, NULL }
926
};
927
928
static const ber_choice_t ADatP3Data_choice[] = {
929
  {   0, &hf_p772_lineOriented   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p772_IA5String },
930
  {   1, &hf_p772_setOriented    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p772_T_setOriented },
931
  { 0, NULL, 0, 0, 0, NULL }
932
};
933
934
static unsigned
935
0
dissect_p772_ADatP3Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
936
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
937
0
                                 ADatP3Data_choice, hf_index, ett_p772_ADatP3Data,
938
0
                                 NULL);
939
940
0
  return offset;
941
0
}
942
943
944
945
static unsigned
946
0
dissect_p772_CorrectionsParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
947
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
948
0
                                                NULL);
949
950
0
  return offset;
951
0
}
952
953
954
955
static unsigned
956
0
dissect_p772_CorrectionsData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
957
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
958
0
                                            actx, tree, tvb, offset, hf_index,
959
0
                                            NULL);
960
961
0
  return offset;
962
0
}
963
964
965
static const ber_sequence_t ForwardedEncryptedParameters_set[] = {
966
  { &hf_p772_delivery_time  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_MessageDeliveryTime },
967
  { &hf_p772_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p1_OtherMessageDeliveryFields },
968
  { NULL, 0, 0, 0, NULL }
969
};
970
971
static unsigned
972
0
dissect_p772_ForwardedEncryptedParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
973
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
974
0
                              ForwardedEncryptedParameters_set, hf_index, ett_p772_ForwardedEncryptedParameters);
975
976
0
  return offset;
977
0
}
978
979
980
981
static unsigned
982
0
dissect_p772_ForwardedEncryptedData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
983
0
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
984
0
                                    NULL, 0, hf_index, -1,
985
0
                                    NULL);
986
987
0
  return offset;
988
0
}
989
990
991
static const ber_sequence_t MMMessageParameters_set[] = {
992
  { &hf_p772_delivery_time  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_MessageDeliveryTime },
993
  { &hf_p772_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p1_OtherMessageDeliveryFields },
994
  { NULL, 0, 0, 0, NULL }
995
};
996
997
static unsigned
998
0
dissect_p772_MMMessageParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
999
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1000
0
                              MMMessageParameters_set, hf_index, ett_p772_MMMessageParameters);
1001
1002
0
  return offset;
1003
0
}
1004
1005
1006
1007
static unsigned
1008
0
dissect_p772_MMMessageData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1009
0
  offset = dissect_p22_IPM(implicit_tag, tvb, offset, actx, tree, hf_index);
1010
1011
0
  return offset;
1012
0
}
1013
1014
1015
1016
static unsigned
1017
0
dissect_p772_ACP127DataParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1018
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1019
0
                                                NULL);
1020
1021
0
  return offset;
1022
0
}
1023
1024
1025
1026
static unsigned
1027
0
dissect_p772_ACP127DataData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1028
0
  offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1029
0
                                                        actx, tree, tvb, offset,
1030
0
                                                        1, ub_data_size, hf_index, NULL);
1031
1032
0
  return offset;
1033
0
}
1034
1035
/*--- PDUs ---*/
1036
1037
0
static int dissect_InformationObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1038
0
  unsigned offset = 0;
1039
0
  asn1_ctx_t asn1_ctx;
1040
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1041
0
  offset = dissect_p772_InformationObject(false, tvb, offset, &asn1_ctx, tree, hf_p772_InformationObject_PDU);
1042
0
  return offset;
1043
0
}
1044
0
static int dissect_Acp127NotificationResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1045
0
  unsigned offset = 0;
1046
0
  asn1_ctx_t asn1_ctx;
1047
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1048
0
  offset = dissect_p772_Acp127NotificationResponse(false, tvb, offset, &asn1_ctx, tree, hf_p772_Acp127NotificationResponse_PDU);
1049
0
  return offset;
1050
0
}
1051
0
static int dissect_ExemptedAddressSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1052
0
  unsigned offset = 0;
1053
0
  asn1_ctx_t asn1_ctx;
1054
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1055
0
  offset = dissect_p772_ExemptedAddressSeq(false, tvb, offset, &asn1_ctx, tree, hf_p772_ExemptedAddressSeq_PDU);
1056
0
  return offset;
1057
0
}
1058
0
static int dissect_ExtendedAuthorisationInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1059
0
  unsigned offset = 0;
1060
0
  asn1_ctx_t asn1_ctx;
1061
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1062
0
  offset = dissect_p772_ExtendedAuthorisationInfo(false, tvb, offset, &asn1_ctx, tree, hf_p772_ExtendedAuthorisationInfo_PDU);
1063
0
  return offset;
1064
0
}
1065
0
static int dissect_DistributionCodes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1066
0
  unsigned offset = 0;
1067
0
  asn1_ctx_t asn1_ctx;
1068
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1069
0
  offset = dissect_p772_DistributionCodes(false, tvb, offset, &asn1_ctx, tree, hf_p772_DistributionCodes_PDU);
1070
0
  return offset;
1071
0
}
1072
0
static int dissect_HandlingInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1073
0
  unsigned offset = 0;
1074
0
  asn1_ctx_t asn1_ctx;
1075
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1076
0
  offset = dissect_p772_HandlingInstructions(false, tvb, offset, &asn1_ctx, tree, hf_p772_HandlingInstructions_PDU);
1077
0
  return offset;
1078
0
}
1079
0
static int dissect_MessageInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1080
0
  unsigned offset = 0;
1081
0
  asn1_ctx_t asn1_ctx;
1082
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1083
0
  offset = dissect_p772_MessageInstructions(false, tvb, offset, &asn1_ctx, tree, hf_p772_MessageInstructions_PDU);
1084
0
  return offset;
1085
0
}
1086
0
static int dissect_CodressMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1087
0
  unsigned offset = 0;
1088
0
  asn1_ctx_t asn1_ctx;
1089
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1090
0
  offset = dissect_p772_CodressMessage(false, tvb, offset, &asn1_ctx, tree, hf_p772_CodressMessage_PDU);
1091
0
  return offset;
1092
0
}
1093
0
static int dissect_OriginatorReference_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1094
0
  unsigned offset = 0;
1095
0
  asn1_ctx_t asn1_ctx;
1096
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1097
0
  offset = dissect_p772_OriginatorReference(false, tvb, offset, &asn1_ctx, tree, hf_p772_OriginatorReference_PDU);
1098
0
  return offset;
1099
0
}
1100
0
static int dissect_PrimaryPrecedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1101
0
  unsigned offset = 0;
1102
0
  asn1_ctx_t asn1_ctx;
1103
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1104
0
  offset = dissect_p772_PrimaryPrecedence(false, tvb, offset, &asn1_ctx, tree, hf_p772_PrimaryPrecedence_PDU);
1105
0
  return offset;
1106
0
}
1107
0
static int dissect_CopyPrecedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1108
0
  unsigned offset = 0;
1109
0
  asn1_ctx_t asn1_ctx;
1110
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1111
0
  offset = dissect_p772_CopyPrecedence(false, tvb, offset, &asn1_ctx, tree, hf_p772_CopyPrecedence_PDU);
1112
0
  return offset;
1113
0
}
1114
0
static int dissect_MessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1115
0
  unsigned offset = 0;
1116
0
  asn1_ctx_t asn1_ctx;
1117
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1118
0
  offset = dissect_p772_MessageType(false, tvb, offset, &asn1_ctx, tree, hf_p772_MessageType_PDU);
1119
0
  return offset;
1120
0
}
1121
0
static int dissect_AddressListDesignatorSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1122
0
  unsigned offset = 0;
1123
0
  asn1_ctx_t asn1_ctx;
1124
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1125
0
  offset = dissect_p772_AddressListDesignatorSeq(false, tvb, offset, &asn1_ctx, tree, hf_p772_AddressListDesignatorSeq_PDU);
1126
0
  return offset;
1127
0
}
1128
0
static int dissect_OtherRecipientDesignatorSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1129
0
  unsigned offset = 0;
1130
0
  asn1_ctx_t asn1_ctx;
1131
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1132
0
  offset = dissect_p772_OtherRecipientDesignatorSeq(false, tvb, offset, &asn1_ctx, tree, hf_p772_OtherRecipientDesignatorSeq_PDU);
1133
0
  return offset;
1134
0
}
1135
0
static int dissect_PilotInformationSeq_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1136
0
  unsigned offset = 0;
1137
0
  asn1_ctx_t asn1_ctx;
1138
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1139
0
  offset = dissect_p772_PilotInformationSeq(false, tvb, offset, &asn1_ctx, tree, hf_p772_PilotInformationSeq_PDU);
1140
0
  return offset;
1141
0
}
1142
0
static int dissect_Acp127MessageIdentifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1143
0
  unsigned offset = 0;
1144
0
  asn1_ctx_t asn1_ctx;
1145
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1146
0
  offset = dissect_p772_Acp127MessageIdentifier(false, tvb, offset, &asn1_ctx, tree, hf_p772_Acp127MessageIdentifier_PDU);
1147
0
  return offset;
1148
0
}
1149
0
static int dissect_OriginatorPlad_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1150
0
  unsigned offset = 0;
1151
0
  asn1_ctx_t asn1_ctx;
1152
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1153
0
  offset = dissect_p772_OriginatorPlad(false, tvb, offset, &asn1_ctx, tree, hf_p772_OriginatorPlad_PDU);
1154
0
  return offset;
1155
0
}
1156
0
static int dissect_SecurityInformationLabels_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1157
0
  unsigned offset = 0;
1158
0
  asn1_ctx_t asn1_ctx;
1159
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1160
0
  offset = dissect_p772_SecurityInformationLabels(false, tvb, offset, &asn1_ctx, tree, hf_p772_SecurityInformationLabels_PDU);
1161
0
  return offset;
1162
0
}
1163
0
static int dissect_PriorityLevelQualifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1164
0
  unsigned offset = 0;
1165
0
  asn1_ctx_t asn1_ctx;
1166
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1167
0
  offset = dissect_p772_PriorityLevelQualifier(false, tvb, offset, &asn1_ctx, tree, hf_p772_PriorityLevelQualifier_PDU);
1168
0
  return offset;
1169
0
}
1170
0
static int dissect_ADatP3Parameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1171
0
  unsigned offset = 0;
1172
0
  asn1_ctx_t asn1_ctx;
1173
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1174
0
  offset = dissect_p772_ADatP3Parameters(false, tvb, offset, &asn1_ctx, tree, hf_p772_ADatP3Parameters_PDU);
1175
0
  return offset;
1176
0
}
1177
0
static int dissect_ADatP3Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1178
0
  unsigned offset = 0;
1179
0
  asn1_ctx_t asn1_ctx;
1180
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1181
0
  offset = dissect_p772_ADatP3Data(false, tvb, offset, &asn1_ctx, tree, hf_p772_ADatP3Data_PDU);
1182
0
  return offset;
1183
0
}
1184
0
static int dissect_CorrectionsParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1185
0
  unsigned offset = 0;
1186
0
  asn1_ctx_t asn1_ctx;
1187
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1188
0
  offset = dissect_p772_CorrectionsParameters(false, tvb, offset, &asn1_ctx, tree, hf_p772_CorrectionsParameters_PDU);
1189
0
  return offset;
1190
0
}
1191
0
static int dissect_CorrectionsData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1192
0
  unsigned offset = 0;
1193
0
  asn1_ctx_t asn1_ctx;
1194
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1195
0
  offset = dissect_p772_CorrectionsData(false, tvb, offset, &asn1_ctx, tree, hf_p772_CorrectionsData_PDU);
1196
0
  return offset;
1197
0
}
1198
0
static int dissect_ForwardedEncryptedParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1199
0
  unsigned offset = 0;
1200
0
  asn1_ctx_t asn1_ctx;
1201
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1202
0
  offset = dissect_p772_ForwardedEncryptedParameters(false, tvb, offset, &asn1_ctx, tree, hf_p772_ForwardedEncryptedParameters_PDU);
1203
0
  return offset;
1204
0
}
1205
0
static int dissect_ForwardedEncryptedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1206
0
  unsigned offset = 0;
1207
0
  asn1_ctx_t asn1_ctx;
1208
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1209
0
  offset = dissect_p772_ForwardedEncryptedData(false, tvb, offset, &asn1_ctx, tree, hf_p772_ForwardedEncryptedData_PDU);
1210
0
  return offset;
1211
0
}
1212
0
static int dissect_MMMessageParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1213
0
  unsigned offset = 0;
1214
0
  asn1_ctx_t asn1_ctx;
1215
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1216
0
  offset = dissect_p772_MMMessageParameters(false, tvb, offset, &asn1_ctx, tree, hf_p772_MMMessageParameters_PDU);
1217
0
  return offset;
1218
0
}
1219
0
static int dissect_MMMessageData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1220
0
  unsigned offset = 0;
1221
0
  asn1_ctx_t asn1_ctx;
1222
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1223
0
  offset = dissect_p772_MMMessageData(false, tvb, offset, &asn1_ctx, tree, hf_p772_MMMessageData_PDU);
1224
0
  return offset;
1225
0
}
1226
0
static int dissect_ACP127DataParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1227
0
  unsigned offset = 0;
1228
0
  asn1_ctx_t asn1_ctx;
1229
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1230
0
  offset = dissect_p772_ACP127DataParameters(false, tvb, offset, &asn1_ctx, tree, hf_p772_ACP127DataParameters_PDU);
1231
0
  return offset;
1232
0
}
1233
0
static int dissect_ACP127DataData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1234
0
  unsigned offset = 0;
1235
0
  asn1_ctx_t asn1_ctx;
1236
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1237
0
  offset = dissect_p772_ACP127DataData(false, tvb, offset, &asn1_ctx, tree, hf_p772_ACP127DataData_PDU);
1238
0
  return offset;
1239
0
}
1240
0
static int dissect_Acp127NotificationType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1241
0
  unsigned offset = 0;
1242
0
  asn1_ctx_t asn1_ctx;
1243
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1244
0
  offset = dissect_p772_Acp127NotificationType(false, tvb, offset, &asn1_ctx, tree, hf_p772_Acp127NotificationType_PDU);
1245
0
  return offset;
1246
0
}
1247
1248
1249
1250
/*
1251
* Dissect STANAG 4406 PDUs inside a PPDU.
1252
*/
1253
static int
1254
dissect_p772(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_)
1255
0
{
1256
0
  int offset = 0;
1257
0
  proto_item *item=NULL;
1258
0
  proto_tree *tree=NULL;
1259
0
  asn1_ctx_t asn1_ctx;
1260
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1261
1262
0
  if (parent_tree) {
1263
0
    item = proto_tree_add_item(parent_tree, proto_p772, tvb, 0, -1, ENC_NA);
1264
0
    tree = proto_item_add_subtree(item, ett_p772);
1265
0
  }
1266
1267
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "P772");
1268
0
  col_set_str(pinfo->cinfo, COL_INFO, "Military");
1269
1270
0
  dissect_p772_InformationObject(true, tvb, offset, &asn1_ctx , tree, -1);
1271
0
  return tvb_captured_length(tvb);
1272
0
}
1273
1274
1275
1276
/*--- proto_register_p772 -------------------------------------------*/
1277
14
void proto_register_p772(void) {
1278
1279
  /* List of fields */
1280
14
  static hf_register_info hf[] =
1281
14
  {
1282
14
    { &hf_p772_InformationObject_PDU,
1283
14
      { "InformationObject", "p772.InformationObject",
1284
14
        FT_UINT32, BASE_DEC, VALS(p22_InformationObject_vals), 0,
1285
14
        NULL, HFILL }},
1286
14
    { &hf_p772_Acp127NotificationResponse_PDU,
1287
14
      { "Acp127NotificationResponse", "p772.Acp127NotificationResponse_element",
1288
14
        FT_NONE, BASE_NONE, NULL, 0,
1289
14
        NULL, HFILL }},
1290
14
    { &hf_p772_ExemptedAddressSeq_PDU,
1291
14
      { "ExemptedAddressSeq", "p772.ExemptedAddressSeq",
1292
14
        FT_UINT32, BASE_DEC, NULL, 0,
1293
14
        NULL, HFILL }},
1294
14
    { &hf_p772_ExtendedAuthorisationInfo_PDU,
1295
14
      { "ExtendedAuthorisationInfo", "p772.ExtendedAuthorisationInfo",
1296
14
        FT_STRING, BASE_NONE, NULL, 0,
1297
14
        NULL, HFILL }},
1298
14
    { &hf_p772_DistributionCodes_PDU,
1299
14
      { "DistributionCodes", "p772.DistributionCodes_element",
1300
14
        FT_NONE, BASE_NONE, NULL, 0,
1301
14
        NULL, HFILL }},
1302
14
    { &hf_p772_HandlingInstructions_PDU,
1303
14
      { "HandlingInstructions", "p772.HandlingInstructions",
1304
14
        FT_UINT32, BASE_DEC, NULL, 0,
1305
14
        NULL, HFILL }},
1306
14
    { &hf_p772_MessageInstructions_PDU,
1307
14
      { "MessageInstructions", "p772.MessageInstructions",
1308
14
        FT_UINT32, BASE_DEC, NULL, 0,
1309
14
        NULL, HFILL }},
1310
14
    { &hf_p772_CodressMessage_PDU,
1311
14
      { "CodressMessage", "p772.CodressMessage",
1312
14
        FT_INT32, BASE_DEC, NULL, 0,
1313
14
        NULL, HFILL }},
1314
14
    { &hf_p772_OriginatorReference_PDU,
1315
14
      { "OriginatorReference", "p772.OriginatorReference",
1316
14
        FT_STRING, BASE_NONE, NULL, 0,
1317
14
        NULL, HFILL }},
1318
14
    { &hf_p772_PrimaryPrecedence_PDU,
1319
14
      { "PrimaryPrecedence", "p772.PrimaryPrecedence",
1320
14
        FT_INT32, BASE_DEC, VALS(p772_PrimaryPrecedence_vals), 0,
1321
14
        NULL, HFILL }},
1322
14
    { &hf_p772_CopyPrecedence_PDU,
1323
14
      { "CopyPrecedence", "p772.CopyPrecedence",
1324
14
        FT_INT32, BASE_DEC, VALS(p772_CopyPrecedence_vals), 0,
1325
14
        NULL, HFILL }},
1326
14
    { &hf_p772_MessageType_PDU,
1327
14
      { "MessageType", "p772.MessageType_element",
1328
14
        FT_NONE, BASE_NONE, NULL, 0,
1329
14
        NULL, HFILL }},
1330
14
    { &hf_p772_AddressListDesignatorSeq_PDU,
1331
14
      { "AddressListDesignatorSeq", "p772.AddressListDesignatorSeq",
1332
14
        FT_UINT32, BASE_DEC, NULL, 0,
1333
14
        NULL, HFILL }},
1334
14
    { &hf_p772_OtherRecipientDesignatorSeq_PDU,
1335
14
      { "OtherRecipientDesignatorSeq", "p772.OtherRecipientDesignatorSeq",
1336
14
        FT_UINT32, BASE_DEC, NULL, 0,
1337
14
        NULL, HFILL }},
1338
14
    { &hf_p772_PilotInformationSeq_PDU,
1339
14
      { "PilotInformationSeq", "p772.PilotInformationSeq",
1340
14
        FT_UINT32, BASE_DEC, NULL, 0,
1341
14
        NULL, HFILL }},
1342
14
    { &hf_p772_Acp127MessageIdentifier_PDU,
1343
14
      { "Acp127MessageIdentifier", "p772.Acp127MessageIdentifier",
1344
14
        FT_STRING, BASE_NONE, NULL, 0,
1345
14
        NULL, HFILL }},
1346
14
    { &hf_p772_OriginatorPlad_PDU,
1347
14
      { "OriginatorPlad", "p772.OriginatorPlad",
1348
14
        FT_STRING, BASE_NONE, NULL, 0,
1349
14
        NULL, HFILL }},
1350
14
    { &hf_p772_SecurityInformationLabels_PDU,
1351
14
      { "SecurityInformationLabels", "p772.SecurityInformationLabels_element",
1352
14
        FT_NONE, BASE_NONE, NULL, 0,
1353
14
        NULL, HFILL }},
1354
14
    { &hf_p772_PriorityLevelQualifier_PDU,
1355
14
      { "PriorityLevelQualifier", "p772.PriorityLevelQualifier",
1356
14
        FT_UINT32, BASE_DEC, VALS(p772_PriorityLevelQualifier_vals), 0,
1357
14
        NULL, HFILL }},
1358
14
    { &hf_p772_ADatP3Parameters_PDU,
1359
14
      { "ADatP3Parameters", "p772.ADatP3Parameters",
1360
14
        FT_INT32, BASE_DEC, NULL, 0,
1361
14
        NULL, HFILL }},
1362
14
    { &hf_p772_ADatP3Data_PDU,
1363
14
      { "ADatP3Data", "p772.ADatP3Data",
1364
14
        FT_UINT32, BASE_DEC, VALS(p772_ADatP3Data_vals), 0,
1365
14
        NULL, HFILL }},
1366
14
    { &hf_p772_CorrectionsParameters_PDU,
1367
14
      { "CorrectionsParameters", "p772.CorrectionsParameters",
1368
14
        FT_INT32, BASE_DEC, NULL, 0,
1369
14
        NULL, HFILL }},
1370
14
    { &hf_p772_CorrectionsData_PDU,
1371
14
      { "CorrectionsData", "p772.CorrectionsData",
1372
14
        FT_STRING, BASE_NONE, NULL, 0,
1373
14
        NULL, HFILL }},
1374
14
    { &hf_p772_ForwardedEncryptedParameters_PDU,
1375
14
      { "ForwardedEncryptedParameters", "p772.ForwardedEncryptedParameters_element",
1376
14
        FT_NONE, BASE_NONE, NULL, 0,
1377
14
        NULL, HFILL }},
1378
14
    { &hf_p772_ForwardedEncryptedData_PDU,
1379
14
      { "ForwardedEncryptedData", "p772.ForwardedEncryptedData",
1380
14
        FT_BYTES, BASE_NONE, NULL, 0,
1381
14
        NULL, HFILL }},
1382
14
    { &hf_p772_MMMessageParameters_PDU,
1383
14
      { "MMMessageParameters", "p772.MMMessageParameters_element",
1384
14
        FT_NONE, BASE_NONE, NULL, 0,
1385
14
        NULL, HFILL }},
1386
14
    { &hf_p772_MMMessageData_PDU,
1387
14
      { "MMMessageData", "p772.MMMessageData_element",
1388
14
        FT_NONE, BASE_NONE, NULL, 0,
1389
14
        NULL, HFILL }},
1390
14
    { &hf_p772_ACP127DataParameters_PDU,
1391
14
      { "ACP127DataParameters", "p772.ACP127DataParameters",
1392
14
        FT_INT32, BASE_DEC, NULL, 0,
1393
14
        NULL, HFILL }},
1394
14
    { &hf_p772_ACP127DataData_PDU,
1395
14
      { "ACP127DataData", "p772.ACP127DataData",
1396
14
        FT_STRING, BASE_NONE, NULL, 0,
1397
14
        NULL, HFILL }},
1398
14
    { &hf_p772_Acp127NotificationType_PDU,
1399
14
      { "Acp127NotificationType", "p772.Acp127NotificationType",
1400
14
        FT_BYTES, BASE_NONE, NULL, 0,
1401
14
        NULL, HFILL }},
1402
14
    { &hf_p772_mm,
1403
14
      { "mm", "p772.mm_element",
1404
14
        FT_NONE, BASE_NONE, NULL, 0,
1405
14
        "IPM", HFILL }},
1406
14
    { &hf_p772_mn,
1407
14
      { "mn", "p772.mn_element",
1408
14
        FT_NONE, BASE_NONE, NULL, 0,
1409
14
        "IPN", HFILL }},
1410
14
    { &hf_p772_acp127_notification_type,
1411
14
      { "acp127-notification-type", "p772.acp127_notification_type",
1412
14
        FT_BYTES, BASE_NONE, NULL, 0,
1413
14
        "Acp127NotificationType", HFILL }},
1414
14
    { &hf_p772_receipt_time,
1415
14
      { "receipt-time", "p772.receipt_time",
1416
14
        FT_STRING, BASE_NONE, NULL, 0,
1417
14
        "ReceiptTimeField", HFILL }},
1418
14
    { &hf_p772_addressListIndicator,
1419
14
      { "addressListIndicator", "p772.addressListIndicator",
1420
14
        FT_UINT32, BASE_DEC, NULL, 0,
1421
14
        NULL, HFILL }},
1422
14
    { &hf_p772_acp127_recipient,
1423
14
      { "acp127-recipient", "p772.acp127_recipient",
1424
14
        FT_STRING, BASE_NONE, NULL, 0,
1425
14
        "Acp127Recipient", HFILL }},
1426
14
    { &hf_p772_acp127_supp_info,
1427
14
      { "acp127-supp-info", "p772.acp127_supp_info",
1428
14
        FT_STRING, BASE_NONE, NULL, 0,
1429
14
        "Acp127SuppInfo", HFILL }},
1430
14
    { &hf_p772_AddressListIndicator_item,
1431
14
      { "AddressListDesignator", "p772.AddressListDesignator_element",
1432
14
        FT_NONE, BASE_NONE, NULL, 0,
1433
14
        NULL, HFILL }},
1434
14
    { &hf_p772_ExemptedAddressSeq_item,
1435
14
      { "ExemptedAddress", "p772.ExemptedAddress_element",
1436
14
        FT_NONE, BASE_NONE, NULL, 0,
1437
14
        NULL, HFILL }},
1438
14
    { &hf_p772_sics,
1439
14
      { "sics", "p772.sics",
1440
14
        FT_UINT32, BASE_DEC, NULL, 0,
1441
14
        "SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic", HFILL }},
1442
14
    { &hf_p772_sics_item,
1443
14
      { "Sic", "p772.Sic",
1444
14
        FT_STRING, BASE_NONE, NULL, 0,
1445
14
        NULL, HFILL }},
1446
14
    { &hf_p772_dist_Extensions,
1447
14
      { "dist-Extensions", "p772.dist_Extensions",
1448
14
        FT_UINT32, BASE_DEC, NULL, 0,
1449
14
        "SEQUENCE_OF_DistributionExtensionField", HFILL }},
1450
14
    { &hf_p772_dist_Extensions_item,
1451
14
      { "DistributionExtensionField", "p772.DistributionExtensionField_element",
1452
14
        FT_NONE, BASE_NONE, NULL, 0,
1453
14
        NULL, HFILL }},
1454
14
    { &hf_p772_dist_type,
1455
14
      { "dist-type", "p772.dist_type",
1456
14
        FT_OID, BASE_NONE, NULL, 0,
1457
14
        "OBJECT_IDENTIFIER", HFILL }},
1458
14
    { &hf_p772_dist_value,
1459
14
      { "dist-value", "p772.dist_value_element",
1460
14
        FT_NONE, BASE_NONE, NULL, 0,
1461
14
        "T_dist_value", HFILL }},
1462
14
    { &hf_p772_HandlingInstructions_item,
1463
14
      { "MilitaryString", "p772.MilitaryString",
1464
14
        FT_STRING, BASE_NONE, NULL, 0,
1465
14
        NULL, HFILL }},
1466
14
    { &hf_p772_MessageInstructions_item,
1467
14
      { "MilitaryString", "p772.MilitaryString",
1468
14
        FT_STRING, BASE_NONE, NULL, 0,
1469
14
        NULL, HFILL }},
1470
14
    { &hf_p772_message_type_type,
1471
14
      { "type", "p772.message_type_type",
1472
14
        FT_INT32, BASE_DEC, VALS(p772_TypeMessage_vals), 0,
1473
14
        "TypeMessage", HFILL }},
1474
14
    { &hf_p772_identifier,
1475
14
      { "identifier", "p772.identifier",
1476
14
        FT_STRING, BASE_NONE, NULL, 0,
1477
14
        "MessageIdentifier", HFILL }},
1478
14
    { &hf_p772_AddressListDesignatorSeq_item,
1479
14
      { "AddressListDesignator", "p772.AddressListDesignator_element",
1480
14
        FT_NONE, BASE_NONE, NULL, 0,
1481
14
        NULL, HFILL }},
1482
14
    { &hf_p772_address_list_type,
1483
14
      { "type", "p772.address_list_type",
1484
14
        FT_INT32, BASE_DEC, VALS(p772_AddressListType_vals), 0,
1485
14
        "AddressListType", HFILL }},
1486
14
    { &hf_p772_listName,
1487
14
      { "listName", "p772.listName_element",
1488
14
        FT_NONE, BASE_NONE, NULL, 0,
1489
14
        "ORDescriptor", HFILL }},
1490
14
    { &hf_p772_notificationRequest,
1491
14
      { "notificationRequest", "p772.notificationRequest",
1492
14
        FT_INT32, BASE_DEC, VALS(p772_AddressListRequest_vals), 0,
1493
14
        "AddressListRequest", HFILL }},
1494
14
    { &hf_p772_replyRequest,
1495
14
      { "replyRequest", "p772.replyRequest",
1496
14
        FT_INT32, BASE_DEC, VALS(p772_AddressListRequest_vals), 0,
1497
14
        "AddressListRequest", HFILL }},
1498
14
    { &hf_p772_OtherRecipientDesignatorSeq_item,
1499
14
      { "OtherRecipientDesignator", "p772.OtherRecipientDesignator_element",
1500
14
        FT_NONE, BASE_NONE, NULL, 0,
1501
14
        NULL, HFILL }},
1502
14
    { &hf_p772_other_recipient_type,
1503
14
      { "type", "p772.other_recipient_type",
1504
14
        FT_INT32, BASE_DEC, VALS(p772_OtherRecipientType_vals), 0,
1505
14
        "OtherRecipientType", HFILL }},
1506
14
    { &hf_p772_designator,
1507
14
      { "designator", "p772.designator",
1508
14
        FT_STRING, BASE_NONE, NULL, 0,
1509
14
        "MilitaryString", HFILL }},
1510
14
    { &hf_p772_PilotInformationSeq_item,
1511
14
      { "PilotInformation", "p772.PilotInformation_element",
1512
14
        FT_NONE, BASE_NONE, NULL, 0,
1513
14
        NULL, HFILL }},
1514
14
    { &hf_p772_pilotPrecedence,
1515
14
      { "pilotPrecedence", "p772.pilotPrecedence",
1516
14
        FT_INT32, BASE_DEC, VALS(p772_MMHSPrecedence_vals), 0,
1517
14
        "MMHSPrecedence", HFILL }},
1518
14
    { &hf_p772_pilotRecipient,
1519
14
      { "pilotRecipient", "p772.pilotRecipient",
1520
14
        FT_UINT32, BASE_DEC, NULL, 0,
1521
14
        "SEQUENCE_OF_ORDescriptor", HFILL }},
1522
14
    { &hf_p772_pilotRecipient_item,
1523
14
      { "ORDescriptor", "p772.ORDescriptor_element",
1524
14
        FT_NONE, BASE_NONE, NULL, 0,
1525
14
        NULL, HFILL }},
1526
14
    { &hf_p772_pilotSecurity,
1527
14
      { "pilotSecurity", "p772.pilotSecurity_element",
1528
14
        FT_NONE, BASE_NONE, NULL, 0,
1529
14
        "SecurityLabel", HFILL }},
1530
14
    { &hf_p772_pilotHandling,
1531
14
      { "pilotHandling", "p772.pilotHandling",
1532
14
        FT_UINT32, BASE_DEC, NULL, 0,
1533
14
        "SEQUENCE_OF_MilitaryString", HFILL }},
1534
14
    { &hf_p772_pilotHandling_item,
1535
14
      { "MilitaryString", "p772.MilitaryString",
1536
14
        FT_STRING, BASE_NONE, NULL, 0,
1537
14
        NULL, HFILL }},
1538
14
    { &hf_p772_content_security_label,
1539
14
      { "content-security-label", "p772.content_security_label_element",
1540
14
        FT_NONE, BASE_NONE, NULL, 0,
1541
14
        "SecurityLabel", HFILL }},
1542
14
    { &hf_p772_heading_security_label,
1543
14
      { "heading-security-label", "p772.heading_security_label_element",
1544
14
        FT_NONE, BASE_NONE, NULL, 0,
1545
14
        "SecurityLabel", HFILL }},
1546
14
    { &hf_p772_body_part_security_labels,
1547
14
      { "body-part-security-labels", "p772.body_part_security_labels",
1548
14
        FT_UINT32, BASE_DEC, NULL, 0,
1549
14
        "SEQUENCE_OF_BodyPartSecurityLabel", HFILL }},
1550
14
    { &hf_p772_body_part_security_labels_item,
1551
14
      { "BodyPartSecurityLabel", "p772.BodyPartSecurityLabel_element",
1552
14
        FT_NONE, BASE_NONE, NULL, 0,
1553
14
        NULL, HFILL }},
1554
14
    { &hf_p772_body_part_security_label,
1555
14
      { "body-part-security-label", "p772.body_part_security_label_element",
1556
14
        FT_NONE, BASE_NONE, NULL, 0,
1557
14
        "SecurityLabel", HFILL }},
1558
14
    { &hf_p772_body_part_sequence_number,
1559
14
      { "body-part-sequence-number", "p772.body_part_sequence_number",
1560
14
        FT_INT32, BASE_DEC, NULL, 0,
1561
14
        "BodyPartSequenceNumber", HFILL }},
1562
14
    { &hf_p772_lineOriented,
1563
14
      { "lineOriented", "p772.lineOriented",
1564
14
        FT_STRING, BASE_NONE, NULL, 0,
1565
14
        "IA5String", HFILL }},
1566
14
    { &hf_p772_setOriented,
1567
14
      { "setOriented", "p772.setOriented",
1568
14
        FT_UINT32, BASE_DEC, NULL, 0,
1569
14
        NULL, HFILL }},
1570
14
    { &hf_p772_setOriented_item,
1571
14
      { "setOriented item", "p772.setOriented_item",
1572
14
        FT_STRING, BASE_NONE, NULL, 0,
1573
14
        "IA5String", HFILL }},
1574
14
    { &hf_p772_delivery_time,
1575
14
      { "delivery-time", "p772.delivery_time",
1576
14
        FT_STRING, BASE_NONE, NULL, 0,
1577
14
        "MessageDeliveryTime", HFILL }},
1578
14
    { &hf_p772_delivery_envelope,
1579
14
      { "delivery-envelope", "p772.delivery_envelope_element",
1580
14
        FT_NONE, BASE_NONE, NULL, 0,
1581
14
        "OtherMessageDeliveryFields", HFILL }},
1582
14
    { &hf_p772_Acp127NotificationType_acp127_nn,
1583
14
      { "acp127-nn", "p772.Acp127NotificationType.acp127.nn",
1584
14
        FT_BOOLEAN, 8, NULL, 0x80,
1585
14
        NULL, HFILL }},
1586
14
    { &hf_p772_Acp127NotificationType_acp127_pn,
1587
14
      { "acp127-pn", "p772.Acp127NotificationType.acp127.pn",
1588
14
        FT_BOOLEAN, 8, NULL, 0x40,
1589
14
        NULL, HFILL }},
1590
14
    { &hf_p772_Acp127NotificationType_acp127_tn,
1591
14
      { "acp127-tn", "p772.Acp127NotificationType.acp127.tn",
1592
14
        FT_BOOLEAN, 8, NULL, 0x20,
1593
14
        NULL, HFILL }},
1594
14
  };
1595
1596
  /* List of subtrees */
1597
14
  static int *ett[] = {
1598
14
    &ett_p772,
1599
14
    &ett_p772_InformationObject,
1600
14
    &ett_p772_Acp127NotificationResponse,
1601
14
    &ett_p772_AddressListIndicator,
1602
14
    &ett_p772_ExemptedAddressSeq,
1603
14
    &ett_p772_DistributionCodes,
1604
14
    &ett_p772_SEQUENCE_SIZE_1_ub_military_number_of_sics_OF_Sic,
1605
14
    &ett_p772_SEQUENCE_OF_DistributionExtensionField,
1606
14
    &ett_p772_DistributionExtensionField,
1607
14
    &ett_p772_HandlingInstructions,
1608
14
    &ett_p772_MessageInstructions,
1609
14
    &ett_p772_MessageType,
1610
14
    &ett_p772_AddressListDesignatorSeq,
1611
14
    &ett_p772_AddressListDesignator,
1612
14
    &ett_p772_OtherRecipientDesignatorSeq,
1613
14
    &ett_p772_OtherRecipientDesignator,
1614
14
    &ett_p772_PilotInformationSeq,
1615
14
    &ett_p772_PilotInformation,
1616
14
    &ett_p772_SEQUENCE_OF_ORDescriptor,
1617
14
    &ett_p772_SEQUENCE_OF_MilitaryString,
1618
14
    &ett_p772_SecurityInformationLabels,
1619
14
    &ett_p772_SEQUENCE_OF_BodyPartSecurityLabel,
1620
14
    &ett_p772_BodyPartSecurityLabel,
1621
14
    &ett_p772_ADatP3Data,
1622
14
    &ett_p772_T_setOriented,
1623
14
    &ett_p772_ForwardedEncryptedParameters,
1624
14
    &ett_p772_MMMessageParameters,
1625
14
    &ett_p772_Acp127NotificationType,
1626
14
  };
1627
1628
  /* Register protocol */
1629
14
  proto_p772 = proto_register_protocol(PNAME, PSNAME, PFNAME);
1630
14
  register_dissector("p772", dissect_p772, proto_p772);
1631
1632
  /* Register fields and subtrees */
1633
14
  proto_register_field_array(proto_p772, hf, array_length(hf));
1634
14
  proto_register_subtree_array(ett, array_length(ett));
1635
1636
14
  register_ber_syntax_dissector("STANAG 4406", proto_p772, dissect_p772);
1637
14
  register_ber_oid_syntax(".p772", NULL, "STANAG 4406");
1638
14
}
1639
1640
1641
/*--- proto_reg_handoff_p772 --- */
1642
14
void proto_reg_handoff_p772(void) {
1643
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.0", dissect_PrimaryPrecedence_PDU, proto_p772, "primary-precedence");
1644
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.1", dissect_CopyPrecedence_PDU, proto_p772, "copy-precedence");
1645
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.2", dissect_MessageType_PDU, proto_p772, "message-type");
1646
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.3", dissect_AddressListDesignatorSeq_PDU, proto_p772, "address-list-indicator");
1647
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.4", dissect_ExemptedAddressSeq_PDU, proto_p772, "exempted-address");
1648
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.5", dissect_ExtendedAuthorisationInfo_PDU, proto_p772, "extended-authorisation-info");
1649
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.6", dissect_DistributionCodes_PDU, proto_p772, "distribution-codes");
1650
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.7", dissect_HandlingInstructions_PDU, proto_p772, "handling-instructions");
1651
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.8", dissect_MessageInstructions_PDU, proto_p772, "message-instructions");
1652
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.9", dissect_CodressMessage_PDU, proto_p772, "codress-message");
1653
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.10", dissect_OriginatorReference_PDU, proto_p772, "originator-reference");
1654
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.11", dissect_OtherRecipientDesignatorSeq_PDU, proto_p772, "other-recipients-indicator");
1655
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.12", dissect_PilotInformationSeq_PDU, proto_p772, "pilot-forwarding-info");
1656
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.13", dissect_Acp127MessageIdentifier_PDU, proto_p772, "acp127-message-identifier");
1657
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.14", dissect_OriginatorPlad_PDU, proto_p772, "originator-plad");
1658
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.15", dissect_Acp127NotificationType_PDU, proto_p772, "acp127-notification-request");
1659
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.16", dissect_Acp127NotificationResponse_PDU, proto_p772, "acp127-notification-response");
1660
14
  register_ber_oid_dissector("1.3.26.0.4406.0.2.17", dissect_SecurityInformationLabels_PDU, proto_p772, "information-labels");
1661
14
  register_ber_oid_dissector("1.3.26.0.4406.0.8.0", dissect_PriorityLevelQualifier_PDU, proto_p772, "priority-level-qualifier");
1662
14
  register_ber_oid_dissector(id_nato_mmhs_et_adatp3, dissect_ADatP3Data_PDU, proto_p772, "adatp3");
1663
14
  register_ber_oid_dissector(id_nato_mmhs_et_adatp3_parameters, dissect_ADatP3Parameters_PDU, proto_p772, "adatp3-parameters");
1664
14
  register_ber_oid_dissector(id_nato_mmhs_et_corrections, dissect_CorrectionsData_PDU, proto_p772, "corrections");
1665
14
  register_ber_oid_dissector(id_nato_mmhs_et_corrections_parameters, dissect_CorrectionsParameters_PDU, proto_p772, "corrections-parameters");
1666
14
  register_ber_oid_dissector(id_nato_mmhs_et_forwarded_encrypted, dissect_ForwardedEncryptedData_PDU, proto_p772, "forwarded-encrypted");
1667
14
  register_ber_oid_dissector(id_nato_mmhs_et_forwarded_encrypted_parameters, dissect_ForwardedEncryptedParameters_PDU, proto_p772, "forwarded-encrypted-parameters");
1668
14
  register_ber_oid_dissector(id_nato_mmhs_et_mm_message, dissect_MMMessageData_PDU, proto_p772, "mm-message");
1669
14
  register_ber_oid_dissector(id_nato_mmhs_et_mm_message_parameters, dissect_MMMessageParameters_PDU, proto_p772, "mm-message-parameters");
1670
14
  register_ber_oid_dissector(id_nato_mmhs_et_mm_acp127data, dissect_ACP127DataData_PDU, proto_p772, "acp127-data");
1671
14
  register_ber_oid_dissector(id_nato_mmhs_et_mm_acp127data_parameters, dissect_ACP127DataParameters_PDU, proto_p772, "acp127-data-parameters");
1672
14
  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");
1673
1674
1675
14
  register_ber_oid_dissector("1.3.26.0.4406.0.4.1", dissect_p772, proto_p772, "STANAG 4406");
1676
14
}