Browse Source

MT#56750 Deprecate unused objects of `media_socket.port_pool`

We have to stop using objects of `struct port_pool` (media_socket.h),
becasue a newer approach introduced for ports allocations deprecates
usage of them.

Deprecated objects:
`port_pool.last_used`
`port_pool.ports_used`
`port_pool.free_list`
`port_pool.free_list_used`

Change-Id: I70e166753da7a43cb3b6b188c83d978b7dbce046
pull/1642/head
Donat Zenichev 3 years ago
parent
commit
c024b54dc3
5 changed files with 21 additions and 21 deletions
  1. +1
    -4
      daemon/cli.c
  2. +2
    -2
      daemon/graphite.c
  3. +17
    -5
      daemon/media_socket.c
  4. +1
    -3
      daemon/statistics.c
  5. +0
    -7
      include/media_socket.h

+ 1
- 4
daemon/cli.c View File

@ -1650,13 +1650,10 @@ static void cli_incoming_list_interfaces(str *instr, struct cli_writer *cw) {
cw->cw_printf(cw, " Port range: %5u - %5u\n",
lif->spec->port_pool.min,
lif->spec->port_pool.max);
unsigned int f = g_atomic_int_get(&lif->spec->port_pool.free_ports);
unsigned int l = g_atomic_int_get(&lif->spec->port_pool.last_used);
unsigned int f = g_hash_table_size(lif->spec->port_pool.free_ports_ht);
unsigned int r = lif->spec->port_pool.max - lif->spec->port_pool.min + 1;
cw->cw_printf(cw, " Ports used: %5u / %5u (%5.1f%%)\n",
r - f, r, (double) (r - f) * 100.0 / r);
cw->cw_printf(cw, " Last port used: %5u\n",
l);
}
}


+ 2
- 2
daemon/graphite.c View File

@ -185,10 +185,10 @@ GString *print_graphite_data(void) {
int num_ports = lif->spec->port_pool.max - lif->spec->port_pool.min + 1;
GPF("ports_free_%s_%s %i", lif->logical->name.s,
sockaddr_print_buf(&lif->spec->local_address.addr),
g_atomic_int_get(&lif->spec->port_pool.free_ports));
g_hash_table_size(lif->spec->port_pool.free_ports_ht));
GPF("ports_used_%s_%s %i", lif->logical->name.s,
sockaddr_print_buf(&lif->spec->local_address.addr),
num_ports - g_atomic_int_get(&lif->spec->port_pool.free_ports));
num_ports - g_hash_table_size(lif->spec->port_pool.free_ports_ht));
}
mutex_lock(&rtpe_codec_stats_lock);


+ 17
- 5
daemon/media_socket.c View File

@ -429,7 +429,7 @@ static int has_free_ports_loc(struct local_intf *loc, unsigned int num_ports) {
return 0;
}
if (num_ports > g_atomic_int_get(&loc->spec->port_pool.free_ports)) {
if (num_ports > g_hash_table_size(loc->spec->port_pool.free_ports_ht)) {
ilog(LOG_ERR, "Didn't find %d ports available for " STR_FORMAT "/%s",
num_ports, STR_FMT(&loc->logical->name),
sockaddr_print_buf(&loc->spec->local_address.addr));
@ -439,7 +439,7 @@ static int has_free_ports_loc(struct local_intf *loc, unsigned int num_ports) {
__C_DBG("Found %d ports available for " STR_FORMAT "/%s from total of %d free ports",
num_ports, STR_FMT(&loc->logical->name),
sockaddr_print_buf(&loc->spec->local_address.addr),
loc->spec->port_pool.free_ports);
g_hash_table_size(loc->spec->port_pool.free_ports_ht));
return 1;
}
@ -844,14 +844,27 @@ void interfaces_init(GQueue *interfaces) {
}
void interfaces_exclude_port(unsigned int port) {
GList *vals, *l;
GList *vals, *l, *ll;
struct intf_spec *spec;
struct port_pool *pp;
GQueue * free_ports_q;
GHashTable * free_ports_ht;
vals = g_hash_table_get_values(__intf_spec_addr_type_hash);
for (l = vals; l; l = l->next) {
spec = l->data;
bit_array_set(spec->port_pool.ports_used, port);
pp = &spec->port_pool;
free_ports_q = &pp->free_ports_q;
free_ports_ht = pp->free_ports_ht;
mutex_lock(&pp->free_list_lock);
ll = g_hash_table_lookup(free_ports_ht, GUINT_TO_POINTER(port));
if (ll)
reserve_port(free_ports_q, free_ports_ht, l, port);
mutex_unlock(&pp->free_list_lock);
}
g_list_free(vals);
@ -3154,7 +3167,6 @@ void interfaces_free(void) {
for (GList *l = ll; l; l = l->next) {
struct intf_spec *spec = l->data;
struct port_pool *pp = &spec->port_pool;
g_queue_clear(&pp->free_list); /* TODO: deprecate it */
if (pp->free_ports_ht) {
g_hash_table_destroy(pp->free_ports_ht);
}


+ 1
- 3
daemon/statistics.c View File

@ -663,8 +663,7 @@ GQueue *statistics_gather_metrics(struct interface_sampled_rate_stats *interface
METRICs("min", "%u", lif->spec->port_pool.min);
METRICs("max", "%u", lif->spec->port_pool.max);
unsigned int f = g_atomic_int_get(&lif->spec->port_pool.free_ports);
unsigned int l = g_atomic_int_get(&lif->spec->port_pool.last_used);
unsigned int f = g_hash_table_size(lif->spec->port_pool.free_ports_ht);
unsigned int r = lif->spec->port_pool.max - lif->spec->port_pool.min + 1;
METRICs("used", "%u", r - f);
PROM("ports_used", "gauge");
@ -679,7 +678,6 @@ GQueue *statistics_gather_metrics(struct interface_sampled_rate_stats *interface
PROM("ports", "gauge");
PROMLAB("name=\"%s\",address=\"%s\"", lif->logical->name.s,
sockaddr_print_buf(&lif->spec->local_address.addr));
METRICs("last", "%u", l);
HEADER("}", NULL);


+ 0
- 7
include/media_socket.h View File

@ -79,16 +79,9 @@ struct logical_intf {
str name_base; // if name is "foo:bar", this is "foo"
};
struct port_pool {
BIT_ARRAY_DECLARE(ports_used, 0x10000);
volatile unsigned int last_used;
volatile unsigned int free_ports;
unsigned int min, max;
mutex_t free_list_lock;
GQueue free_list;
BIT_ARRAY_DECLARE(free_list_used, 0x10000);
GQueue free_ports_q; /* for getting the next free port */
GHashTable * free_ports_ht; /* for a lookup, if the port is used */


Loading…
Cancel
Save