mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 10:38:05 +00:00
Merge pull request #1158 from opensourcerouting/ldpd-label-allocation
ldpd label allocation
This commit is contained in:
commit
8ce42777bc
@ -1609,7 +1609,6 @@ static void
|
|||||||
zclient_sync_init(u_short instance)
|
zclient_sync_init(u_short instance)
|
||||||
{
|
{
|
||||||
/* Initialize special zclient for synchronous message exchanges. */
|
/* Initialize special zclient for synchronous message exchanges. */
|
||||||
log_debug("Initializing synchronous zclient for label manager");
|
|
||||||
zclient_sync = zclient_new(master);
|
zclient_sync = zclient_new(master);
|
||||||
zclient_sync->sock = -1;
|
zclient_sync->sock = -1;
|
||||||
zclient_sync->redist_default = ZEBRA_ROUTE_LDP;
|
zclient_sync->redist_default = ZEBRA_ROUTE_LDP;
|
||||||
@ -1640,7 +1639,7 @@ lde_get_label_chunk(void)
|
|||||||
int ret;
|
int ret;
|
||||||
uint32_t start, end;
|
uint32_t start, end;
|
||||||
|
|
||||||
log_debug("Getting label chunk");
|
debug_labels("getting label chunk (size %u)", CHUNK_SIZE);
|
||||||
ret = lm_get_label_chunk(zclient_sync, 0, CHUNK_SIZE, &start, &end);
|
ret = lm_get_label_chunk(zclient_sync, 0, CHUNK_SIZE, &start, &end);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_warnx("Error getting label chunk!");
|
log_warnx("Error getting label chunk!");
|
||||||
@ -1670,7 +1669,7 @@ on_get_label_chunk_response(uint32_t start, uint32_t end)
|
|||||||
{
|
{
|
||||||
struct label_chunk *new_label_chunk;
|
struct label_chunk *new_label_chunk;
|
||||||
|
|
||||||
log_debug("Label Chunk assign: %u - %u", start, end);
|
debug_labels("label chunk assign: %u - %u", start, end);
|
||||||
|
|
||||||
new_label_chunk = calloc(1, sizeof(struct label_chunk));
|
new_label_chunk = calloc(1, sizeof(struct label_chunk));
|
||||||
if (!new_label_chunk) {
|
if (!new_label_chunk) {
|
||||||
@ -1693,7 +1692,8 @@ static uint32_t
|
|||||||
lde_get_next_label(void)
|
lde_get_next_label(void)
|
||||||
{
|
{
|
||||||
struct label_chunk *label_chunk;
|
struct label_chunk *label_chunk;
|
||||||
uint32_t i, pos, size;
|
uint32_t i, size;
|
||||||
|
uint64_t pos;
|
||||||
uint32_t label = NO_LABEL;
|
uint32_t label = NO_LABEL;
|
||||||
|
|
||||||
while (current_label_chunk) {
|
while (current_label_chunk) {
|
||||||
|
@ -66,6 +66,11 @@ ldp_vty_debug(struct vty *vty, const char *negate, const char *type_str,
|
|||||||
DEBUG_OFF(event, EVENT);
|
DEBUG_OFF(event, EVENT);
|
||||||
else
|
else
|
||||||
DEBUG_ON(event, EVENT);
|
DEBUG_ON(event, EVENT);
|
||||||
|
} else if (strcmp(type_str, "labels") == 0) {
|
||||||
|
if (negate)
|
||||||
|
DEBUG_OFF(labels, LABELS);
|
||||||
|
else
|
||||||
|
DEBUG_ON(labels, LABELS);
|
||||||
} else if (strcmp(type_str, "messages") == 0) {
|
} else if (strcmp(type_str, "messages") == 0) {
|
||||||
if (dir_str == NULL)
|
if (dir_str == NULL)
|
||||||
return (CMD_WARNING_CONFIG_FAILED);
|
return (CMD_WARNING_CONFIG_FAILED);
|
||||||
@ -115,6 +120,8 @@ ldp_vty_show_debugging(struct vty *vty)
|
|||||||
vty_out (vty, " LDP errors debugging is on\n");
|
vty_out (vty, " LDP errors debugging is on\n");
|
||||||
if (LDP_DEBUG(event, EVENT))
|
if (LDP_DEBUG(event, EVENT))
|
||||||
vty_out (vty, " LDP events debugging is on\n");
|
vty_out (vty, " LDP events debugging is on\n");
|
||||||
|
if (LDP_DEBUG(labels, LABELS))
|
||||||
|
vty_out (vty, " LDP labels debugging is on\n");
|
||||||
if (LDP_DEBUG(msg, MSG_RECV_ALL))
|
if (LDP_DEBUG(msg, MSG_RECV_ALL))
|
||||||
vty_out (vty,
|
vty_out (vty,
|
||||||
" LDP detailed messages debugging is on (inbound)\n");
|
" LDP detailed messages debugging is on (inbound)\n");
|
||||||
@ -157,6 +164,11 @@ ldp_debug_config_write(struct vty *vty)
|
|||||||
write = 1;
|
write = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CONF_LDP_DEBUG(labels, LABELS)) {
|
||||||
|
vty_out (vty, "debug mpls ldp labels\n");
|
||||||
|
write = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (CONF_LDP_DEBUG(msg, MSG_RECV_ALL)) {
|
if (CONF_LDP_DEBUG(msg, MSG_RECV_ALL)) {
|
||||||
vty_out (vty, "debug mpls ldp messages recv all\n");
|
vty_out (vty, "debug mpls ldp messages recv all\n");
|
||||||
write = 1;
|
write = 1;
|
||||||
|
@ -31,6 +31,9 @@ struct ldp_debug {
|
|||||||
int event;
|
int event;
|
||||||
#define LDP_DEBUG_EVENT 0x01
|
#define LDP_DEBUG_EVENT 0x01
|
||||||
|
|
||||||
|
int labels;
|
||||||
|
#define LDP_DEBUG_LABELS 0x01
|
||||||
|
|
||||||
int msg;
|
int msg;
|
||||||
#define LDP_DEBUG_MSG_RECV 0x01
|
#define LDP_DEBUG_MSG_RECV 0x01
|
||||||
#define LDP_DEBUG_MSG_RECV_ALL 0x02
|
#define LDP_DEBUG_MSG_RECV_ALL 0x02
|
||||||
@ -90,6 +93,12 @@ do { \
|
|||||||
log_debug("event: " emsg, __VA_ARGS__); \
|
log_debug("event: " emsg, __VA_ARGS__); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define debug_labels(emsg, ...) \
|
||||||
|
do { \
|
||||||
|
if (LDP_DEBUG(labels, LABELS)) \
|
||||||
|
log_debug("labels: " emsg, __VA_ARGS__); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#define debug_msg_recv(emsg, ...) \
|
#define debug_msg_recv(emsg, ...) \
|
||||||
do { \
|
do { \
|
||||||
if (LDP_DEBUG(msg, MSG_RECV)) \
|
if (LDP_DEBUG(msg, MSG_RECV)) \
|
||||||
|
@ -538,13 +538,14 @@ DEFPY (ldp_debug_mpls_ldp_discovery_hello,
|
|||||||
|
|
||||||
DEFPY (ldp_debug_mpls_ldp_type,
|
DEFPY (ldp_debug_mpls_ldp_type,
|
||||||
ldp_debug_mpls_ldp_type_cmd,
|
ldp_debug_mpls_ldp_type_cmd,
|
||||||
"[no] debug mpls ldp <errors|event|zebra>$type",
|
"[no] debug mpls ldp <errors|event|labels|zebra>$type",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Debugging functions\n"
|
"Debugging functions\n"
|
||||||
"MPLS information\n"
|
"MPLS information\n"
|
||||||
"Label Distribution Protocol\n"
|
"Label Distribution Protocol\n"
|
||||||
"Errors\n"
|
"Errors\n"
|
||||||
"LDP event information\n"
|
"LDP event information\n"
|
||||||
|
"LDP label allocation information\n"
|
||||||
"LDP zebra information\n")
|
"LDP zebra information\n")
|
||||||
{
|
{
|
||||||
return (ldp_vty_debug(vty, no, type, NULL, NULL));
|
return (ldp_vty_debug(vty, no, type, NULL, NULL));
|
||||||
|
@ -370,9 +370,9 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (main_imsg_send_ipc_sockets(&iev_ldpe->ibuf, &iev_lde->ibuf))
|
if (main_imsg_send_ipc_sockets(&iev_ldpe->ibuf, &iev_lde->ibuf))
|
||||||
fatal("could not establish imsg links");
|
fatal("could not establish imsg links");
|
||||||
main_imsg_compose_both(IMSG_INIT, &init, sizeof(init));
|
|
||||||
main_imsg_compose_both(IMSG_DEBUG_UPDATE, &ldp_debug,
|
main_imsg_compose_both(IMSG_DEBUG_UPDATE, &ldp_debug,
|
||||||
sizeof(ldp_debug));
|
sizeof(ldp_debug));
|
||||||
|
main_imsg_compose_both(IMSG_INIT, &init, sizeof(init));
|
||||||
main_imsg_send_config(ldpd_conf);
|
main_imsg_send_config(ldpd_conf);
|
||||||
|
|
||||||
if (ldpd_conf->ipv4.flags & F_LDPD_AF_ENABLED)
|
if (ldpd_conf->ipv4.flags & F_LDPD_AF_ENABLED)
|
||||||
|
Loading…
Reference in New Issue
Block a user