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