peer_id is mostly this already (except in DCO
context for some reason), and max_peerid was
defined as uint32_t as well. So changing max_clients
to uint32_t avoids many -Wsign-compare warnings.
While here fix limit for max_clients in options
parsing. It is not allowed to be MAX_PEER_ID
exactly.
Change-Id: I8d6b7bc1b7744dc6d57aaed3231b8901275752f2
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1564
Message-Id: <
20260407112434.5588-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg36535.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
return ret;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
static void
dco_update_peer_stat(struct multi_context *m, uint32_t peerid, const nvlist_t *nvl)
{
__func__, peerid, mi->context.c2.dco_read_bytes, mi->context.c2.dco_write_bytes);
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
int
dco_read_and_process(dco_context_t *dco)
{
}
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
static int
ovpn_handle_peer(dco_context_t *dco, struct nlattr *attrs[])
{
if (dco->ifmode == OVPN_MODE_P2P)
{
c2 = &dco->c->c2;
- if (c2->tls_multi->dco_peer_id != peer_id)
+ if (c2->tls_multi->dco_peer_id != (int)peer_id)
{
return NL_SKIP;
}
return NL_OK;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
static bool
ovpn_iface_check(dco_context_t *dco, struct nlattr *attrs[])
{
return 0;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
int
dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err)
{
{
OVPN_PEER_STATS *stat = &peer_stats[i];
- if (stat->PeerId >= dco->c->multi->max_clients)
+ if (stat->PeerId >= (int)dco->c->multi->max_clients)
{
- msg(M_WARN, "%s: received out of bound peer_id %u (max=%u)", __func__, stat->PeerId,
+ msg(M_WARN, "%s: received out of bound peer_id %d (max=%u)", __func__, stat->PeerId,
dco->c->multi->max_clients);
continue;
}
return ret;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
int
dco_get_peer_stats_fallback(struct context *c, const bool raise_sigusr1_on_err)
{
return false;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
/*
* Get a client instance based on real address. If
* the instance doesn't exist, create it while
uint32_t peer_id = ((uint32_t)ptr[1] << 16) | ((uint32_t)ptr[2] << 8) | ((uint32_t)ptr[3]);
peer_id_disabled = (peer_id == MAX_PEER_ID);
- if (!peer_id_disabled && (peer_id < m->max_clients) && (m->instances[peer_id]))
+ if (!peer_id_disabled && (peer_id < m->max_clients) && m->instances[peer_id])
{
/* Floating on TCP will never be possible, so ensure we only process
* UDP clients */
return mi;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
/*
* Send a packet to UDP socket.
*/
}
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
/*
* Create a client instance object for a newly connected client.
*/
return NULL;
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
/*
* Dump tables -- triggered by SIGUSR2.
* If status file is defined, write to file.
return;
}
- if ((peer_id < m->max_clients) && (m->instances[peer_id]))
+ if (((uint32_t)peer_id < m->max_clients) && m->instances[peer_id])
{
struct multi_instance *mi = m->instances[peer_id];
set_prefix(mi);
#endif /* ifdef ENABLE_MANAGEMENT */
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wsign-compare"
-#endif
-
void
multi_assign_peer_id(struct multi_context *m, struct multi_instance *mi)
{
/* max_clients must be less then max peer-id value */
ASSERT(m->max_clients < MAX_PEER_ID);
- for (int i = 0; i < m->max_clients; ++i)
+ for (uint32_t i = 0; i < m->max_clients; ++i)
{
if (!m->instances[i])
{
}
}
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
/**
* @brief Determines the earliest wakeup interval based on periodic operations.
*
struct multi_reap *reaper;
struct mroute_addr local;
bool enable_c2c;
- int max_clients;
+ uint32_t max_clients;
int tcp_queue_limit;
int status_file_version;
int n_clients; /* current number of authenticated clients */
SHOW_INT(cf_per);
SHOW_INT(cf_initial_max);
SHOW_INT(cf_initial_per);
- SHOW_INT(max_clients);
+ SHOW_UINT(max_clients);
SHOW_INT(max_routes_per_client);
SHOW_STR(auth_user_pass_verify_script);
SHOW_BOOL(auth_user_pass_verify_script_via_file);
else if (streq(p[0], "max-clients") && p[1] && !p[2])
{
VERIFY_PERMISSION(OPT_P_GENERAL);
- if (!atoi_constrained(p[1], &options->max_clients, p[0], 1, MAX_PEER_ID, msglevel))
+ if (!atoi_constrained(p[1], (int *)&options->max_clients, p[0], 1, MAX_PEER_ID - 1, msglevel))
{
goto err;
}
int cf_initial_max;
int cf_initial_per;
- int max_clients;
+ uint32_t max_clients;
int max_routes_per_client;
int stale_routes_check_interval;
int stale_routes_ageing_time;