xref: /aosp_15_r20/external/webrtc/net/dcsctp/packet/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1# Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9import("../../../webrtc.gni")
10
11group("packet") {
12  deps = [ ":bounded_io" ]
13}
14
15rtc_source_set("bounded_io") {
16  deps = [
17    "../../../api:array_view",
18    "../../../rtc_base:checks",
19  ]
20  sources = [
21    "bounded_byte_reader.h",
22    "bounded_byte_writer.h",
23  ]
24}
25
26rtc_library("tlv_trait") {
27  deps = [
28    ":bounded_io",
29    "../../../api:array_view",
30    "../../../rtc_base:checks",
31    "../../../rtc_base:logging",
32  ]
33  absl_deps = [
34    "//third_party/abseil-cpp/absl/strings:strings",
35    "//third_party/abseil-cpp/absl/types:optional",
36  ]
37  sources = [
38    "tlv_trait.cc",
39    "tlv_trait.h",
40  ]
41}
42
43rtc_source_set("data") {
44  deps = [
45    "../../../rtc_base:checks",
46    "../common:internal_types",
47    "../public:types",
48  ]
49  sources = [ "data.h" ]
50}
51
52rtc_library("crc32c") {
53  deps = [
54    "../../../api:array_view",
55    "../../../rtc_base:checks",
56    "//third_party/crc32c",
57  ]
58  sources = [
59    "crc32c.cc",
60    "crc32c.h",
61  ]
62}
63
64rtc_library("parameter") {
65  deps = [
66    ":bounded_io",
67    ":data",
68    ":tlv_trait",
69    "../../../api:array_view",
70    "../../../rtc_base:checks",
71    "../../../rtc_base:logging",
72    "../../../rtc_base:stringutils",
73    "../common:internal_types",
74    "../common:math",
75    "../common:str_join",
76    "../public:types",
77  ]
78  sources = [
79    "parameter/add_incoming_streams_request_parameter.cc",
80    "parameter/add_incoming_streams_request_parameter.h",
81    "parameter/add_outgoing_streams_request_parameter.cc",
82    "parameter/add_outgoing_streams_request_parameter.h",
83    "parameter/forward_tsn_supported_parameter.cc",
84    "parameter/forward_tsn_supported_parameter.h",
85    "parameter/heartbeat_info_parameter.cc",
86    "parameter/heartbeat_info_parameter.h",
87    "parameter/incoming_ssn_reset_request_parameter.cc",
88    "parameter/incoming_ssn_reset_request_parameter.h",
89    "parameter/outgoing_ssn_reset_request_parameter.cc",
90    "parameter/outgoing_ssn_reset_request_parameter.h",
91    "parameter/parameter.cc",
92    "parameter/parameter.h",
93    "parameter/reconfiguration_response_parameter.cc",
94    "parameter/reconfiguration_response_parameter.h",
95    "parameter/ssn_tsn_reset_request_parameter.cc",
96    "parameter/ssn_tsn_reset_request_parameter.h",
97    "parameter/state_cookie_parameter.cc",
98    "parameter/state_cookie_parameter.h",
99    "parameter/supported_extensions_parameter.cc",
100    "parameter/supported_extensions_parameter.h",
101  ]
102  absl_deps = [
103    "//third_party/abseil-cpp/absl/algorithm:container",
104    "//third_party/abseil-cpp/absl/memory",
105    "//third_party/abseil-cpp/absl/strings",
106    "//third_party/abseil-cpp/absl/types:optional",
107  ]
108}
109
110rtc_library("error_cause") {
111  deps = [
112    ":data",
113    ":parameter",
114    ":tlv_trait",
115    "../../../api:array_view",
116    "../../../rtc_base:checks",
117    "../../../rtc_base:logging",
118    "../../../rtc_base:stringutils",
119    "../common:internal_types",
120    "../common:math",
121    "../common:str_join",
122    "../packet:bounded_io",
123    "../public:types",
124  ]
125  sources = [
126    "error_cause/cookie_received_while_shutting_down_cause.cc",
127    "error_cause/cookie_received_while_shutting_down_cause.h",
128    "error_cause/error_cause.cc",
129    "error_cause/error_cause.h",
130    "error_cause/invalid_mandatory_parameter_cause.cc",
131    "error_cause/invalid_mandatory_parameter_cause.h",
132    "error_cause/invalid_stream_identifier_cause.cc",
133    "error_cause/invalid_stream_identifier_cause.h",
134    "error_cause/missing_mandatory_parameter_cause.cc",
135    "error_cause/missing_mandatory_parameter_cause.h",
136    "error_cause/no_user_data_cause.cc",
137    "error_cause/no_user_data_cause.h",
138    "error_cause/out_of_resource_error_cause.cc",
139    "error_cause/out_of_resource_error_cause.h",
140    "error_cause/protocol_violation_cause.cc",
141    "error_cause/protocol_violation_cause.h",
142    "error_cause/restart_of_an_association_with_new_address_cause.cc",
143    "error_cause/restart_of_an_association_with_new_address_cause.h",
144    "error_cause/stale_cookie_error_cause.cc",
145    "error_cause/stale_cookie_error_cause.h",
146    "error_cause/unrecognized_chunk_type_cause.cc",
147    "error_cause/unrecognized_chunk_type_cause.h",
148    "error_cause/unrecognized_parameter_cause.cc",
149    "error_cause/unrecognized_parameter_cause.h",
150    "error_cause/unresolvable_address_cause.cc",
151    "error_cause/unresolvable_address_cause.h",
152    "error_cause/user_initiated_abort_cause.cc",
153    "error_cause/user_initiated_abort_cause.h",
154  ]
155  absl_deps = [
156    "//third_party/abseil-cpp/absl/algorithm:container",
157    "//third_party/abseil-cpp/absl/strings",
158    "//third_party/abseil-cpp/absl/types:optional",
159  ]
160}
161
162rtc_library("chunk") {
163  deps = [
164    ":data",
165    ":error_cause",
166    ":parameter",
167    ":tlv_trait",
168    "../../../api:array_view",
169    "../../../rtc_base:checks",
170    "../../../rtc_base:logging",
171    "../../../rtc_base:stringutils",
172    "../common:math",
173    "../common:str_join",
174    "../packet:bounded_io",
175  ]
176  sources = [
177    "chunk/abort_chunk.cc",
178    "chunk/abort_chunk.h",
179    "chunk/chunk.cc",
180    "chunk/chunk.h",
181    "chunk/cookie_ack_chunk.cc",
182    "chunk/cookie_ack_chunk.h",
183    "chunk/cookie_echo_chunk.cc",
184    "chunk/cookie_echo_chunk.h",
185    "chunk/data_chunk.cc",
186    "chunk/data_chunk.h",
187    "chunk/data_common.h",
188    "chunk/error_chunk.cc",
189    "chunk/error_chunk.h",
190    "chunk/forward_tsn_chunk.cc",
191    "chunk/forward_tsn_chunk.h",
192    "chunk/forward_tsn_common.h",
193    "chunk/heartbeat_ack_chunk.cc",
194    "chunk/heartbeat_ack_chunk.h",
195    "chunk/heartbeat_request_chunk.cc",
196    "chunk/heartbeat_request_chunk.h",
197    "chunk/idata_chunk.cc",
198    "chunk/idata_chunk.h",
199    "chunk/iforward_tsn_chunk.cc",
200    "chunk/iforward_tsn_chunk.h",
201    "chunk/init_ack_chunk.cc",
202    "chunk/init_ack_chunk.h",
203    "chunk/init_chunk.cc",
204    "chunk/init_chunk.h",
205    "chunk/reconfig_chunk.cc",
206    "chunk/reconfig_chunk.h",
207    "chunk/sack_chunk.cc",
208    "chunk/sack_chunk.h",
209    "chunk/shutdown_ack_chunk.cc",
210    "chunk/shutdown_ack_chunk.h",
211    "chunk/shutdown_chunk.cc",
212    "chunk/shutdown_chunk.h",
213    "chunk/shutdown_complete_chunk.cc",
214    "chunk/shutdown_complete_chunk.h",
215  ]
216  absl_deps = [
217    "//third_party/abseil-cpp/absl/algorithm:container",
218    "//third_party/abseil-cpp/absl/strings",
219    "//third_party/abseil-cpp/absl/types:optional",
220  ]
221}
222
223rtc_library("chunk_validators") {
224  deps = [
225    ":chunk",
226    "../../../rtc_base:checks",
227    "../../../rtc_base:logging",
228  ]
229  sources = [
230    "chunk_validators.cc",
231    "chunk_validators.h",
232  ]
233}
234
235rtc_library("sctp_packet") {
236  deps = [
237    ":bounded_io",
238    ":chunk",
239    ":crc32c",
240    "../../../api:array_view",
241    "../../../rtc_base:checks",
242    "../../../rtc_base:logging",
243    "../../../rtc_base:stringutils",
244    "../common:internal_types",
245    "../common:math",
246    "../public:types",
247  ]
248  sources = [
249    "sctp_packet.cc",
250    "sctp_packet.h",
251  ]
252  absl_deps = [
253    "//third_party/abseil-cpp/absl/memory:memory",
254    "//third_party/abseil-cpp/absl/types:optional",
255  ]
256}
257
258if (rtc_include_tests) {
259  rtc_library("dcsctp_packet_unittests") {
260    testonly = true
261
262    deps = [
263      ":bounded_io",
264      ":chunk",
265      ":chunk_validators",
266      ":crc32c",
267      ":error_cause",
268      ":parameter",
269      ":sctp_packet",
270      ":tlv_trait",
271      "../../../api:array_view",
272      "../../../rtc_base:buffer",
273      "../../../rtc_base:checks",
274      "../../../rtc_base:gunit_helpers",
275      "../../../test:test_support",
276      "../common:internal_types",
277      "../common:math",
278      "../public:types",
279      "../testing:testing_macros",
280    ]
281    sources = [
282      "bounded_byte_reader_test.cc",
283      "bounded_byte_writer_test.cc",
284      "chunk/abort_chunk_test.cc",
285      "chunk/cookie_ack_chunk_test.cc",
286      "chunk/cookie_echo_chunk_test.cc",
287      "chunk/data_chunk_test.cc",
288      "chunk/error_chunk_test.cc",
289      "chunk/forward_tsn_chunk_test.cc",
290      "chunk/heartbeat_ack_chunk_test.cc",
291      "chunk/heartbeat_request_chunk_test.cc",
292      "chunk/idata_chunk_test.cc",
293      "chunk/iforward_tsn_chunk_test.cc",
294      "chunk/init_ack_chunk_test.cc",
295      "chunk/init_chunk_test.cc",
296      "chunk/reconfig_chunk_test.cc",
297      "chunk/sack_chunk_test.cc",
298      "chunk/shutdown_ack_chunk_test.cc",
299      "chunk/shutdown_chunk_test.cc",
300      "chunk/shutdown_complete_chunk_test.cc",
301      "chunk_validators_test.cc",
302      "crc32c_test.cc",
303      "error_cause/cookie_received_while_shutting_down_cause_test.cc",
304      "error_cause/invalid_mandatory_parameter_cause_test.cc",
305      "error_cause/invalid_stream_identifier_cause_test.cc",
306      "error_cause/missing_mandatory_parameter_cause_test.cc",
307      "error_cause/no_user_data_cause_test.cc",
308      "error_cause/out_of_resource_error_cause_test.cc",
309      "error_cause/protocol_violation_cause_test.cc",
310      "error_cause/restart_of_an_association_with_new_address_cause_test.cc",
311      "error_cause/stale_cookie_error_cause_test.cc",
312      "error_cause/unrecognized_chunk_type_cause_test.cc",
313      "error_cause/unrecognized_parameter_cause_test.cc",
314      "error_cause/unresolvable_address_cause_test.cc",
315      "error_cause/user_initiated_abort_cause_test.cc",
316      "parameter/add_incoming_streams_request_parameter_test.cc",
317      "parameter/add_outgoing_streams_request_parameter_test.cc",
318      "parameter/forward_tsn_supported_parameter_test.cc",
319      "parameter/incoming_ssn_reset_request_parameter_test.cc",
320      "parameter/outgoing_ssn_reset_request_parameter_test.cc",
321      "parameter/parameter_test.cc",
322      "parameter/reconfiguration_response_parameter_test.cc",
323      "parameter/ssn_tsn_reset_request_parameter_test.cc",
324      "parameter/state_cookie_parameter_test.cc",
325      "parameter/supported_extensions_parameter_test.cc",
326      "sctp_packet_test.cc",
327      "tlv_trait_test.cc",
328    ]
329    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
330  }
331}
332