Skip to content

Commit e39357b

Browse files
committed
Added macros to test/remove MARK_ from socket descriptors
1 parent 986e042 commit e39357b

File tree

4 files changed

+115
-111
lines changed

4 files changed

+115
-111
lines changed

src/port/posix/bsd_socket.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -184,18 +184,18 @@ static void wolfip_fd_pool_init(void)
184184
static struct wolfip_fd_entry *wolfip_entry_from_internal(int internal_fd)
185185
{
186186
int idx;
187-
if (internal_fd & MARK_TCP_SOCKET) {
188-
int pos = internal_fd & ~MARK_TCP_SOCKET;
187+
if (IS_SOCKET_TCP(internal_fd)) {
188+
int pos = SOCKET_UNMARK(internal_fd);
189189
if (pos < 0 || pos >= MAX_TCPSOCKETS)
190190
return NULL;
191191
idx = tcp_entry_for_slot[pos];
192-
} else if (internal_fd & MARK_UDP_SOCKET) {
193-
int pos = internal_fd & ~MARK_UDP_SOCKET;
192+
} else if (IS_SOCKET_UDP(internal_fd)) {
193+
int pos = SOCKET_UNMARK(internal_fd);
194194
if (pos < 0 || pos >= MAX_UDPSOCKETS)
195195
return NULL;
196196
idx = udp_entry_for_slot[pos];
197-
} else if (internal_fd & MARK_ICMP_SOCKET) {
198-
int pos = internal_fd & ~MARK_ICMP_SOCKET;
197+
} else if (IS_SOCKET_ICMP(internal_fd)) {
198+
int pos = SOCKET_UNMARK(internal_fd);
199199
if (pos < 0 || pos >= MAX_ICMPSOCKETS)
200200
return NULL;
201201
idx = icmp_entry_for_slot[pos];
@@ -220,33 +220,33 @@ static struct wolfip_fd_entry *wolfip_entry_from_public(int public_fd)
220220

221221
static void wolfip_fd_detach_internal(int internal_fd)
222222
{
223-
if (internal_fd & MARK_TCP_SOCKET) {
224-
int pos = internal_fd & ~MARK_TCP_SOCKET;
223+
if (IS_SOCKET_TCP(internal_fd)) {
224+
int pos = SOCKET_UNMARK(internal_fd);
225225
if (pos >= 0 && pos < MAX_TCPSOCKETS)
226226
tcp_entry_for_slot[pos] = -1;
227-
} else if (internal_fd & MARK_UDP_SOCKET) {
228-
int pos = internal_fd & ~MARK_UDP_SOCKET;
227+
} else if (IS_SOCKET_UDP(internal_fd)) {
228+
int pos = SOCKET_UNMARK(internal_fd);
229229
if (pos >= 0 && pos < MAX_UDPSOCKETS)
230230
udp_entry_for_slot[pos] = -1;
231-
} else if (internal_fd & MARK_ICMP_SOCKET) {
232-
int pos = internal_fd & ~MARK_ICMP_SOCKET;
231+
} else if (IS_SOCKET_ICMP(internal_fd)) {
232+
int pos = SOCKET_UNMARK(internal_fd);
233233
if (pos >= 0 && pos < MAX_ICMPSOCKETS)
234234
icmp_entry_for_slot[pos] = -1;
235235
}
236236
}
237237

238238
static void wolfip_fd_attach_internal(int internal_fd, int entry_idx)
239239
{
240-
if (internal_fd & MARK_TCP_SOCKET) {
241-
int pos = internal_fd & ~MARK_TCP_SOCKET;
240+
if (IS_SOCKET_TCP(internal_fd)) {
241+
int pos = SOCKET_UNMARK(internal_fd);
242242
if (pos >= 0 && pos < MAX_TCPSOCKETS)
243243
tcp_entry_for_slot[pos] = entry_idx;
244-
} else if (internal_fd & MARK_UDP_SOCKET) {
245-
int pos = internal_fd & ~MARK_UDP_SOCKET;
244+
} else if (IS_SOCKET_UDP(internal_fd)) {
245+
int pos = SOCKET_UNMARK(internal_fd);
246246
if (pos >= 0 && pos < MAX_UDPSOCKETS)
247247
udp_entry_for_slot[pos] = entry_idx;
248-
} else if (internal_fd & MARK_ICMP_SOCKET) {
249-
int pos = internal_fd & ~MARK_ICMP_SOCKET;
248+
} else if (IS_SOCKET_ICMP(internal_fd)) {
249+
int pos = SOCKET_UNMARK(internal_fd);
250250
if (pos >= 0 && pos < MAX_ICMPSOCKETS)
251251
icmp_entry_for_slot[pos] = entry_idx;
252252
}

src/test/unit/unit.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ START_TEST(test_tcp_listen_rejects_wrong_interface)
999999

10001000
listen_fd = wolfIP_sock_socket(&s, AF_INET, IPSTACK_SOCK_STREAM, 0);
10011001
ck_assert_int_ge(listen_fd, 0);
1002-
listener = &s.tcpsockets[listen_fd & ~MARK_TCP_SOCKET];
1002+
listener = &s.tcpsockets[SOCKET_UNMARK(listen_fd)];
10031003

10041004
memset(&addr, 0, sizeof(addr));
10051005
addr.sin_family = AF_INET;
@@ -1031,7 +1031,7 @@ START_TEST(test_tcp_listen_accepts_bound_interface)
10311031

10321032
listen_fd = wolfIP_sock_socket(&s, AF_INET, IPSTACK_SOCK_STREAM, 0);
10331033
ck_assert_int_ge(listen_fd, 0);
1034-
listener = &s.tcpsockets[listen_fd & ~MARK_TCP_SOCKET];
1034+
listener = &s.tcpsockets[SOCKET_UNMARK(listen_fd)];
10351035

10361036
memset(&addr, 0, sizeof(addr));
10371037
addr.sin_family = AF_INET;
@@ -1048,7 +1048,7 @@ START_TEST(test_tcp_listen_accepts_bound_interface)
10481048

10491049
client_fd = wolfIP_sock_accept(&s, listen_fd, NULL, NULL);
10501050
ck_assert_int_ge(client_fd, 0);
1051-
client = &s.tcpsockets[client_fd & ~MARK_TCP_SOCKET];
1051+
client = &s.tcpsockets[SOCKET_UNMARK(client_fd)];
10521052
ck_assert_uint_eq(client->local_ip, secondary_ip);
10531053
ck_assert_uint_eq(client->bound_local_ip, secondary_ip);
10541054
ck_assert_int_eq(client->sock.tcp.state, TCP_ESTABLISHED);
@@ -1071,7 +1071,7 @@ START_TEST(test_tcp_listen_accepts_any_interface)
10711071

10721072
listen_fd = wolfIP_sock_socket(&s, AF_INET, IPSTACK_SOCK_STREAM, 0);
10731073
ck_assert_int_ge(listen_fd, 0);
1074-
listener = &s.tcpsockets[listen_fd & ~MARK_TCP_SOCKET];
1074+
listener = &s.tcpsockets[SOCKET_UNMARK(listen_fd)];
10751075

10761076
memset(&addr, 0, sizeof(addr));
10771077
addr.sin_family = AF_INET;
@@ -1088,7 +1088,7 @@ START_TEST(test_tcp_listen_accepts_any_interface)
10881088

10891089
client_fd = wolfIP_sock_accept(&s, listen_fd, NULL, NULL);
10901090
ck_assert_int_ge(client_fd, 0);
1091-
client = &s.tcpsockets[client_fd & ~MARK_TCP_SOCKET];
1091+
client = &s.tcpsockets[SOCKET_UNMARK(client_fd)];
10921092
ck_assert_uint_eq(client->local_ip, secondary_ip);
10931093
ck_assert_int_eq(client->sock.tcp.state, TCP_ESTABLISHED);
10941094
}
@@ -1116,7 +1116,7 @@ START_TEST(test_sock_connect_selects_local_ip_multi_if)
11161116
dst.sin_port = ee16(5555);
11171117
dst.sin_addr.s_addr = ee32(remote_secondary);
11181118
ck_assert_int_eq(wolfIP_sock_connect(&s, udp_fd, (struct wolfIP_sockaddr *)&dst, sizeof(dst)), 0);
1119-
ts = &s.udpsockets[udp_fd & ~MARK_UDP_SOCKET];
1119+
ts = &s.udpsockets[SOCKET_UNMARK(udp_fd)];
11201120
ck_assert_uint_eq(ts->local_ip, secondary_ip);
11211121
ck_assert_uint_eq(ts->if_idx, TEST_SECOND_IF);
11221122

@@ -1128,7 +1128,7 @@ START_TEST(test_sock_connect_selects_local_ip_multi_if)
11281128
dst.sin_addr.s_addr = ee32(remote_primary);
11291129
ret = wolfIP_sock_connect(&s, tcp_fd, (struct wolfIP_sockaddr *)&dst, sizeof(dst));
11301130
ck_assert_int_eq(ret, -WOLFIP_EAGAIN);
1131-
ts = &s.tcpsockets[tcp_fd & ~MARK_TCP_SOCKET];
1131+
ts = &s.tcpsockets[SOCKET_UNMARK(tcp_fd)];
11321132
ck_assert_uint_eq(ts->local_ip, primary_ip);
11331133
ck_assert_uint_eq(ts->if_idx, TEST_PRIMARY_IF);
11341134
}
@@ -1266,7 +1266,7 @@ START_TEST(test_icmp_socket_send_recv)
12661266

12671267
sd = wolfIP_sock_socket(&s, AF_INET, IPSTACK_SOCK_DGRAM, WI_IPPROTO_ICMP);
12681268
ck_assert_int_gt(sd, 0);
1269-
ts = &s.icmpsockets[sd & ~MARK_ICMP_SOCKET];
1269+
ts = &s.icmpsockets[SOCKET_UNMARK(sd)];
12701270
ck_assert_uint_gt(fifo_space(&ts->sock.udp.txbuf), (uint32_t)sizeof(payload));
12711271
fifo_init(&ts->sock.udp.txbuf, ts->txmem, TXBUF_SIZE);
12721272
fifo_init(&ts->sock.udp.rxbuf, ts->rxmem, RXBUF_SIZE);
@@ -1286,7 +1286,7 @@ START_TEST(test_icmp_socket_send_recv)
12861286
ret = wolfIP_sock_sendto(&s, sd, payload, sizeof(payload), 0,
12871287
(struct wolfIP_sockaddr *)&sin, sizeof(sin));
12881288
ck_assert_int_eq(ret, (int)sizeof(payload));
1289-
ts = &s.icmpsockets[sd & ~MARK_ICMP_SOCKET];
1289+
ts = &s.icmpsockets[SOCKET_UNMARK(sd)];
12901290
ck_assert_uint_eq(ts->if_idx, TEST_PRIMARY_IF);
12911291

12921292
{

0 commit comments

Comments
 (0)