Example #1
0
void add_to_addrset (struct addrset *as, const os_sockaddr_storage *addr)
{
  ut_avlIPath_t path;
  ut_avlCTree_t *tree = is_mcaddr (addr) ? &as->mcaddrs : &as->ucaddrs;
  LOCK (as);
  if (ut_avlCLookupIPath (&addrset_treedef, tree, addr, &path) == NULL)
  {
    struct addrset_node *n = os_malloc (sizeof (*n));
    n->addr = *addr;
    ut_avlCInsertIPath (&addrset_treedef, tree, n, &path);
  }
  UNLOCK (as);
}
Example #2
0
/** returns zero if the entry is added */
c_voidp
d_tableInsert(
    d_table table,
    c_voidp object )
{
    c_voidp existingItem;

    existingItem = object;
    if (table) {
        d_tableNode node;
        ut_avlIPath_t p;
        /* QAC EXPECT 3892; */
        assert(d_tableIsValid(table));
        if ((node = ut_avlCLookupIPath (&table->td, &table->tree, object, &p)) != NULL) {
            existingItem = node->object;
        } else if ((node = d_malloc (sizeof (*node), "d_tableNode")) != NULL) {
            node->object = object;
            ut_avlCInsertIPath (&table->td, &table->tree, node, &p);
            existingItem = NULL;
        }
    }
    return existingItem;
}