void ldp_nexthop_del_outlabel2(ldp_global *g, ldp_nexthop * n, ldp_outlabel * o) { MPLS_ASSERT(n && o); MPLS_LIST_REMOVE(&n->outlabel_root, o, _nexthop); ldp_outlabel_del_nexthop2(g, o); MPLS_REFCNT_RELEASE(o, ldp_outlabel_delete); }
void ldp_attr_del_us2ds(ldp_global *g, ldp_attr * us, ldp_attr * ds) { if (!us || !ds) { return; } if (ldp_attr_us_partof_ds(us, ds) == MPLS_BOOL_TRUE) { us->ds_attr = NULL; MPLS_REFCNT_RELEASE2(g, ds, ldp_attr_delete); MPLS_LIST_REMOVE(&ds->us_attr_root, us, _ds_attr); MPLS_REFCNT_RELEASE2(g, us, ldp_attr_delete); } else { MPLS_ASSERT(0); } }
void ldp_fec_del_nexthop(ldp_global *g, ldp_fec * f, ldp_nexthop *nh) { MPLS_ASSERT(f && nh); if (nh->addr) { ldp_addr_del_nexthop(g, nh->addr, nh); } if (nh->iff) { ldp_if_del_nexthop(g, nh->iff, nh); } if (nh->outlabel) { ldp_outlabel_del_nexthop(g, nh->outlabel, nh); } MPLS_LIST_REMOVE(&f->nh_root, nh, _fec); ldp_nexthop_del_fec(g, nh); MPLS_REFCNT_RELEASE2(g, nh, ldp_nexthop_delete); }