Skip to content

Commit

Permalink
zebra: delete label chunk upon release
Browse files Browse the repository at this point in the history
In zebra/label_manager.c the releasing of the label chunk is done by
disowning the chunk to the system. The presence of this system label
chunk will cause label assignment to fail for this use case example:

label chunk ospf: 300-320
label chunk system: 510-520
label chunk isis: 1200-1300

Then we try to allocate the chunk 500-530, we get this error:
  "Allocation of mpls label chunk [500/530] failed"

The error is raised when the below condition is true:
    /* if chunk is used, cannot honor request */
      if (lmc->proto != NO_PROTO)
	      return NULL;

Delete the label chunk instead of disowning it when the label releasing
is done.

Signed-off-by: Farid MIHOUB <[email protected]>
  • Loading branch information
FRIDM636 authored and Farid Mihoub committed Jan 31, 2023
1 parent 75d513a commit 510efe9
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions zebra/label_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -429,13 +429,14 @@ int release_label_chunk(uint8_t proto, unsigned short instance,
"%s: Daemon mismatch!!", __func__);
continue;
}
lmc->proto = NO_PROTO;
lmc->instance = 0;
lmc->session_id = 0;
lmc->keep = 0;
ret = 0;
break;
}
if (lmc) {
list_delete_node(lbl_mgr.lc_list, node);
delete_label_chunk(lmc);
}

if (ret != 0)
flog_err(EC_ZEBRA_LM_UNRELEASED_CHUNK,
"%s: Label chunk not released!!", __func__);
Expand Down

0 comments on commit 510efe9

Please sign in to comment.