File 2423-erts-enet-Update-get-ip-address-table-function-sort.patch of Package erlang
From 028e8dc27041cf2ea4ae0c5e6373ddbb8ba254d2 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 3 Jun 2025 16:01:05 +0200
Subject: [PATCH 03/14] [erts|enet] Update get-ip-address-table function (sort)
Update get-ip-address-table function to handle 'sort'
argument.
---
erts/emulator/nifs/common/prim_net_nif.c | 31 ++++++++++++++++++++----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/erts/emulator/nifs/common/prim_net_nif.c b/erts/emulator/nifs/common/prim_net_nif.c
index e026103965..33c805a68c 100644
--- a/erts/emulator/nifs/common/prim_net_nif.c
+++ b/erts/emulator/nifs/common/prim_net_nif.c
@@ -475,6 +475,7 @@ static void make_adapter_index_map(ErlNifEnv* env,
ERL_NIF_TERM* emap);
/* *** Get IP Address Table functions *** */
static ERL_NIF_TERM enet_get_ip_address_table(ErlNifEnv* env,
+ BOOLEAN_T sort,
BOOLEAN_T dbg);
static ERL_NIF_TERM enet_get_ip_address_table_encode(ErlNifEnv* env,
BOOLEAN_T dbg,
@@ -3802,7 +3803,7 @@ ERL_NIF_TERM nif_get_ip_address_table(ErlNifEnv* env,
return enif_raise_exception(env, MKA(env, "notsup"));
#else
ERL_NIF_TERM result, eargs;
- BOOLEAN_T dbg;
+ BOOLEAN_T dbg, sort;
NDBG( ("NET", "nif_get_ip_address_table -> entry (%d)\r\n", argc) );
@@ -3812,9 +3813,11 @@ ERL_NIF_TERM nif_get_ip_address_table(ErlNifEnv* env,
}
eargs = argv[0];
+ sort = enet_get_ip_address_table_args_sort(env, eargs);
+
dbg = enet_get_ip_address_table_args_debug(env, eargs);
- result = enet_get_ip_address_table(env, dbg);
+ result = enet_get_ip_address_table(env, sort, dbg);
NDBG2( dbg,
("NET",
@@ -3837,9 +3840,26 @@ BOOLEAN_T enet_get_ip_address_table_args_debug(ErlNifEnv* env,
#endif // __WIN32__
+#if defined(__WIN32__)
+static
+BOOLEAN_T enet_get_ip_address_table_args_sort(ErlNifEnv* env,
+ const ERL_NIF_TERM eargs)
+{
+ /*
+ * We need to do this here since the "proper" atom has not been
+ * created when this function is called.
+ */
+ ERL_NIF_TERM sort = MKA(env, "sort");
+
+ return esock_get_bool_from_map(env, eargs, sort, FALSE);
+}
+#endif // __WIN32__
+
+
#if defined(__WIN32__)
static
ERL_NIF_TERM enet_get_ip_address_table(ErlNifEnv* env,
+ BOOLEAN_T sort,
BOOLEAN_T dbg)
{
int i;
@@ -3854,11 +3874,12 @@ ERL_NIF_TERM enet_get_ip_address_table(ErlNifEnv* env,
for (i = 17; i; i--) {
NDBG2( dbg,
- ("NET", "enet_get_ip_address_table -> try get table with: "
+ ("NET", "enet_get_ip_address_table -> [%d] try get table with: "
+ "\r\n sort: %s"
"\r\n tabSize: %d"
- "\r\n", tabSize) );
+ "\r\n", i, B2S(sort), tabSize) );
- ret = GetIpAddrTable(ipAddrTabP, &tabSize, FALSE);
+ ret = GetIpAddrTable(ipAddrTabP, &tabSize, sort);
NDBG2( dbg,
("NET", "enet_get_ip_address_table -> "
--
2.43.0