@@ -109,7 +109,8 @@ TEST_CASE("Example from README")
109109 static uint8_t recv_buffer[8192 ] = {0 };
110110 size_t bytes_received = 0 ;
111111 CHECK (tcs_receive (client_socket, recv_buffer, 8192 , TCS_FLAG_NONE , &bytes_received) == TCS_SUCCESS );
112- CHECK (tcs_shutdown (client_socket, TCS_SD_BOTH ) == TCS_SUCCESS );
112+ TcsResult shutdown_res = tcs_shutdown (client_socket, TCS_SD_BOTH );
113+ CHECK ((shutdown_res == TCS_SUCCESS || shutdown_res == TCS_ERROR_NOT_CONNECTED ));
113114 CHECK (tcs_close (&client_socket) == TCS_SUCCESS );
114115
115116 REQUIRE (tcs_lib_free () == TCS_SUCCESS );
@@ -1245,23 +1246,11 @@ TEST_CASE("Simple Multicast Add Membership")
12451246 // Setup
12461247 REQUIRE (tcs_lib_init () == TCS_SUCCESS );
12471248
1248- // Find a non-loopback IPv4 interface for multicast
1249- struct TcsInterfaceAddress ifaddrs[8 ];
1250- size_t ifaddrs_count = 0 ;
1251- TcsAddress local_iface = TCS_ADDRESS_NONE ;
1252- CHECK (tcs_address_list (0 , TCS_AF_IP4 , ifaddrs, 8 , &ifaddrs_count) == TCS_SUCCESS );
1253- for (size_t i = 0 ; i < ifaddrs_count && i < 8 ; ++i)
1254- {
1255- if (ifaddrs[i].address .data .ip4 .address != TCS_ADDRESS_LOOPBACK_IP4 )
1256- {
1257- local_iface = ifaddrs[i].address ;
1258- local_iface.data .ip4 .port = 0 ;
1259- break ;
1260- }
1261- }
1262- REQUIRE (local_iface.family == TCS_AF_IP4 );
1263-
12641249 // Given
1250+ TcsAddress loopback = TCS_ADDRESS_NONE ;
1251+ loopback.family = TCS_AF_IP4 ;
1252+ loopback.data .ip4 .address = TCS_ADDRESS_LOOPBACK_IP4 ;
1253+
12651254 TcsAddress address_any = {TCS_AF_IP4 , {{0 , 0 }}};
12661255 address_any.data .ip4 .port = 1901 ;
12671256
@@ -1272,15 +1261,15 @@ TEST_CASE("Simple Multicast Add Membership")
12721261 CHECK (tcs_socket (&socket, TCS_AF_IP4 , TCS_SOCK_DGRAM , 0 ) == TCS_SUCCESS );
12731262 CHECK (tcs_opt_reuse_address_set (socket, true ) == TCS_SUCCESS );
12741263 CHECK (tcs_opt_receive_timeout_set (socket, 5000 ) == TCS_SUCCESS );
1275- CHECK (tcs_opt_multicast_interface_set (socket, &local_iface ) == TCS_SUCCESS );
1264+ CHECK (tcs_opt_multicast_interface_set (socket, &loopback ) == TCS_SUCCESS );
12761265 uint8_t mc_loop = 1 ;
12771266 CHECK (tcs_opt_set (socket, TCS_SOL_IP , TCS_SO_IP_MULTICAST_LOOP , &mc_loop, sizeof (mc_loop)) == TCS_SUCCESS );
12781267
12791268 CHECK (tcs_bind (socket, &address_any) == TCS_SUCCESS );
12801269 uint8_t msg[] = " hello world\n " ;
12811270
12821271 // When
1283- CHECK (tcs_opt_membership_add_to (socket, &local_iface , &multicast_address) == TCS_SUCCESS );
1272+ CHECK (tcs_opt_membership_add_to (socket, &loopback , &multicast_address) == TCS_SUCCESS );
12841273
12851274 CHECK (tcs_send_to (socket, msg, sizeof (msg), 0 , &multicast_address, NULL ) == TCS_SUCCESS );
12861275
@@ -1300,30 +1289,18 @@ TEST_CASE("Multicast Add-Drop-Add Membership")
13001289 // Setup
13011290 REQUIRE (tcs_lib_init () == TCS_SUCCESS );
13021291
1303- // Find a non-loopback IPv4 interface for multicast
1304- struct TcsInterfaceAddress ifaddrs[8 ];
1305- size_t ifaddrs_count = 0 ;
1306- TcsAddress local_iface = TCS_ADDRESS_NONE ;
1307- CHECK (tcs_address_list (0 , TCS_AF_IP4 , ifaddrs, 8 , &ifaddrs_count) == TCS_SUCCESS );
1308- for (size_t i = 0 ; i < ifaddrs_count && i < 8 ; ++i)
1309- {
1310- if (ifaddrs[i].address .data .ip4 .address != TCS_ADDRESS_LOOPBACK_IP4 )
1311- {
1312- local_iface = ifaddrs[i].address ;
1313- local_iface.data .ip4 .port = 0 ;
1314- break ;
1315- }
1316- }
1317- REQUIRE (local_iface.family == TCS_AF_IP4 );
1318-
13191292 // Given
1293+ TcsAddress loopback = TCS_ADDRESS_NONE ;
1294+ loopback.family = TCS_AF_IP4 ;
1295+ loopback.data .ip4 .address = TCS_ADDRESS_LOOPBACK_IP4 ;
1296+
13201297 TcsSocket socket_send = TCS_SOCKET_INVALID ;
13211298 TcsSocket socket_recv = TCS_SOCKET_INVALID ;
13221299 CHECK (tcs_socket (&socket_send, TCS_AF_IP4 , TCS_SOCK_DGRAM , TCS_PROTOCOL_IP_UDP ) == TCS_SUCCESS );
13231300 CHECK (tcs_socket (&socket_recv, TCS_AF_IP4 , TCS_SOCK_DGRAM , TCS_PROTOCOL_IP_UDP ) == TCS_SUCCESS );
13241301 tcs_opt_receive_timeout_set (socket_recv, 2000 );
13251302 CHECK (tcs_opt_reuse_address_set (socket_recv, true ) == TCS_SUCCESS );
1326- CHECK (tcs_opt_multicast_interface_set (socket_send, &local_iface ) == TCS_SUCCESS );
1303+ CHECK (tcs_opt_multicast_interface_set (socket_send, &loopback ) == TCS_SUCCESS );
13271304 uint8_t mc_loop = 1 ;
13281305 CHECK (tcs_opt_set (socket_send, TCS_SOL_IP , TCS_SO_IP_MULTICAST_LOOP , &mc_loop, sizeof (mc_loop)) == TCS_SUCCESS );
13291306
@@ -1338,11 +1315,11 @@ TEST_CASE("Multicast Add-Drop-Add Membership")
13381315 uint8_t msg_missed[] = " you can not read me\n " ;
13391316
13401317 // When
1341- CHECK (tcs_opt_membership_add_to (socket_recv, &local_iface , &multicast_address) == TCS_SUCCESS );
1318+ CHECK (tcs_opt_membership_add_to (socket_recv, &loopback , &multicast_address) == TCS_SUCCESS );
13421319 CHECK (tcs_send_to (socket_send, msg_1, sizeof (msg_1), 0 , &multicast_address, NULL ) == TCS_SUCCESS );
1343- CHECK (tcs_opt_membership_drop_from (socket_recv, &local_iface , &multicast_address) == TCS_SUCCESS );
1320+ CHECK (tcs_opt_membership_drop_from (socket_recv, &loopback , &multicast_address) == TCS_SUCCESS );
13441321 CHECK (tcs_send_to (socket_send, msg_missed, sizeof (msg_missed), 0 , &multicast_address, NULL ) == TCS_SUCCESS );
1345- CHECK (tcs_opt_membership_add_to (socket_recv, &local_iface , &multicast_address) == TCS_SUCCESS );
1322+ CHECK (tcs_opt_membership_add_to (socket_recv, &loopback , &multicast_address) == TCS_SUCCESS );
13461323 CHECK (tcs_send_to (socket_send, msg_2, sizeof (msg_2), 0 , &multicast_address, NULL ) == TCS_SUCCESS );
13471324
13481325 // Then
@@ -1652,7 +1629,7 @@ TEST_CASE("AVTP Create talker socket sendto")
16521629 CHECK (tcs_socket (&socket, TCS_AF_PACKET , TCS_SOCK_DGRAM , 0x22F0 ) == TCS_SUCCESS );
16531630
16541631 CHECK (tcs_opt_priority_set (socket, 6 ) == TCS_SUCCESS ); // Set priority to 6 (VLAN priority 6)
1655- struct TcsInterfaceAddress addrs[8 ];
1632+ struct TcsInterfaceAddress addrs[20 ];
16561633 size_t addresses_found = 0 ;
16571634 CHECK (tcs_address_list (0 , TCS_AF_PACKET , addrs, 8 , &addresses_found) == TCS_SUCCESS );
16581635 CHECK (addresses_found > 0 );
@@ -1687,7 +1664,7 @@ TEST_CASE("TSN Create talker socket bind")
16871664 CHECK (tcs_socket_preset (&socket, TCS_PRESET_RAW ) == TCS_SUCCESS );
16881665
16891666 CHECK (tcs_opt_priority_set (socket, 6 ) == TCS_SUCCESS ); // Set priority to 6 (VLAN priority 6)
1690- struct TcsInterfaceAddress addr[8 ];
1667+ struct TcsInterfaceAddress addr[20 ];
16911668 size_t addresses_found = 0 ;
16921669 CHECK (tcs_address_list (0 , TCS_AF_PACKET , addr, 8 , &addresses_found) == TCS_SUCCESS );
16931670 CHECK (addresses_found > 0 );
@@ -1730,7 +1707,7 @@ TEST_CASE("TSN Create listener")
17301707 // When
17311708 CHECK (tcs_socket_preset (&socket, TCS_PRESET_RAW ) == TCS_SUCCESS );
17321709
1733- struct TcsInterfaceAddress addr[8 ];
1710+ struct TcsInterfaceAddress addr[20 ];
17341711 size_t addresses_found = 0 ;
17351712 CHECK (tcs_address_list (0 , TCS_AF_PACKET , addr, 8 , &addresses_found) == TCS_SUCCESS );
17361713 CHECK (addresses_found > 0 );
@@ -1779,7 +1756,7 @@ TEST_CASE("tcs_packet bind")
17791756
17801757 // Given
17811758 TcsSocket socket = TCS_SOCKET_INVALID ;
1782- struct TcsInterfaceAddress addrs[8 ];
1759+ struct TcsInterfaceAddress addrs[20 ];
17831760 size_t addresses_found = 0 ;
17841761 CHECK (tcs_address_list (0 , TCS_AF_PACKET , addrs, 8 , &addresses_found) == TCS_SUCCESS );
17851762 CHECK (addresses_found > 0 );
@@ -1807,7 +1784,7 @@ TEST_CASE("tcs_packet sendto")
18071784
18081785 // Given
18091786 TcsSocket socket = TCS_SOCKET_INVALID ;
1810- struct TcsInterfaceAddress addrs[8 ];
1787+ struct TcsInterfaceAddress addrs[20 ];
18111788 size_t addresses_found = 0 ;
18121789 CHECK (tcs_address_list (0 , TCS_AF_PACKET , addrs, 8 , &addresses_found) == TCS_SUCCESS );
18131790 CHECK (addresses_found > 0 );
@@ -1845,7 +1822,7 @@ TEST_CASE("tcs_packet_str bind")
18451822
18461823 // Given
18471824 TcsSocket socket = TCS_SOCKET_INVALID ;
1848- struct TcsInterface interfaces[8 ];
1825+ struct TcsInterface interfaces[20 ];
18491826 size_t iface_count = 0 ;
18501827 CHECK (tcs_interface_list (interfaces, 8 , &iface_count) == TCS_SUCCESS );
18511828 CHECK (iface_count > 0 );
0 commit comments