MT#55283 use typed hash table for rr_spec

Change-Id: I99a4c334e182e5cb568cd8241b4f81340066dee2
pull/1910/head
Richard Fuchs 10 months ago
parent 02bccee56b
commit 3ea365ef60

@ -2115,7 +2115,7 @@ static void __init_interface(struct call_media *media, const str *ifname, int nu
return;
if (!str_cmp_str(&media->logical_intf->name, ifname))
return;
if (g_hash_table_lookup(media->logical_intf->rr_specs, ifname))
if (t_hash_table_lookup(media->logical_intf->rr_specs, ifname))
return;
get:
media->logical_intf = get_logical_interface(ifname, media->desired_family, num_ports);

@ -761,7 +761,7 @@ static void __add_intf_rr_1(struct logical_intf *lif, str *name_base, sockfamily
}
t_queue_push_tail(&rr->logical_intfs, lif);
rr->singular = (rr->logical_intfs.length == 1) ? lif : NULL;
g_hash_table_insert(lif->rr_specs, &rr->hash_key.name, lif);
t_hash_table_insert(lif->rr_specs, &rr->hash_key.name, lif);
}
static void __add_intf_rr(struct logical_intf *lif, str *name_base, sockfamily_t *fam) {
__add_intf_rr_1(lif, name_base, fam);
@ -807,7 +807,7 @@ static void __interface_append(struct intf_config *ifa, sockfamily_t *fam, bool
lif->name = ifa->name;
lif->name_base = ifa->name_base;
lif->preferred_family = fam;
lif->rr_specs = g_hash_table_new((GHashFunc) str_hash, (GEqualFunc) str_equal);
lif->rr_specs = rr_specs_ht_new();
struct intf_key *key = g_new0(__typeof(*key), 1);
key->name = ifa->name;
@ -3271,7 +3271,7 @@ void interfaces_free(void) {
GQueue *q = &__preferred_lists_for_family[i];
struct logical_intf *lif;
while ((lif = g_queue_pop_head(q))) {
g_hash_table_destroy(lif->rr_specs);
t_hash_table_destroy(lif->rr_specs);
t_queue_clear(&lif->list);
g_slice_free1(sizeof(*lif), lif);
}

@ -75,12 +75,13 @@ struct streamhandler {
TYPED_GQUEUE(local_intf, struct local_intf)
TYPED_GHASHTABLE(rr_specs_ht, str, struct logical_intf, str_hash, str_equal, NULL, NULL)
struct logical_intf {
str name;
sockfamily_t *preferred_family;
local_intf_q list;
GHashTable *rr_specs;
rr_specs_ht rr_specs;
str name_base; // if name is "foo:bar", this is "foo"
};
struct port_pool {

Loading…
Cancel
Save