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); }
/** 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; }