1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
# IEEE1609dot2.cnf
# IEEE1609dot2 conformation file
#.OPT
OER
#.END
#.MODULE
Ieee1609Dot2BaseTypes ieee1609dot2
#.MODULE_IMPORT
#.EXPORTS ONLY_VALS WS_DLL
Psid
#.MAKE_ENUM
Psid
#.REGISTER
#.PDU
Ieee1609Dot2Data
SecuredCrl
#.NO_EMIT
#.NO_EMIT ONLY_VALS
NinetyDegreeInt
OneEightyDegreeInt
#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
TestCertificate
Countersignature
ExplicitCertificate
ImplicitCertificate
KnownLatitude
KnownLongitude
SequenceOfPsid
Uint3
UnknownLatitude
UnknownLongitude
OperatingOrganizationId
Ieee1609HeaderInfoExtensionId
Ieee1609ContributedHeaderInfoExtension
Aes128CcmCiphertext
CrlPsid
ExpansionAlgorithmIdentifier
Extension
CountryOnly
#.TYPE_RENAME
#.FIELD_RENAME
EccP384CurvePoint/uncompressedP384/x eccp384cpX
EccP384CurvePoint/uncompressedP384/y eccp384cpY
EccP384CurvePoint/x-only eccp384cpXOnly
EccP384CurvePoint/compressed-y-0 eccp384cpCompressed-y-0
EccP384CurvePoint/compressed-y-1 eccp384cpCompressed-y-1
EcdsaP384Signature/rSig ecdsap384RSig
EcdsaP384Signature/sSig ecdsap384SSig
PsidSsp/psid psPsid
HeaderInfo/psid hiPsid
IssuerIdentifier/self iiSelf
SignerIdentifier/self siSelf
SspRange/opaque srRange
RegionAndSubregions/region rasRegion
ToBeSignedCertificate/encryptionKey tbscEncryptionKey
SymmRecipientInfo/encKey sriEncKey
EncryptedDataEncryptionKey/eciesNistP256 edeEciesNistP256
EncryptedDataEncryptionKey/eciesBrainpoolP256r1 edekEciesBrainpoolP256r1
#.TYPE_ATTR
NinetyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_NinetyDegreeInt_fmt)
OneEightyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_OneEightyDegreeInt_fmt)
Time32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time32_fmt)
Time64 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time64_fmt)
#.FIELD_ATTR
SspRange/opaque ABBREV=srRange.opaque
#.FN_HDR Ieee1609Dot2Data
actx->private_data = (void*)wmem_new0(actx->pinfo->pool, ieee1609_private_data_t);
#.END
#.FN_BODY Ieee1609Dot2Content/unsecuredData
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, false, &my_private_data->unsecured_data);
if (my_private_data->unsecured_data) {
// psid may also be provided in HeaderInfo
uint32_t psid = GPOINTER_TO_UINT(p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_ieee1609dot2, 0));
if (psid) {
/* Call next dissector here */
dissector_try_uint(unsecured_data_subdissector_table, psid, my_private_data->unsecured_data, actx->pinfo, tree);
my_private_data->unsecured_data = NULL;
}
// else: wait for the HeaderInfo for a second chance to dissect the content
}
#.END
#.FN_BODY HeaderInfo/psid
uint64_t psid;
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
offset = dissect_oer_constrained_integer_64b_no_ub(tvb, offset, actx, tree, hf_index,
0U, NO_BOUND, &psid, false);
if ((my_private_data != NULL) && (my_private_data->unsecured_data != NULL)) {
/* Call next dissector here */
ieee1609dot2_set_next_default_psid(actx->pinfo, (uint32_t)psid);
dissector_try_uint(unsecured_data_subdissector_table, (uint32_t) psid, my_private_data->unsecured_data, actx->pinfo, tree);
my_private_data->unsecured_data = NULL;
}
#.END
#.FN_BODY PsidSsp/psid
offset = dissect_oer_constrained_integer_64b_no_ub(tvb, offset, actx, tree, hf_index,
0U, NO_BOUND, &((ieee1609_private_data_t*)actx->private_data)->psidssp, false);
#.FN_BODY ServiceSpecificPermissions/opaque
tvbuff_t *ssp;
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
0, NO_BOUND, false, &ssp);
if (ssp) {
// Create subtree
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_ieee1609dot2_ssp);
/* Call next dissector here */
dissector_try_uint(ssp_subdissector_table, (uint32_t) my_private_data->psidssp, ssp, actx->pinfo, subtree);
}
#.END
#.ASSIGN_VALUE_TO_TYPE
psid-system Psid
psid-electronic-fee-collection Psid
psid-freight-fleet-management Psid
psid-public-transport Psid
psid-traffic-traveller-information Psid
psid-traffic-control Psid
psid-parking-management Psid
psid-geographic-road-database Psid
psid-medium-range-preinformation Psid
psid-man-machine-interface Psid
psid-intersystem-interface Psid
psid-automatic-vehicle-identification Psid
psid-emergency-warning Psid
psid-private Psid
psid-multi-purpose-payment Psid
psid-dsrc-resource-manager Psid
psid-after-theft-systems Psid
psid-cruise-assist-highway-system Psid
psid-multi-purpose-information-system Psid
psid-multi-mobile-information-system Psid
psid-efc-compliance-check-communication-applications Psid
psid-efc-localisation-augmentation-communication-applications Psid
psid-vehicle-to-vehicle-safety-and-awarenesss Psid
psid-limited-sensor-vehicle-to-vehicle-safety-and-awarenesss Psid
psid-tracked-vehicle-safety-and-awarenesss Psid
psid-wave-security-managements Psid
psid-ca-basic-services Psid
psid-den-basic-services Psid
psid-misbehavior-reporting-for-common-applications Psid
psid-vulnerable-road-users-safety-applications Psid
psid-testings Psid
psid-differential-gps-corrections-uncompressed Psid
psid-differential-gps-corrections-compressed Psid
psid-intersection-safety-and-awareness Psid
psid-traveller-information-and-roadside-signage Psid
psid-mobile-probe-exchanges Psid
psid-emergency-and-erratic-vehicles-present-in-roadway Psid
psid-remote-management-protocol-execution Psid
psid-wave-service-advertisement Psid
psid-peer-to-peer-distribution-of-security-management-information Psid
psid-traffic-light-manoeuver-service Psid
psid-road-and-lane-topology-service Psid
psid-infrastructure-to-vehicle-information-service Psid
psid-traffic-light-control-requests-service Psid
psid-geonetworking-management-communications Psid
psid-certificate-revocation-list-application Psid
psid-collective-perception-service Psid
psid-vehicle-initiated-distress-notivication Psid
psid-fast-service-advertisement-protocol Psid
psid-its-station-internal-management-communications-protocol Psid
psid-veniam-delay-tolerant-networking Psid
psid-transcore-software-update Psid
psid-ipv6-routing Psid
#.END
|