Example #1
0
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);
}
Example #2
0
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);
  }
}
Example #3
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);
}