Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zebra: add label chunk range in log when label manager request fails (backport #14584) #14593

Merged
merged 2 commits into from
Oct 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions zebra/label_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,25 @@ static int label_manager_get_chunk(struct label_manager_chunk **lmc,
{
*lmc = assign_label_chunk(client->proto, client->instance,
client->session_id, keep, size, base);
return lm_get_chunk_response(*lmc, client, vrf_id);
/* Respond to a get_chunk request */
if (!*lmc) {
if (base == MPLS_LABEL_BASE_ANY)
flog_err(EC_ZEBRA_LM_CANNOT_ASSIGN_CHUNK,
"Unable to assign Label Chunk size %u to %s instance %u",
size, zebra_route_string(client->proto),
client->instance);
else
flog_err(EC_ZEBRA_LM_CANNOT_ASSIGN_CHUNK,
"Unable to assign Label Chunk %u - %u to %s instance %u",
base, base + size - 1,
zebra_route_string(client->proto),
client->instance);
} else if (IS_ZEBRA_DEBUG_PACKET)
zlog_debug("Assigned Label Chunk %u - %u to %s instance %u",
(*lmc)->start, (*lmc)->end,
zebra_route_string(client->proto), client->instance);

return zsend_assign_label_chunk_response(client, vrf_id, *lmc);
}

/* Respond to a connect request */
Expand All @@ -475,22 +493,6 @@ int lm_client_connect_response(uint8_t proto, uint16_t instance,
return zsend_label_manager_connect_response(client, vrf_id, result);
}

/* Respond to a get_chunk request */
int lm_get_chunk_response(struct label_manager_chunk *lmc, struct zserv *client,
vrf_id_t vrf_id)
{
if (!lmc)
flog_err(EC_ZEBRA_LM_CANNOT_ASSIGN_CHUNK,
"Unable to assign Label Chunk to %s instance %u",
zebra_route_string(client->proto), client->instance);
else if (IS_ZEBRA_DEBUG_PACKET)
zlog_debug("Assigned Label Chunk %u - %u to %s instance %u",
lmc->start, lmc->end,
zebra_route_string(client->proto), client->instance);

return zsend_assign_label_chunk_response(client, vrf_id, lmc);
}

void label_manager_close(void)
{
list_delete(&lbl_mgr.lc_list);
Expand Down
2 changes: 0 additions & 2 deletions zebra/label_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ void lm_release_chunk_call(struct zserv *client, uint32_t start,
int lm_client_connect_response(uint8_t proto, uint16_t instance,
uint32_t session_id, vrf_id_t vrf_id,
uint8_t result);
int lm_get_chunk_response(struct label_manager_chunk *lmc, struct zserv *client,
vrf_id_t vrf_id);

/* convenience function to allocate an lmc to be consumed by the above API */
struct label_manager_chunk *
Expand Down
Loading