struct lisp_db * ms_init_db() { struct prefix p; struct db_node *dn; struct lisp_db *db; db = calloc(1, sizeof(struct lisp_db)); //make new tree db->lisp_db4 = db_table_init(&ms_free_node); db->lisp_db6 = db_table_init(&ms_free_node); //assign 0.0.0.0/0 as root of ipv4 tree str2prefix("0.0.0.0/0",&p); apply_mask(&p); dn = db_node_get(db->lisp_db4,&p); assert(dn == (db->lisp_db4->top)); dn->flags = ms_new_node_ex(_ROOT); //and 0::/0 as root of ipv6 tree str2prefix("0::/0",&p); apply_mask(&p); dn = db_node_get(db->lisp_db6,&p); assert(dn == (db->lisp_db6->top)); dn->flags = ms_new_node_ex(_ROOT); return db; }
void * generic_mapping_new(struct prefix * eid){ struct db_node * rn; struct list_t * locs; struct db_table * table; table = ms_get_db_table(ms_db,eid); if(!table) return NULL; rn = db_node_get(table, eid); if(!rn){ return (NULL); } locs = list_init(); db_node_set_info(rn, locs); return ((void *)rn); }