diff options
author | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:03:14 +0200 |
---|---|---|
committer | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:04:07 +0200 |
commit | d62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch) | |
tree | 3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /bgpd/bgp_debug.c | |
parent | *: add indent control files (diff) | |
download | frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip |
*: reindentreindent-master-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'bgpd/bgp_debug.c')
-rw-r--r-- | bgpd/bgp_debug.c | 3064 |
1 files changed, 1473 insertions, 1591 deletions
diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c index f9e67d96c..1e7567299 100644 --- a/bgpd/bgp_debug.c +++ b/bgpd/bgp_debug.c @@ -78,504 +78,465 @@ struct list *bgp_debug_bestpath_prefixes = NULL; struct list *bgp_debug_zebra_prefixes = NULL; /* messages for BGP-4 status */ -const struct message bgp_status_msg[] = -{ - { Idle, "Idle" }, - { Connect, "Connect" }, - { Active, "Active" }, - { OpenSent, "OpenSent" }, - { OpenConfirm, "OpenConfirm" }, - { Established, "Established" }, - { Clearing, "Clearing" }, - { Deleted, "Deleted" }, - { 0 } -}; +const struct message bgp_status_msg[] = {{Idle, "Idle"}, + {Connect, "Connect"}, + {Active, "Active"}, + {OpenSent, "OpenSent"}, + {OpenConfirm, "OpenConfirm"}, + {Established, "Established"}, + {Clearing, "Clearing"}, + {Deleted, "Deleted"}, + {0}}; /* BGP message type string. */ -const char *bgp_type_str[] = -{ - NULL, - "OPEN", - "UPDATE", - "NOTIFICATION", - "KEEPALIVE", - "ROUTE-REFRESH", - "CAPABILITY" -}; +const char *bgp_type_str[] = {NULL, "OPEN", "UPDATE", + "NOTIFICATION", "KEEPALIVE", "ROUTE-REFRESH", + "CAPABILITY"}; /* message for BGP-4 Notify */ -static const struct message bgp_notify_msg[] = -{ - { BGP_NOTIFY_HEADER_ERR, "Message Header Error"}, - { BGP_NOTIFY_OPEN_ERR, "OPEN Message Error"}, - { BGP_NOTIFY_UPDATE_ERR, "UPDATE Message Error"}, - { BGP_NOTIFY_HOLD_ERR, "Hold Timer Expired"}, - { BGP_NOTIFY_FSM_ERR, "Neighbor Events Error"}, - { BGP_NOTIFY_CEASE, "Cease"}, - { BGP_NOTIFY_CAPABILITY_ERR, "CAPABILITY Message Error"}, - { 0 } -}; - -static const struct message bgp_notify_head_msg[] = -{ - { BGP_NOTIFY_HEADER_NOT_SYNC, "/Connection Not Synchronized"}, - { BGP_NOTIFY_HEADER_BAD_MESLEN, "/Bad Message Length"}, - { BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"}, - { 0 } -}; - -static const struct message bgp_notify_open_msg[] = -{ - { BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, - { BGP_NOTIFY_OPEN_UNSUP_VERSION, "/Unsupported Version Number" }, - { BGP_NOTIFY_OPEN_BAD_PEER_AS, "/Bad Peer AS"}, - { BGP_NOTIFY_OPEN_BAD_BGP_IDENT, "/Bad BGP Identifier"}, - { BGP_NOTIFY_OPEN_UNSUP_PARAM, "/Unsupported Optional Parameter"}, - { BGP_NOTIFY_OPEN_AUTH_FAILURE, "/Authentication Failure"}, - { BGP_NOTIFY_OPEN_UNACEP_HOLDTIME, "/Unacceptable Hold Time"}, - { BGP_NOTIFY_OPEN_UNSUP_CAPBL, "/Unsupported Capability"}, - { 0 } -}; - -static const struct message bgp_notify_update_msg[] = -{ - { BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, - { BGP_NOTIFY_UPDATE_MAL_ATTR, "/Malformed Attribute List"}, - { BGP_NOTIFY_UPDATE_UNREC_ATTR, "/Unrecognized Well-known Attribute"}, - { BGP_NOTIFY_UPDATE_MISS_ATTR, "/Missing Well-known Attribute"}, - { BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR, "/Attribute Flags Error"}, - { BGP_NOTIFY_UPDATE_ATTR_LENG_ERR, "/Attribute Length Error"}, - { BGP_NOTIFY_UPDATE_INVAL_ORIGIN, "/Invalid ORIGIN Attribute"}, - { BGP_NOTIFY_UPDATE_AS_ROUTE_LOOP, "/AS Routing Loop"}, - { BGP_NOTIFY_UPDATE_INVAL_NEXT_HOP, "/Invalid NEXT_HOP Attribute"}, - { BGP_NOTIFY_UPDATE_OPT_ATTR_ERR, "/Optional Attribute Error"}, - { BGP_NOTIFY_UPDATE_INVAL_NETWORK, "/Invalid Network Field"}, - { BGP_NOTIFY_UPDATE_MAL_AS_PATH, "/Malformed AS_PATH"}, - { 0 } -}; - -static const struct message bgp_notify_cease_msg[] = -{ - { BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, - { BGP_NOTIFY_CEASE_MAX_PREFIX, "/Maximum Number of Prefixes Reached"}, - { BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN, "/Administratively Shutdown"}, - { BGP_NOTIFY_CEASE_PEER_UNCONFIG, "/Peer Unconfigured"}, - { BGP_NOTIFY_CEASE_ADMIN_RESET, "/Administratively Reset"}, - { BGP_NOTIFY_CEASE_CONNECT_REJECT, "/Connection Rejected"}, - { BGP_NOTIFY_CEASE_CONFIG_CHANGE, "/Other Configuration Change"}, - { BGP_NOTIFY_CEASE_COLLISION_RESOLUTION, "/Connection collision resolution"}, - { BGP_NOTIFY_CEASE_OUT_OF_RESOURCE, "/Out of Resource"}, - { 0 } -}; - -static const struct message bgp_notify_capability_msg[] = -{ - { BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, - { BGP_NOTIFY_CAPABILITY_INVALID_ACTION, "/Invalid Action Value" }, - { BGP_NOTIFY_CAPABILITY_INVALID_LENGTH, "/Invalid Capability Length"}, - { BGP_NOTIFY_CAPABILITY_MALFORMED_CODE, "/Malformed Capability Value"}, - { 0 } -}; +static const struct message bgp_notify_msg[] = { + {BGP_NOTIFY_HEADER_ERR, "Message Header Error"}, + {BGP_NOTIFY_OPEN_ERR, "OPEN Message Error"}, + {BGP_NOTIFY_UPDATE_ERR, "UPDATE Message Error"}, + {BGP_NOTIFY_HOLD_ERR, "Hold Timer Expired"}, + {BGP_NOTIFY_FSM_ERR, "Neighbor Events Error"}, + {BGP_NOTIFY_CEASE, "Cease"}, + {BGP_NOTIFY_CAPABILITY_ERR, "CAPABILITY Message Error"}, + {0}}; + +static const struct message bgp_notify_head_msg[] = { + {BGP_NOTIFY_HEADER_NOT_SYNC, "/Connection Not Synchronized"}, + {BGP_NOTIFY_HEADER_BAD_MESLEN, "/Bad Message Length"}, + {BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"}, + {0}}; + +static const struct message bgp_notify_open_msg[] = { + {BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, + {BGP_NOTIFY_OPEN_UNSUP_VERSION, "/Unsupported Version Number"}, + {BGP_NOTIFY_OPEN_BAD_PEER_AS, "/Bad Peer AS"}, + {BGP_NOTIFY_OPEN_BAD_BGP_IDENT, "/Bad BGP Identifier"}, + {BGP_NOTIFY_OPEN_UNSUP_PARAM, "/Unsupported Optional Parameter"}, + {BGP_NOTIFY_OPEN_AUTH_FAILURE, "/Authentication Failure"}, + {BGP_NOTIFY_OPEN_UNACEP_HOLDTIME, "/Unacceptable Hold Time"}, + {BGP_NOTIFY_OPEN_UNSUP_CAPBL, "/Unsupported Capability"}, + {0}}; + +static const struct message bgp_notify_update_msg[] = { + {BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, + {BGP_NOTIFY_UPDATE_MAL_ATTR, "/Malformed Attribute List"}, + {BGP_NOTIFY_UPDATE_UNREC_ATTR, "/Unrecognized Well-known Attribute"}, + {BGP_NOTIFY_UPDATE_MISS_ATTR, "/Missing Well-known Attribute"}, + {BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR, "/Attribute Flags Error"}, + {BGP_NOTIFY_UPDATE_ATTR_LENG_ERR, "/Attribute Length Error"}, + {BGP_NOTIFY_UPDATE_INVAL_ORIGIN, "/Invalid ORIGIN Attribute"}, + {BGP_NOTIFY_UPDATE_AS_ROUTE_LOOP, "/AS Routing Loop"}, + {BGP_NOTIFY_UPDATE_INVAL_NEXT_HOP, "/Invalid NEXT_HOP Attribute"}, + {BGP_NOTIFY_UPDATE_OPT_ATTR_ERR, "/Optional Attribute Error"}, + {BGP_NOTIFY_UPDATE_INVAL_NETWORK, "/Invalid Network Field"}, + {BGP_NOTIFY_UPDATE_MAL_AS_PATH, "/Malformed AS_PATH"}, + {0}}; + +static const struct message bgp_notify_cease_msg[] = { + {BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, + {BGP_NOTIFY_CEASE_MAX_PREFIX, "/Maximum Number of Prefixes Reached"}, + {BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN, "/Administratively Shutdown"}, + {BGP_NOTIFY_CEASE_PEER_UNCONFIG, "/Peer Unconfigured"}, + {BGP_NOTIFY_CEASE_ADMIN_RESET, "/Administratively Reset"}, + {BGP_NOTIFY_CEASE_CONNECT_REJECT, "/Connection Rejected"}, + {BGP_NOTIFY_CEASE_CONFIG_CHANGE, "/Other Configuration Change"}, + {BGP_NOTIFY_CEASE_COLLISION_RESOLUTION, + "/Connection collision resolution"}, + {BGP_NOTIFY_CEASE_OUT_OF_RESOURCE, "/Out of Resource"}, + {0}}; + +static const struct message bgp_notify_capability_msg[] = { + {BGP_NOTIFY_SUBCODE_UNSPECIFIC, "/Unspecific"}, + {BGP_NOTIFY_CAPABILITY_INVALID_ACTION, "/Invalid Action Value"}, + {BGP_NOTIFY_CAPABILITY_INVALID_LENGTH, "/Invalid Capability Length"}, + {BGP_NOTIFY_CAPABILITY_MALFORMED_CODE, "/Malformed Capability Value"}, + {0}}; /* Origin strings. */ -const char *bgp_origin_str[] = {"i","e","?"}; -const char *bgp_origin_long_str[] = {"IGP","EGP","incomplete"}; +const char *bgp_origin_str[] = {"i", "e", "?"}; +const char *bgp_origin_long_str[] = {"IGP", "EGP", "incomplete"}; /* Given a string return a pointer the corresponding peer structure */ -static struct peer * -bgp_find_peer (struct vty *vty, const char *peer_str) +static struct peer *bgp_find_peer(struct vty *vty, const char *peer_str) { - struct bgp *bgp = VTY_GET_CONTEXT(bgp); - int ret; - union sockunion su; - struct peer *peer; - - if (!bgp) { - return NULL; - } - ret = str2sockunion (peer_str, &su); - - /* 'swpX' string */ - if (ret < 0) - { - peer = peer_lookup_by_conf_if (bgp, peer_str); - - if (!peer) - peer = peer_lookup_by_hostname (bgp, peer_str); - - return peer; - } - else - return peer_lookup (bgp, &su); + struct bgp *bgp = VTY_GET_CONTEXT(bgp); + int ret; + union sockunion su; + struct peer *peer; + + if (!bgp) { + return NULL; + } + ret = str2sockunion(peer_str, &su); + + /* 'swpX' string */ + if (ret < 0) { + peer = peer_lookup_by_conf_if(bgp, peer_str); + + if (!peer) + peer = peer_lookup_by_hostname(bgp, peer_str); + + return peer; + } else + return peer_lookup(bgp, &su); } -static void -bgp_debug_list_free(struct list *list) +static void bgp_debug_list_free(struct list *list) { - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; - if (list) - for (ALL_LIST_ELEMENTS (list, node, nnode, filter)) - { - listnode_delete (list, filter); + if (list) + for (ALL_LIST_ELEMENTS(list, node, nnode, filter)) { + listnode_delete(list, filter); - if (filter->p) - prefix_free(filter->p); + if (filter->p) + prefix_free(filter->p); - if (filter->host) - XFREE (MTYPE_BGP_DEBUG_STR, filter->host); + if (filter->host) + XFREE(MTYPE_BGP_DEBUG_STR, filter->host); - XFREE (MTYPE_BGP_DEBUG_FILTER, filter); - } + XFREE(MTYPE_BGP_DEBUG_FILTER, filter); + } } /* Print the desc along with a list of peers/prefixes this debug is * enabled for */ -static void -bgp_debug_list_print (struct vty *vty, const char *desc, struct list *list) -{ - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; - char buf[INET6_ADDRSTRLEN]; - - vty_out (vty, "%s", desc); - - if (list && !list_isempty(list)) - { - vty_out (vty, " for"); - for (ALL_LIST_ELEMENTS (list, node, nnode, filter)) - { - if (filter->host) - vty_out (vty, " %s", filter->host); - - if (filter->p) - vty_out (vty, " %s/%d", - inet_ntop (filter->p->family, &filter->p->u.prefix, buf, INET6_ADDRSTRLEN), - filter->p->prefixlen); - } - } - - vty_out (vty, "\n"); +static void bgp_debug_list_print(struct vty *vty, const char *desc, + struct list *list) +{ + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; + char buf[INET6_ADDRSTRLEN]; + + vty_out(vty, "%s", desc); + + if (list && !list_isempty(list)) { + vty_out(vty, " for"); + for (ALL_LIST_ELEMENTS(list, node, nnode, filter)) { + if (filter->host) + vty_out(vty, " %s", filter->host); + + if (filter->p) + vty_out(vty, " %s/%d", + inet_ntop(filter->p->family, + &filter->p->u.prefix, buf, + INET6_ADDRSTRLEN), + filter->p->prefixlen); + } + } + + vty_out(vty, "\n"); } /* Print the command to enable the debug for each peer/prefix this debug is * enabled for */ -static int -bgp_debug_list_conf_print (struct vty *vty, const char *desc, struct list *list) -{ - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; - char buf[INET6_ADDRSTRLEN]; - int write = 0; - - if (list && !list_isempty(list)) - { - for (ALL_LIST_ELEMENTS (list, node, nnode, filter)) - { - if (filter->host) - { - vty_out (vty, "%s %s\n", desc, filter->host); - write++; - } - - - if (filter->p) - { - vty_out (vty, "%s %s/%d\n", desc, - inet_ntop (filter->p->family, &filter->p->u.prefix, buf, INET6_ADDRSTRLEN), - filter->p->prefixlen); - write++; - } - } - } - - if (!write) - { - vty_out (vty, "%s\n", desc); - write++; - } - - return write; +static int bgp_debug_list_conf_print(struct vty *vty, const char *desc, + struct list *list) +{ + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; + char buf[INET6_ADDRSTRLEN]; + int write = 0; + + if (list && !list_isempty(list)) { + for (ALL_LIST_ELEMENTS(list, node, nnode, filter)) { + if (filter->host) { + vty_out(vty, "%s %s\n", desc, filter->host); + write++; + } + + + if (filter->p) { + vty_out(vty, "%s %s/%d\n", desc, + inet_ntop(filter->p->family, + &filter->p->u.prefix, buf, + INET6_ADDRSTRLEN), + filter->p->prefixlen); + write++; + } + } + } + + if (!write) { + vty_out(vty, "%s\n", desc); + write++; + } + + return write; } -static void -bgp_debug_list_add_entry(struct list *list, const char *host, const struct prefix *p) +static void bgp_debug_list_add_entry(struct list *list, const char *host, + const struct prefix *p) { - struct bgp_debug_filter *filter; - - filter = XCALLOC (MTYPE_BGP_DEBUG_FILTER, sizeof (struct bgp_debug_filter)); - - if (host) - { - filter->host = XSTRDUP (MTYPE_BGP_DEBUG_STR, host); - filter->p = NULL; - } - else if (p) - { - filter->host = NULL; - filter->p = prefix_new(); - prefix_copy (filter->p, p); - } - - listnode_add(list, filter); + struct bgp_debug_filter *filter; + + filter = XCALLOC(MTYPE_BGP_DEBUG_FILTER, + sizeof(struct bgp_debug_filter)); + + if (host) { + filter->host = XSTRDUP(MTYPE_BGP_DEBUG_STR, host); + filter->p = NULL; + } else if (p) { + filter->host = NULL; + filter->p = prefix_new(); + prefix_copy(filter->p, p); + } + + listnode_add(list, filter); } -static int -bgp_debug_list_remove_entry(struct list *list, const char *host, struct prefix *p) -{ - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; - - for (ALL_LIST_ELEMENTS (list, node, nnode, filter)) - { - if (host && strcmp (filter->host, host) == 0) - { - listnode_delete (list, filter); - XFREE (MTYPE_BGP_DEBUG_STR, filter->host); - XFREE (MTYPE_BGP_DEBUG_FILTER, filter); - return 1; - } - else if (p && filter->p->prefixlen == p->prefixlen && prefix_match(filter->p, p)) - { - listnode_delete (list, filter); - prefix_free (filter->p); - XFREE (MTYPE_BGP_DEBUG_FILTER, filter); - return 1; - } - } - - return 0; +static int bgp_debug_list_remove_entry(struct list *list, const char *host, + struct prefix *p) +{ + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; + + for (ALL_LIST_ELEMENTS(list, node, nnode, filter)) { + if (host && strcmp(filter->host, host) == 0) { + listnode_delete(list, filter); + XFREE(MTYPE_BGP_DEBUG_STR, filter->host); + XFREE(MTYPE_BGP_DEBUG_FILTER, filter); + return 1; + } else if (p && filter->p->prefixlen == p->prefixlen + && prefix_match(filter->p, p)) { + listnode_delete(list, filter); + prefix_free(filter->p); + XFREE(MTYPE_BGP_DEBUG_FILTER, filter); + return 1; + } + } + + return 0; } -static int -bgp_debug_list_has_entry(struct list *list, const char *host, const struct prefix *p) -{ - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; - - for (ALL_LIST_ELEMENTS (list, node, nnode, filter)) - { - if (host) - { - if (strcmp (filter->host, host) == 0) - { - return 1; - } - } - else if (p) - { - if (filter->p->prefixlen == p->prefixlen && prefix_match(filter->p, p)) - { - return 1; - } - } - } - - return 0; +static int bgp_debug_list_has_entry(struct list *list, const char *host, + const struct prefix *p) +{ + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; + + for (ALL_LIST_ELEMENTS(list, node, nnode, filter)) { + if (host) { + if (strcmp(filter->host, host) == 0) { + return 1; + } + } else if (p) { + if (filter->p->prefixlen == p->prefixlen + && prefix_match(filter->p, p)) { + return 1; + } + } + } + + return 0; } -int -bgp_debug_peer_updout_enabled(char *host) +int bgp_debug_peer_updout_enabled(char *host) { - return (bgp_debug_list_has_entry(bgp_debug_update_out_peers, host, NULL)); + return (bgp_debug_list_has_entry(bgp_debug_update_out_peers, host, + NULL)); } /* Dump attribute. */ -int -bgp_dump_attr (struct attr *attr, char *buf, size_t size) +int bgp_dump_attr(struct attr *attr, char *buf, size_t size) { - char addrbuf[BUFSIZ]; - - if (! attr) - return 0; - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP))) - snprintf (buf, size, "nexthop %s", inet_ntoa (attr->nexthop)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_ORIGIN))) - snprintf (buf + strlen (buf), size - strlen (buf), ", origin %s", - bgp_origin_str[attr->origin]); - - /* Add MP case. */ - if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL - || attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) - snprintf (buf + strlen (buf), size - strlen (buf), ", mp_nexthop %s", - inet_ntop (AF_INET6, &attr->mp_nexthop_global, - addrbuf, BUFSIZ)); - - if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) - snprintf (buf + strlen (buf), size - strlen (buf), "(%s)", - inet_ntop (AF_INET6, &attr->mp_nexthop_local, - addrbuf, BUFSIZ)); - - if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4) - snprintf (buf, size, "nexthop %s", inet_ntoa (attr->nexthop)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_LOCAL_PREF))) - snprintf (buf + strlen (buf), size - strlen (buf), ", localpref %u", - attr->local_pref); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC))) - snprintf (buf + strlen (buf), size - strlen (buf), ", metric %u", - attr->med); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_COMMUNITIES))) - snprintf (buf + strlen (buf), size - strlen (buf), ", community %s", - community_str (attr->community)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_EXT_COMMUNITIES))) - snprintf (buf + strlen (buf), size - strlen (buf), ", extcommunity %s", - ecommunity_str (attr->ecommunity)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE))) - snprintf (buf + strlen (buf), size - strlen (buf), ", atomic-aggregate"); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_AGGREGATOR))) - snprintf (buf + strlen (buf), size - strlen (buf), ", aggregated by %u %s", - attr->aggregator_as, - inet_ntoa (attr->aggregator_addr)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_ORIGINATOR_ID))) - snprintf (buf + strlen (buf), size - strlen (buf), ", originator %s", - inet_ntoa (attr->originator_id)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_CLUSTER_LIST))) - { - int i; - - snprintf (buf + strlen (buf), size - strlen (buf), ", clusterlist"); - for (i = 0; i < attr->cluster->length / 4; i++) - snprintf (buf + strlen (buf), size - strlen (buf), " %s", - inet_ntoa (attr->cluster->list[i])); - } - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_AS_PATH))) - snprintf (buf + strlen (buf), size - strlen (buf), ", path %s", - aspath_print (attr->aspath)); - - if (CHECK_FLAG (attr->flag, ATTR_FLAG_BIT (BGP_ATTR_PREFIX_SID))) - { - if (attr->label_index != BGP_INVALID_LABEL_INDEX) - snprintf (buf + strlen (buf), size - strlen (buf), ", label-index %u", - attr->label_index); - } - - if (strlen (buf) > 1) - return 1; - else - return 0; -} + char addrbuf[BUFSIZ]; -const char * -bgp_notify_code_str (char code) -{ - return lookup_msg (bgp_notify_msg, code, "Unrecognized Error Code"); + if (!attr) + return 0; + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_NEXT_HOP))) + snprintf(buf, size, "nexthop %s", inet_ntoa(attr->nexthop)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_ORIGIN))) + snprintf(buf + strlen(buf), size - strlen(buf), ", origin %s", + bgp_origin_str[attr->origin]); + + /* Add MP case. */ + if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL + || attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) + snprintf(buf + strlen(buf), size - strlen(buf), + ", mp_nexthop %s", + inet_ntop(AF_INET6, &attr->mp_nexthop_global, addrbuf, + BUFSIZ)); + + if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) + snprintf(buf + strlen(buf), size - strlen(buf), "(%s)", + inet_ntop(AF_INET6, &attr->mp_nexthop_local, addrbuf, + BUFSIZ)); + + if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4) + snprintf(buf, size, "nexthop %s", inet_ntoa(attr->nexthop)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", localpref %u", attr->local_pref); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC))) + snprintf(buf + strlen(buf), size - strlen(buf), ", metric %u", + attr->med); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", community %s", community_str(attr->community)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_EXT_COMMUNITIES))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", extcommunity %s", ecommunity_str(attr->ecommunity)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", atomic-aggregate"); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_AGGREGATOR))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", aggregated by %u %s", attr->aggregator_as, + inet_ntoa(attr->aggregator_addr)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_ORIGINATOR_ID))) + snprintf(buf + strlen(buf), size - strlen(buf), + ", originator %s", inet_ntoa(attr->originator_id)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_CLUSTER_LIST))) { + int i; + + snprintf(buf + strlen(buf), size - strlen(buf), + ", clusterlist"); + for (i = 0; i < attr->cluster->length / 4; i++) + snprintf(buf + strlen(buf), size - strlen(buf), " %s", + inet_ntoa(attr->cluster->list[i])); + } + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_AS_PATH))) + snprintf(buf + strlen(buf), size - strlen(buf), ", path %s", + aspath_print(attr->aspath)); + + if (CHECK_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_PREFIX_SID))) { + if (attr->label_index != BGP_INVALID_LABEL_INDEX) + snprintf(buf + strlen(buf), size - strlen(buf), + ", label-index %u", attr->label_index); + } + + if (strlen(buf) > 1) + return 1; + else + return 0; } -const char * -bgp_notify_subcode_str (char code, char subcode) +const char *bgp_notify_code_str(char code) { + return lookup_msg(bgp_notify_msg, code, "Unrecognized Error Code"); +} - switch (code) - { - case BGP_NOTIFY_HEADER_ERR: - return lookup_msg (bgp_notify_head_msg, subcode, - "Unrecognized Error Subcode"); - case BGP_NOTIFY_OPEN_ERR: - return lookup_msg (bgp_notify_open_msg, subcode, - "Unrecognized Error Subcode"); - case BGP_NOTIFY_UPDATE_ERR: - return lookup_msg (bgp_notify_update_msg, subcode, - "Unrecognized Error Subcode"); - case BGP_NOTIFY_HOLD_ERR: - break; - case BGP_NOTIFY_FSM_ERR: - break; - case BGP_NOTIFY_CEASE: - return lookup_msg (bgp_notify_cease_msg, subcode, - "Unrecognized Error Subcode"); - case BGP_NOTIFY_CAPABILITY_ERR: - return lookup_msg (bgp_notify_capability_msg, subcode, - "Unrecognized Error Subcode"); - } - return ""; +const char *bgp_notify_subcode_str(char code, char subcode) +{ + + switch (code) { + case BGP_NOTIFY_HEADER_ERR: + return lookup_msg(bgp_notify_head_msg, subcode, + "Unrecognized Error Subcode"); + case BGP_NOTIFY_OPEN_ERR: + return lookup_msg(bgp_notify_open_msg, subcode, + "Unrecognized Error Subcode"); + case BGP_NOTIFY_UPDATE_ERR: + return lookup_msg(bgp_notify_update_msg, subcode, + "Unrecognized Error Subcode"); + case BGP_NOTIFY_HOLD_ERR: + break; + case BGP_NOTIFY_FSM_ERR: + break; + case BGP_NOTIFY_CEASE: + return lookup_msg(bgp_notify_cease_msg, subcode, + "Unrecognized Error Subcode"); + case BGP_NOTIFY_CAPABILITY_ERR: + return lookup_msg(bgp_notify_capability_msg, subcode, + "Unrecognized Error Subcode"); + } + return ""; } /* extract notify admin reason if correctly present */ -const char * -bgp_notify_admin_message(char *buf, size_t bufsz, u_char *data, size_t datalen) +const char *bgp_notify_admin_message(char *buf, size_t bufsz, u_char *data, + size_t datalen) { - if (!data || datalen < 1) - return NULL; + if (!data || datalen < 1) + return NULL; - u_char len = data[0]; - if (len > 128 - || len > datalen - 1) - return NULL; + u_char len = data[0]; + if (len > 128 || len > datalen - 1) + return NULL; - return zlog_sanitize(buf, bufsz, data + 1, len); + return zlog_sanitize(buf, bufsz, data + 1, len); } /* dump notify packet */ -void -bgp_notify_print(struct peer *peer, struct bgp_notify *bgp_notify, - const char *direct) -{ - const char *subcode_str; - const char *code_str; - const char *msg_str = NULL; - char msg_buf[1024]; - - if (BGP_DEBUG (neighbor_events, NEIGHBOR_EVENTS) || bgp_flag_check (peer->bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES)) - { - code_str = bgp_notify_code_str(bgp_notify->code); - subcode_str = bgp_notify_subcode_str(bgp_notify->code, bgp_notify->subcode); - - if (bgp_notify->code == BGP_NOTIFY_CEASE - && (bgp_notify->subcode == BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN - || bgp_notify->subcode == BGP_NOTIFY_CEASE_ADMIN_RESET)) - { - msg_str = bgp_notify_admin_message(msg_buf, sizeof(msg_buf), - bgp_notify->raw_data, bgp_notify->length); - } - - if (msg_str) - { - zlog_info ("%%NOTIFICATION: %s neighbor %s %d/%d (%s%s) \"%s\"", - strcmp (direct, "received") == 0 ? "received from" : "sent to", - peer->host, bgp_notify->code, bgp_notify->subcode, - code_str, subcode_str, msg_str); - } - else - { - msg_str = bgp_notify->data ? bgp_notify->data : ""; - zlog_info ("%%NOTIFICATION: %s neighbor %s %d/%d (%s%s) %d bytes %s", - strcmp (direct, "received") == 0 ? "received from" : "sent to", - peer->host, bgp_notify->code, bgp_notify->subcode, - code_str, subcode_str, bgp_notify->length, msg_str); - } - } +void bgp_notify_print(struct peer *peer, struct bgp_notify *bgp_notify, + const char *direct) +{ + const char *subcode_str; + const char *code_str; + const char *msg_str = NULL; + char msg_buf[1024]; + + if (BGP_DEBUG(neighbor_events, NEIGHBOR_EVENTS) + || bgp_flag_check(peer->bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES)) { + code_str = bgp_notify_code_str(bgp_notify->code); + subcode_str = bgp_notify_subcode_str(bgp_notify->code, + bgp_notify->subcode); + + if (bgp_notify->code == BGP_NOTIFY_CEASE + && (bgp_notify->subcode == BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN + || bgp_notify->subcode + == BGP_NOTIFY_CEASE_ADMIN_RESET)) { + msg_str = bgp_notify_admin_message( + msg_buf, sizeof(msg_buf), bgp_notify->raw_data, + bgp_notify->length); + } + + if (msg_str) { + zlog_info( + "%%NOTIFICATION: %s neighbor %s %d/%d (%s%s) \"%s\"", + strcmp(direct, "received") == 0 + ? "received from" + : "sent to", + peer->host, bgp_notify->code, + bgp_notify->subcode, code_str, subcode_str, + msg_str); + } else { + msg_str = bgp_notify->data ? bgp_notify->data : ""; + zlog_info( + "%%NOTIFICATION: %s neighbor %s %d/%d (%s%s) %d bytes %s", + strcmp(direct, "received") == 0 + ? "received from" + : "sent to", + peer->host, bgp_notify->code, + bgp_notify->subcode, code_str, subcode_str, + bgp_notify->length, msg_str); + } + } } -static void -bgp_debug_clear_updgrp_update_dbg(struct bgp *bgp) +static void bgp_debug_clear_updgrp_update_dbg(struct bgp *bgp) { - if (!bgp) - bgp = bgp_get_default(); - update_group_walk (bgp, update_group_clear_update_dbg, NULL); + if (!bgp) + bgp = bgp_get_default(); + update_group_walk(bgp, update_group_clear_update_dbg, NULL); } /* Debug option setting interface. */ unsigned long bgp_debug_option = 0; -int -debug (unsigned int option) +int debug(unsigned int option) { - return bgp_debug_option & option; + return bgp_debug_option & option; } DEFUN (debug_bgp_as4, @@ -585,14 +546,13 @@ DEFUN (debug_bgp_as4, BGP_STR "BGP AS4 actions\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (as4, AS4); - else - { - TERM_DEBUG_ON (as4, AS4); - vty_out (vty, "BGP as4 debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(as4, AS4); + else { + TERM_DEBUG_ON(as4, AS4); + vty_out(vty, "BGP as4 debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_as4, @@ -603,14 +563,13 @@ DEFUN (no_debug_bgp_as4, BGP_STR "BGP AS4 actions\n") { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (as4, AS4); - else - { - TERM_DEBUG_OFF (as4, AS4); - vty_out (vty, "BGP as4 debugging is off\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_OFF(as4, AS4); + else { + TERM_DEBUG_OFF(as4, AS4); + vty_out(vty, "BGP as4 debugging is off\n"); + } + return CMD_SUCCESS; } DEFUN (debug_bgp_as4_segment, @@ -621,14 +580,13 @@ DEFUN (debug_bgp_as4_segment, "BGP AS4 actions\n" "BGP AS4 aspath segment handling\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (as4, AS4_SEGMENT); - else - { - TERM_DEBUG_ON (as4, AS4_SEGMENT); - vty_out (vty, "BGP as4 segment debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(as4, AS4_SEGMENT); + else { + TERM_DEBUG_ON(as4, AS4_SEGMENT); + vty_out(vty, "BGP as4 segment debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_as4_segment, @@ -640,14 +598,13 @@ DEFUN (no_debug_bgp_as4_segment, "BGP AS4 actions\n" "BGP AS4 aspath segment handling\n") { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (as4, AS4_SEGMENT); - else - { - TERM_DEBUG_OFF (as4, AS4_SEGMENT); - vty_out (vty, "BGP as4 segment debugging is off\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_OFF(as4, AS4_SEGMENT); + else { + TERM_DEBUG_OFF(as4, AS4_SEGMENT); + vty_out(vty, "BGP as4 segment debugging is off\n"); + } + return CMD_SUCCESS; } /* debug bgp neighbor_events */ @@ -658,16 +615,15 @@ DEFUN (debug_bgp_neighbor_events, BGP_STR "BGP Neighbor Events\n") { - bgp_debug_list_free(bgp_debug_neighbor_events_peers); - - if (vty->node == CONFIG_NODE) - DEBUG_ON (neighbor_events, NEIGHBOR_EVENTS); - else - { - TERM_DEBUG_ON (neighbor_events, NEIGHBOR_EVENTS); - vty_out (vty, "BGP neighbor-events debugging is on\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_neighbor_events_peers); + + if (vty->node == CONFIG_NODE) + DEBUG_ON(neighbor_events, NEIGHBOR_EVENTS); + else { + TERM_DEBUG_ON(neighbor_events, NEIGHBOR_EVENTS); + vty_out(vty, "BGP neighbor-events debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (debug_bgp_neighbor_events_peer, @@ -680,29 +636,30 @@ DEFUN (debug_bgp_neighbor_events_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_peer = 3; - const char *host = argv[idx_peer]->arg; - - if (!bgp_debug_neighbor_events_peers) - bgp_debug_neighbor_events_peers = list_new (); - - if (bgp_debug_list_has_entry(bgp_debug_neighbor_events_peers, host, NULL)) - { - vty_out (vty, "BGP neighbor-events debugging is already enabled for %s\n", - host); - return CMD_SUCCESS; - } - - bgp_debug_list_add_entry(bgp_debug_neighbor_events_peers, host, NULL); - - if (vty->node == CONFIG_NODE) - DEBUG_ON (neighbor_events, NEIGHBOR_EVENTS); - else - { - TERM_DEBUG_ON (neighbor_events, NEIGHBOR_EVENTS); - vty_out (vty, "BGP neighbor-events debugging is on for %s\n", host); - } - return CMD_SUCCESS; + int idx_peer = 3; + const char *host = argv[idx_peer]->arg; + + if (!bgp_debug_neighbor_events_peers) + bgp_debug_neighbor_events_peers = list_new(); + + if (bgp_debug_list_has_entry(bgp_debug_neighbor_events_peers, host, + NULL)) { + vty_out(vty, + "BGP neighbor-events debugging is already enabled for %s\n", + host); + return CMD_SUCCESS; + } + + bgp_debug_list_add_entry(bgp_debug_neighbor_events_peers, host, NULL); + + if (vty->node == CONFIG_NODE) + DEBUG_ON(neighbor_events, NEIGHBOR_EVENTS); + else { + TERM_DEBUG_ON(neighbor_events, NEIGHBOR_EVENTS); + vty_out(vty, "BGP neighbor-events debugging is on for %s\n", + host); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_neighbor_events, @@ -713,16 +670,15 @@ DEFUN (no_debug_bgp_neighbor_events, BGP_STR "Neighbor Events\n") { - bgp_debug_list_free(bgp_debug_neighbor_events_peers); - - if (vty->node == CONFIG_NODE) - DEBUG_OFF (neighbor_events, NEIGHBOR_EVENTS); - else - { - TERM_DEBUG_OFF (neighbor_events, NEIGHBOR_EVENTS); - vty_out (vty, "BGP neighbor-events debugging is off\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_neighbor_events_peers); + + if (vty->node == CONFIG_NODE) + DEBUG_OFF(neighbor_events, NEIGHBOR_EVENTS); + else { + TERM_DEBUG_OFF(neighbor_events, NEIGHBOR_EVENTS); + vty_out(vty, "BGP neighbor-events debugging is off\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_neighbor_events_peer, @@ -736,30 +692,33 @@ DEFUN (no_debug_bgp_neighbor_events_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_peer = 4; - int found_peer = 0; - const char *host = argv[idx_peer]->arg; - - if (bgp_debug_neighbor_events_peers && !list_isempty(bgp_debug_neighbor_events_peers)) - { - found_peer = bgp_debug_list_remove_entry(bgp_debug_neighbor_events_peers, host, NULL); - - if (list_isempty(bgp_debug_neighbor_events_peers)) - { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (neighbor_events, NEIGHBOR_EVENTS); - else - TERM_DEBUG_OFF (neighbor_events, NEIGHBOR_EVENTS); - } - } - - if (found_peer) - vty_out (vty, "BGP neighbor-events debugging is off for %s\n", host); - else - vty_out (vty, "BGP neighbor-events debugging was not enabled for %s\n", - host); - - return CMD_SUCCESS; + int idx_peer = 4; + int found_peer = 0; + const char *host = argv[idx_peer]->arg; + + if (bgp_debug_neighbor_events_peers + && !list_isempty(bgp_debug_neighbor_events_peers)) { + found_peer = bgp_debug_list_remove_entry( + bgp_debug_neighbor_events_peers, host, NULL); + + if (list_isempty(bgp_debug_neighbor_events_peers)) { + if (vty->node == CONFIG_NODE) + DEBUG_OFF(neighbor_events, NEIGHBOR_EVENTS); + else + TERM_DEBUG_OFF(neighbor_events, + NEIGHBOR_EVENTS); + } + } + + if (found_peer) + vty_out(vty, "BGP neighbor-events debugging is off for %s\n", + host); + else + vty_out(vty, + "BGP neighbor-events debugging was not enabled for %s\n", + host); + + return CMD_SUCCESS; } /* debug bgp nht */ @@ -770,14 +729,13 @@ DEFUN (debug_bgp_nht, BGP_STR "BGP nexthop tracking events\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (nht, NHT); - else - { - TERM_DEBUG_ON (nht, NHT); - vty_out (vty, "BGP nexthop tracking debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(nht, NHT); + else { + TERM_DEBUG_ON(nht, NHT); + vty_out(vty, "BGP nexthop tracking debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_nht, @@ -788,14 +746,13 @@ DEFUN (no_debug_bgp_nht, BGP_STR "BGP nexthop tracking events\n") { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (nht, NHT); - else - { - TERM_DEBUG_OFF (nht, NHT); - vty_out (vty, "BGP nexthop tracking debugging is off\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_OFF(nht, NHT); + else { + TERM_DEBUG_OFF(nht, NHT); + vty_out(vty, "BGP nexthop tracking debugging is off\n"); + } + return CMD_SUCCESS; } /* debug bgp keepalives */ @@ -806,16 +763,15 @@ DEFUN (debug_bgp_keepalive, BGP_STR "BGP keepalives\n") { - bgp_debug_list_free(bgp_debug_keepalive_peers); - - if (vty->node == CONFIG_NODE) - DEBUG_ON (keepalive, KEEPALIVE); - else - { - TERM_DEBUG_ON (keepalive, KEEPALIVE); - vty_out (vty, "BGP keepalives debugging is on\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_keepalive_peers); + + if (vty->node == CONFIG_NODE) + DEBUG_ON(keepalive, KEEPALIVE); + else { + TERM_DEBUG_ON(keepalive, KEEPALIVE); + vty_out(vty, "BGP keepalives debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (debug_bgp_keepalive_peer, @@ -828,29 +784,28 @@ DEFUN (debug_bgp_keepalive_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_peer = 3; - const char *host = argv[idx_peer]->arg; - - if (!bgp_debug_keepalive_peers) - bgp_debug_keepalive_peers = list_new (); - - if (bgp_debug_list_has_entry(bgp_debug_keepalive_peers, host, NULL)) - { - vty_out (vty, "BGP keepalive debugging is already enabled for %s\n", - host); - return CMD_SUCCESS; - } - - bgp_debug_list_add_entry(bgp_debug_keepalive_peers, host, NULL); - - if (vty->node == CONFIG_NODE) - DEBUG_ON (keepalive, KEEPALIVE); - else - { - TERM_DEBUG_ON (keepalive, KEEPALIVE); - vty_out (vty, "BGP keepalives debugging is on for %s\n", host); - } - return CMD_SUCCESS; + int idx_peer = 3; + const char *host = argv[idx_peer]->arg; + + if (!bgp_debug_keepalive_peers) + bgp_debug_keepalive_peers = list_new(); + + if (bgp_debug_list_has_entry(bgp_debug_keepalive_peers, host, NULL)) { + vty_out(vty, + "BGP keepalive debugging is already enabled for %s\n", + host); + return CMD_SUCCESS; + } + + bgp_debug_list_add_entry(bgp_debug_keepalive_peers, host, NULL); + + if (vty->node == CONFIG_NODE) + DEBUG_ON(keepalive, KEEPALIVE); + else { + TERM_DEBUG_ON(keepalive, KEEPALIVE); + vty_out(vty, "BGP keepalives debugging is on for %s\n", host); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_keepalive, @@ -861,16 +816,15 @@ DEFUN (no_debug_bgp_keepalive, BGP_STR "BGP keepalives\n") { - bgp_debug_list_free(bgp_debug_keepalive_peers); - - if (vty->node == CONFIG_NODE) - DEBUG_OFF (keepalive, KEEPALIVE); - else - { - TERM_DEBUG_OFF (keepalive, KEEPALIVE); - vty_out (vty, "BGP keepalives debugging is off\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_keepalive_peers); + + if (vty->node == CONFIG_NODE) + DEBUG_OFF(keepalive, KEEPALIVE); + else { + TERM_DEBUG_OFF(keepalive, KEEPALIVE); + vty_out(vty, "BGP keepalives debugging is off\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_keepalive_peer, @@ -884,29 +838,31 @@ DEFUN (no_debug_bgp_keepalive_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_peer = 4; - int found_peer = 0; - const char *host = argv[idx_peer]->arg; - - if (bgp_debug_keepalive_peers && !list_isempty(bgp_debug_keepalive_peers)) - { - found_peer = bgp_debug_list_remove_entry(bgp_debug_keepalive_peers, host, NULL); - - if (list_isempty(bgp_debug_keepalive_peers)) - { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (keepalive, KEEPALIVE); - else - TERM_DEBUG_OFF (keepalive, KEEPALIVE); - } - } - - if (found_peer) - vty_out (vty, "BGP keepalives debugging is off for %s\n", host); - else - vty_out (vty, "BGP keepalives debugging was not enabled for %s\n", host); - - return CMD_SUCCESS; + int idx_peer = 4; + int found_peer = 0; + const char *host = argv[idx_peer]->arg; + + if (bgp_debug_keepalive_peers + && !list_isempty(bgp_debug_keepalive_peers)) { + found_peer = bgp_debug_list_remove_entry( + bgp_debug_keepalive_peers, host, NULL); + + if (list_isempty(bgp_debug_keepalive_peers)) { + if (vty->node == CONFIG_NODE) + DEBUG_OFF(keepalive, KEEPALIVE); + else + TERM_DEBUG_OFF(keepalive, KEEPALIVE); + } + } + + if (found_peer) + vty_out(vty, "BGP keepalives debugging is off for %s\n", host); + else + vty_out(vty, + "BGP keepalives debugging was not enabled for %s\n", + host); + + return CMD_SUCCESS; } #ifndef VTYSH_EXTRACT_PL @@ -922,30 +878,29 @@ DEFPY (debug_bgp_bestpath_prefix, "BGP bestpath\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - if (!bgp_debug_bestpath_prefixes) - bgp_debug_bestpath_prefixes = list_new (); - - if (bgp_debug_list_has_entry(bgp_debug_bestpath_prefixes, NULL, bestpath)) - { - vty_out (vty, "BGP bestpath debugging is already enabled for %s\n", bestpath_str); - return CMD_SUCCESS; - } - - bgp_debug_list_add_entry(bgp_debug_bestpath_prefixes, NULL, bestpath); - - if (vty->node == CONFIG_NODE) - { - DEBUG_ON (bestpath, BESTPATH); - } - else - { - TERM_DEBUG_ON (bestpath, BESTPATH); - vty_out (vty, "BGP bestpath debugging is on for %s\n", bestpath_str); - } - - return CMD_SUCCESS; + if (!bgp_debug_bestpath_prefixes) + bgp_debug_bestpath_prefixes = list_new(); + + if (bgp_debug_list_has_entry(bgp_debug_bestpath_prefixes, NULL, + bestpath)) { + vty_out(vty, + "BGP bestpath debugging is already enabled for %s\n", + bestpath_str); + return CMD_SUCCESS; + } + + bgp_debug_list_add_entry(bgp_debug_bestpath_prefixes, NULL, bestpath); + + if (vty->node == CONFIG_NODE) { + DEBUG_ON(bestpath, BESTPATH); + } else { + TERM_DEBUG_ON(bestpath, BESTPATH); + vty_out(vty, "BGP bestpath debugging is on for %s\n", + bestpath_str); + } + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_bestpath_prefix, @@ -957,48 +912,44 @@ DEFUN (no_debug_bgp_bestpath_prefix, "BGP bestpath\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - int idx_ipv4_ipv6_prefixlen = 4; - struct prefix *argv_p; - int found_prefix = 0; - int ret; - - argv_p = prefix_new(); - ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); - if (!ret) - { - prefix_free(argv_p); - vty_out (vty, "%% Malformed Prefix\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - if (bgp_debug_bestpath_prefixes && !list_isempty(bgp_debug_bestpath_prefixes)) - { - found_prefix = bgp_debug_list_remove_entry(bgp_debug_bestpath_prefixes, NULL, argv_p); - - if (list_isempty(bgp_debug_bestpath_prefixes)) - { - if (vty->node == CONFIG_NODE) - { - DEBUG_OFF (bestpath, BESTPATH); - } - else - { - TERM_DEBUG_OFF (bestpath, BESTPATH); - vty_out (vty, "BGP bestpath debugging (per prefix) is off\n"); - } - } - } - - if (found_prefix) - vty_out (vty, "BGP bestpath debugging is off for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - else - vty_out (vty, "BGP bestpath debugging was not enabled for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - - return CMD_SUCCESS; + int idx_ipv4_ipv6_prefixlen = 4; + struct prefix *argv_p; + int found_prefix = 0; + int ret; + + argv_p = prefix_new(); + ret = str2prefix(argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); + if (!ret) { + prefix_free(argv_p); + vty_out(vty, "%% Malformed Prefix\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + if (bgp_debug_bestpath_prefixes + && !list_isempty(bgp_debug_bestpath_prefixes)) { + found_prefix = bgp_debug_list_remove_entry( + bgp_debug_bestpath_prefixes, NULL, argv_p); + + if (list_isempty(bgp_debug_bestpath_prefixes)) { + if (vty->node == CONFIG_NODE) { + DEBUG_OFF(bestpath, BESTPATH); + } else { + TERM_DEBUG_OFF(bestpath, BESTPATH); + vty_out(vty, + "BGP bestpath debugging (per prefix) is off\n"); + } + } + } + + if (found_prefix) + vty_out(vty, "BGP bestpath debugging is off for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + else + vty_out(vty, "BGP bestpath debugging was not enabled for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_bestpath, @@ -1009,16 +960,15 @@ DEFUN (no_debug_bgp_bestpath, BGP_STR "BGP bestpath\n") { - bgp_debug_list_free(bgp_debug_bestpath_prefixes); - - if (vty->node == CONFIG_NODE) - DEBUG_OFF (bestpath, BESTPATH); - else - { - TERM_DEBUG_OFF (bestpath, BESTPATH); - vty_out (vty, "BGP bestpath debugging is off\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_bestpath_prefixes); + + if (vty->node == CONFIG_NODE) + DEBUG_OFF(bestpath, BESTPATH); + else { + TERM_DEBUG_OFF(bestpath, BESTPATH); + vty_out(vty, "BGP bestpath debugging is off\n"); + } + return CMD_SUCCESS; } /* debug bgp updates */ @@ -1029,22 +979,19 @@ DEFUN (debug_bgp_update, BGP_STR "BGP updates\n") { - bgp_debug_list_free(bgp_debug_update_in_peers); - bgp_debug_list_free(bgp_debug_update_out_peers); - bgp_debug_list_free(bgp_debug_update_prefixes); - - if (vty->node == CONFIG_NODE) - { - DEBUG_ON (update, UPDATE_IN); - DEBUG_ON (update, UPDATE_OUT); - } - else - { - TERM_DEBUG_ON (update, UPDATE_IN); - TERM_DEBUG_ON (update, UPDATE_OUT); - vty_out (vty, "BGP updates debugging is on\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_update_in_peers); + bgp_debug_list_free(bgp_debug_update_out_peers); + bgp_debug_list_free(bgp_debug_update_prefixes); + + if (vty->node == CONFIG_NODE) { + DEBUG_ON(update, UPDATE_IN); + DEBUG_ON(update, UPDATE_OUT); + } else { + TERM_DEBUG_ON(update, UPDATE_IN); + TERM_DEBUG_ON(update, UPDATE_OUT); + vty_out(vty, "BGP updates debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (debug_bgp_update_direct, @@ -1056,34 +1003,29 @@ DEFUN (debug_bgp_update_direct, "Inbound updates\n" "Outbound updates\n") { - int idx_in_out = 3; - - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - bgp_debug_list_free(bgp_debug_update_in_peers); - else - bgp_debug_list_free(bgp_debug_update_out_peers); - - if (vty->node == CONFIG_NODE) - { - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - DEBUG_ON (update, UPDATE_IN); - else - DEBUG_ON (update, UPDATE_OUT); - } - else - { - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - { - TERM_DEBUG_ON (update, UPDATE_IN); - vty_out (vty, "BGP updates debugging is on (inbound)\n"); - } - else - { - TERM_DEBUG_ON (update, UPDATE_OUT); - vty_out (vty, "BGP updates debugging is on (outbound)\n"); - } - } - return CMD_SUCCESS; + int idx_in_out = 3; + + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) + bgp_debug_list_free(bgp_debug_update_in_peers); + else + bgp_debug_list_free(bgp_debug_update_out_peers); + + if (vty->node == CONFIG_NODE) { + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) + DEBUG_ON(update, UPDATE_IN); + else + DEBUG_ON(update, UPDATE_OUT); + } else { + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) { + TERM_DEBUG_ON(update, UPDATE_IN); + vty_out(vty, "BGP updates debugging is on (inbound)\n"); + } else { + TERM_DEBUG_ON(update, UPDATE_OUT); + vty_out(vty, + "BGP updates debugging is on (outbound)\n"); + } + } + return CMD_SUCCESS; } DEFUN (debug_bgp_update_direct_peer, @@ -1098,92 +1040,87 @@ DEFUN (debug_bgp_update_direct_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_in_out = 3; - int idx_peer = 4; - const char *host = argv[idx_peer]->arg; - int inbound; - - if (!bgp_debug_update_in_peers) - bgp_debug_update_in_peers = list_new (); - - if (!bgp_debug_update_out_peers) - bgp_debug_update_out_peers = list_new (); - - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - inbound = 1; - else - inbound = 0; - - if (inbound) - { - if (bgp_debug_list_has_entry(bgp_debug_update_in_peers, host, NULL)) - { - vty_out (vty, "BGP inbound update debugging is already enabled for %s\n", - host); - return CMD_SUCCESS; - } - } - - else - { - if (bgp_debug_list_has_entry(bgp_debug_update_out_peers, host, NULL)) - { - vty_out (vty, "BGP outbound update debugging is already enabled for %s\n", - host); - return CMD_SUCCESS; - } - } - - if (inbound) - bgp_debug_list_add_entry(bgp_debug_update_in_peers, host, NULL); - else - { - struct peer *peer; - struct peer_af *paf; - int afidx; - - bgp_debug_list_add_entry(bgp_debug_update_out_peers, host, NULL); - peer = bgp_find_peer (vty, host); - - if (peer) - { - for (afidx = BGP_AF_START; afidx < BGP_AF_MAX; afidx++) - { - paf = peer->peer_af_array[afidx]; - if (paf != NULL) - { - if (PAF_SUBGRP (paf)) - { - UPDGRP_PEER_DBG_EN(PAF_SUBGRP(paf)->update_group); - } - } - } - } - } - - if (vty->node == CONFIG_NODE) - { - if (inbound) - DEBUG_ON (update, UPDATE_IN); - else - DEBUG_ON (update, UPDATE_OUT); - } - else - { - if (inbound) - { - TERM_DEBUG_ON (update, UPDATE_IN); - vty_out (vty, "BGP updates debugging is on (inbound) for %s\n", - argv[idx_peer]->arg); - } - else - { - TERM_DEBUG_ON (update, UPDATE_OUT); - vty_out (vty, "BGP updates debugging is on (outbound) for %s\n", - argv[idx_peer]->arg); - } - } - return CMD_SUCCESS; + int idx_in_out = 3; + int idx_peer = 4; + const char *host = argv[idx_peer]->arg; + int inbound; + + if (!bgp_debug_update_in_peers) + bgp_debug_update_in_peers = list_new(); + + if (!bgp_debug_update_out_peers) + bgp_debug_update_out_peers = list_new(); + + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) + inbound = 1; + else + inbound = 0; + + if (inbound) { + if (bgp_debug_list_has_entry(bgp_debug_update_in_peers, host, + NULL)) { + vty_out(vty, + "BGP inbound update debugging is already enabled for %s\n", + host); + return CMD_SUCCESS; + } + } + + else { + if (bgp_debug_list_has_entry(bgp_debug_update_out_peers, host, + NULL)) { + vty_out(vty, + "BGP outbound update debugging is already enabled for %s\n", + host); + return CMD_SUCCESS; + } + } + + if (inbound) + bgp_debug_list_add_entry(bgp_debug_update_in_peers, host, NULL); + else { + struct peer *peer; + struct peer_af *paf; + int afidx; + + bgp_debug_list_add_entry(bgp_debug_update_out_peers, host, + NULL); + peer = bgp_find_peer(vty, host); + + if (peer) { + for (afidx = BGP_AF_START; afidx < BGP_AF_MAX; + afidx++) { + paf = peer->peer_af_array[afidx]; + if (paf != NULL) { + if (PAF_SUBGRP(paf)) { + UPDGRP_PEER_DBG_EN( + PAF_SUBGRP(paf) + ->update_group); + } + } + } + } + } + + if (vty->node == CONFIG_NODE) { + if (inbound) + DEBUG_ON(update, UPDATE_IN); + else + DEBUG_ON(update, UPDATE_OUT); + } else { + if (inbound) { + TERM_DEBUG_ON(update, UPDATE_IN); + vty_out(vty, + "BGP updates debugging is on (inbound) for %s\n", + argv[idx_peer]->arg); + } else { + TERM_DEBUG_ON(update, UPDATE_OUT); + vty_out(vty, + "BGP updates debugging is on (outbound) for %s\n", + argv[idx_peer]->arg); + } + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_update_direct, @@ -1196,37 +1133,30 @@ DEFUN (no_debug_bgp_update_direct, "Inbound updates\n" "Outbound updates\n") { - int idx_in_out = 4; - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - { - bgp_debug_list_free(bgp_debug_update_in_peers); - - if (vty->node == CONFIG_NODE) - { - DEBUG_OFF (update, UPDATE_IN); - } - else - { - TERM_DEBUG_OFF (update, UPDATE_IN); - vty_out (vty, "BGP updates debugging is off (inbound)\n"); - } - } - else - { - bgp_debug_list_free(bgp_debug_update_out_peers); - - if (vty->node == CONFIG_NODE) - { - DEBUG_OFF (update, UPDATE_OUT); - } - else - { - TERM_DEBUG_OFF (update, UPDATE_OUT); - vty_out (vty, "BGP updates debugging is off (outbound)\n"); - } - } - - return CMD_SUCCESS; + int idx_in_out = 4; + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) { + bgp_debug_list_free(bgp_debug_update_in_peers); + + if (vty->node == CONFIG_NODE) { + DEBUG_OFF(update, UPDATE_IN); + } else { + TERM_DEBUG_OFF(update, UPDATE_IN); + vty_out(vty, + "BGP updates debugging is off (inbound)\n"); + } + } else { + bgp_debug_list_free(bgp_debug_update_out_peers); + + if (vty->node == CONFIG_NODE) { + DEBUG_OFF(update, UPDATE_OUT); + } else { + TERM_DEBUG_OFF(update, UPDATE_OUT); + vty_out(vty, + "BGP updates debugging is off (outbound)\n"); + } + } + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_update_direct_peer, @@ -1242,86 +1172,87 @@ DEFUN (no_debug_bgp_update_direct_peer, "BGP IPv6 neighbor to debug\n" "BGP neighbor on interface to debug\n") { - int idx_in_out = 4; - int idx_peer = 5; - int inbound; - int found_peer = 0; - const char *host = argv[idx_peer]->arg; - - if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0) - inbound = 1; - else - inbound = 0; - - if (inbound && bgp_debug_update_in_peers && - !list_isempty(bgp_debug_update_in_peers)) - { - found_peer = bgp_debug_list_remove_entry(bgp_debug_update_in_peers, host, NULL); - - if (list_isempty(bgp_debug_update_in_peers)) - { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (update, UPDATE_IN); - else - { - TERM_DEBUG_OFF (update, UPDATE_IN); - vty_out (vty, "BGP updates debugging (inbound) is off\n"); - } - } - } - - if (!inbound && bgp_debug_update_out_peers && - !list_isempty(bgp_debug_update_out_peers)) - { - found_peer = bgp_debug_list_remove_entry(bgp_debug_update_out_peers, host, NULL); - - if (list_isempty(bgp_debug_update_out_peers)) - { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (update, UPDATE_OUT); - else - { - TERM_DEBUG_OFF (update, UPDATE_OUT); - vty_out (vty, "BGP updates debugging (outbound) is off\n"); - } - } - - struct peer *peer; - struct peer_af *paf; - int afidx; - peer = bgp_find_peer (vty, host); - - if (peer) - { - for (afidx = BGP_AF_START; afidx < BGP_AF_MAX; afidx++) - { - paf = peer->peer_af_array[afidx]; - if (paf != NULL) - { - if (PAF_SUBGRP (paf)) - { - UPDGRP_PEER_DBG_DIS(PAF_SUBGRP(paf)->update_group); - } - } - } - } - } - - if (found_peer) - if (inbound) - vty_out (vty, "BGP updates debugging (inbound) is off for %s\n", host); - else - vty_out (vty, "BGP updates debugging (outbound) is off for %s\n", - host); - else - if (inbound) - vty_out (vty, "BGP updates debugging (inbound) was not enabled for %s\n", - host); - else - vty_out (vty, "BGP updates debugging (outbound) was not enabled for %s\n", - host); - - return CMD_SUCCESS; + int idx_in_out = 4; + int idx_peer = 5; + int inbound; + int found_peer = 0; + const char *host = argv[idx_peer]->arg; + + if (strncmp("i", argv[idx_in_out]->arg, 1) == 0) + inbound = 1; + else + inbound = 0; + + if (inbound && bgp_debug_update_in_peers + && !list_isempty(bgp_debug_update_in_peers)) { + found_peer = bgp_debug_list_remove_entry( + bgp_debug_update_in_peers, host, NULL); + + if (list_isempty(bgp_debug_update_in_peers)) { + if (vty->node == CONFIG_NODE) + DEBUG_OFF(update, UPDATE_IN); + else { + TERM_DEBUG_OFF(update, UPDATE_IN); + vty_out(vty, + "BGP updates debugging (inbound) is off\n"); + } + } + } + + if (!inbound && bgp_debug_update_out_peers + && !list_isempty(bgp_debug_update_out_peers)) { + found_peer = bgp_debug_list_remove_entry( + bgp_debug_update_out_peers, host, NULL); + + if (list_isempty(bgp_debug_update_out_peers)) { + if (vty->node == CONFIG_NODE) + DEBUG_OFF(update, UPDATE_OUT); + else { + TERM_DEBUG_OFF(update, UPDATE_OUT); + vty_out(vty, + "BGP updates debugging (outbound) is off\n"); + } + } + + struct peer *peer; + struct peer_af *paf; + int afidx; + peer = bgp_find_peer(vty, host); + + if (peer) { + for (afidx = BGP_AF_START; afidx < BGP_AF_MAX; + afidx++) { + paf = peer->peer_af_array[afidx]; + if (paf != NULL) { + if (PAF_SUBGRP(paf)) { + UPDGRP_PEER_DBG_DIS( + PAF_SUBGRP(paf) + ->update_group); + } + } + } + } + } + + if (found_peer) + if (inbound) + vty_out(vty, + "BGP updates debugging (inbound) is off for %s\n", + host); + else + vty_out(vty, + "BGP updates debugging (outbound) is off for %s\n", + host); + else if (inbound) + vty_out(vty, + "BGP updates debugging (inbound) was not enabled for %s\n", + host); + else + vty_out(vty, + "BGP updates debugging (outbound) was not enabled for %s\n", + host); + + return CMD_SUCCESS; } DEFUN (debug_bgp_update_prefix, @@ -1333,46 +1264,41 @@ DEFUN (debug_bgp_update_prefix, "Specify a prefix to debug\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - int idx_ipv4_ipv6_prefixlen = 4; - struct prefix *argv_p; - int ret; - - argv_p = prefix_new(); - ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); - if (!ret) - { - prefix_free(argv_p); - vty_out (vty, "%% Malformed Prefix\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - - if (!bgp_debug_update_prefixes) - bgp_debug_update_prefixes = list_new (); - - if (bgp_debug_list_has_entry(bgp_debug_update_prefixes, NULL, argv_p)) - { - vty_out (vty, "BGP updates debugging is already enabled for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - return CMD_SUCCESS; - } - - bgp_debug_list_add_entry(bgp_debug_update_prefixes, NULL, argv_p); - - if (vty->node == CONFIG_NODE) - { - DEBUG_ON (update, UPDATE_PREFIX); - } - else - { - TERM_DEBUG_ON (update, UPDATE_PREFIX); - vty_out (vty, "BGP updates debugging is on for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - } - - return CMD_SUCCESS; + int idx_ipv4_ipv6_prefixlen = 4; + struct prefix *argv_p; + int ret; + + argv_p = prefix_new(); + ret = str2prefix(argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); + if (!ret) { + prefix_free(argv_p); + vty_out(vty, "%% Malformed Prefix\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + + if (!bgp_debug_update_prefixes) + bgp_debug_update_prefixes = list_new(); + + if (bgp_debug_list_has_entry(bgp_debug_update_prefixes, NULL, argv_p)) { + vty_out(vty, + "BGP updates debugging is already enabled for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + return CMD_SUCCESS; + } + + bgp_debug_list_add_entry(bgp_debug_update_prefixes, NULL, argv_p); + + if (vty->node == CONFIG_NODE) { + DEBUG_ON(update, UPDATE_PREFIX); + } else { + TERM_DEBUG_ON(update, UPDATE_PREFIX); + vty_out(vty, "BGP updates debugging is on for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + } + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_update_prefix, @@ -1385,48 +1311,44 @@ DEFUN (no_debug_bgp_update_prefix, "Specify a prefix to debug\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - int idx_ipv4_ipv6_prefixlen = 5; - struct prefix *argv_p; - int found_prefix = 0; - int ret; - - argv_p = prefix_new(); - ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); - if (!ret) - { - prefix_free(argv_p); - vty_out (vty, "%% Malformed Prefix\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - if (bgp_debug_update_prefixes && !list_isempty(bgp_debug_update_prefixes)) - { - found_prefix = bgp_debug_list_remove_entry(bgp_debug_update_prefixes, NULL, argv_p); - - if (list_isempty(bgp_debug_update_prefixes)) - { - if (vty->node == CONFIG_NODE) - { - DEBUG_OFF (update, UPDATE_PREFIX); - } - else - { - TERM_DEBUG_OFF (update, UPDATE_PREFIX); - vty_out (vty, "BGP updates debugging (per prefix) is off\n"); - } - } - } - - if (found_prefix) - vty_out (vty, "BGP updates debugging is off for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - else - vty_out (vty, "BGP updates debugging was not enabled for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - - return CMD_SUCCESS; + int idx_ipv4_ipv6_prefixlen = 5; + struct prefix *argv_p; + int found_prefix = 0; + int ret; + + argv_p = prefix_new(); + ret = str2prefix(argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); + if (!ret) { + prefix_free(argv_p); + vty_out(vty, "%% Malformed Prefix\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + if (bgp_debug_update_prefixes + && !list_isempty(bgp_debug_update_prefixes)) { + found_prefix = bgp_debug_list_remove_entry( + bgp_debug_update_prefixes, NULL, argv_p); + + if (list_isempty(bgp_debug_update_prefixes)) { + if (vty->node == CONFIG_NODE) { + DEBUG_OFF(update, UPDATE_PREFIX); + } else { + TERM_DEBUG_OFF(update, UPDATE_PREFIX); + vty_out(vty, + "BGP updates debugging (per prefix) is off\n"); + } + } + } + + if (found_prefix) + vty_out(vty, "BGP updates debugging is off for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + else + vty_out(vty, "BGP updates debugging was not enabled for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_update, @@ -1437,27 +1359,24 @@ DEFUN (no_debug_bgp_update, BGP_STR "BGP updates\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); - bgp_debug_list_free(bgp_debug_update_in_peers); - bgp_debug_list_free(bgp_debug_update_out_peers); - bgp_debug_list_free(bgp_debug_update_prefixes); - - bgp_debug_clear_updgrp_update_dbg(bgp); - - if (vty->node == CONFIG_NODE) - { - DEBUG_OFF (update, UPDATE_IN); - DEBUG_OFF (update, UPDATE_OUT); - DEBUG_OFF (update, UPDATE_PREFIX); - } - else - { - TERM_DEBUG_OFF (update, UPDATE_IN); - TERM_DEBUG_OFF (update, UPDATE_OUT); - TERM_DEBUG_OFF (update, UPDATE_PREFIX); - vty_out (vty, "BGP updates debugging is off\n"); - } - return CMD_SUCCESS; + VTY_DECLVAR_CONTEXT(bgp, bgp); + bgp_debug_list_free(bgp_debug_update_in_peers); + bgp_debug_list_free(bgp_debug_update_out_peers); + bgp_debug_list_free(bgp_debug_update_prefixes); + + bgp_debug_clear_updgrp_update_dbg(bgp); + + if (vty->node == CONFIG_NODE) { + DEBUG_OFF(update, UPDATE_IN); + DEBUG_OFF(update, UPDATE_OUT); + DEBUG_OFF(update, UPDATE_PREFIX); + } else { + TERM_DEBUG_OFF(update, UPDATE_IN); + TERM_DEBUG_OFF(update, UPDATE_OUT); + TERM_DEBUG_OFF(update, UPDATE_PREFIX); + vty_out(vty, "BGP updates debugging is off\n"); + } + return CMD_SUCCESS; } /* debug bgp zebra */ @@ -1468,14 +1387,13 @@ DEFUN (debug_bgp_zebra, BGP_STR "BGP Zebra messages\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (zebra, ZEBRA); - else - { - TERM_DEBUG_ON (zebra, ZEBRA); - vty_out (vty, "BGP zebra debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(zebra, ZEBRA); + else { + TERM_DEBUG_ON(zebra, ZEBRA); + vty_out(vty, "BGP zebra debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (debug_bgp_zebra_prefix, @@ -1487,43 +1405,39 @@ DEFUN (debug_bgp_zebra_prefix, "Specify a prefix to debug\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - int idx_ipv4_ipv6_prefixlen = 4; - struct prefix *argv_p; - int ret; - - argv_p = prefix_new(); - ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); - if (!ret) - { - prefix_free(argv_p); - vty_out (vty, "%% Malformed Prefix\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - if (!bgp_debug_zebra_prefixes) - bgp_debug_zebra_prefixes = list_new(); - - if (bgp_debug_list_has_entry(bgp_debug_zebra_prefixes, NULL, argv_p)) - { - vty_out (vty, "BGP zebra debugging is already enabled for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - return CMD_SUCCESS; - } - - bgp_debug_list_add_entry(bgp_debug_zebra_prefixes, NULL, argv_p); - - if (vty->node == CONFIG_NODE) - DEBUG_ON (zebra, ZEBRA); - else - { - TERM_DEBUG_ON (zebra, ZEBRA); - vty_out (vty, "BGP zebra debugging is on for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - } - - return CMD_SUCCESS; + int idx_ipv4_ipv6_prefixlen = 4; + struct prefix *argv_p; + int ret; + + argv_p = prefix_new(); + ret = str2prefix(argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); + if (!ret) { + prefix_free(argv_p); + vty_out(vty, "%% Malformed Prefix\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + if (!bgp_debug_zebra_prefixes) + bgp_debug_zebra_prefixes = list_new(); + + if (bgp_debug_list_has_entry(bgp_debug_zebra_prefixes, NULL, argv_p)) { + vty_out(vty, "BGP zebra debugging is already enabled for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + return CMD_SUCCESS; + } + + bgp_debug_list_add_entry(bgp_debug_zebra_prefixes, NULL, argv_p); + + if (vty->node == CONFIG_NODE) + DEBUG_ON(zebra, ZEBRA); + else { + TERM_DEBUG_ON(zebra, ZEBRA); + vty_out(vty, "BGP zebra debugging is on for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + } + + return CMD_SUCCESS; } DEFUN (no_debug_bgp_zebra, @@ -1534,16 +1448,15 @@ DEFUN (no_debug_bgp_zebra, BGP_STR "BGP Zebra messages\n") { - bgp_debug_list_free(bgp_debug_zebra_prefixes); - - if (vty->node == CONFIG_NODE) - DEBUG_OFF (zebra, ZEBRA); - else - { - TERM_DEBUG_OFF (zebra, ZEBRA); - vty_out (vty, "BGP zebra debugging is off\n"); - } - return CMD_SUCCESS; + bgp_debug_list_free(bgp_debug_zebra_prefixes); + + if (vty->node == CONFIG_NODE) + DEBUG_OFF(zebra, ZEBRA); + else { + TERM_DEBUG_OFF(zebra, ZEBRA); + vty_out(vty, "BGP zebra debugging is off\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_zebra_prefix, @@ -1556,46 +1469,43 @@ DEFUN (no_debug_bgp_zebra_prefix, "Specify a prefix to debug\n" "IPv4 prefix\n" "IPv6 prefix\n") - { - int idx_ipv4_ipv6_prefixlen = 5; - struct prefix *argv_p; - int found_prefix = 0; - int ret; - - argv_p = prefix_new(); - ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); - if (!ret) - { - prefix_free(argv_p); - vty_out (vty, "%% Malformed Prefix\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - if (bgp_debug_zebra_prefixes && !list_isempty(bgp_debug_zebra_prefixes)) - { - found_prefix = bgp_debug_list_remove_entry(bgp_debug_zebra_prefixes, NULL, argv_p); - - if (list_isempty(bgp_debug_zebra_prefixes)) - { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (zebra, ZEBRA); - else - { - TERM_DEBUG_OFF (zebra, ZEBRA); - vty_out (vty, "BGP zebra debugging is off\n"); - } - } - } - - if (found_prefix) - vty_out (vty, "BGP zebra debugging is off for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - else - vty_out (vty, "BGP zebra debugging was not enabled for %s\n", - argv[idx_ipv4_ipv6_prefixlen]->arg); - - return CMD_SUCCESS; + int idx_ipv4_ipv6_prefixlen = 5; + struct prefix *argv_p; + int found_prefix = 0; + int ret; + + argv_p = prefix_new(); + ret = str2prefix(argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p); + if (!ret) { + prefix_free(argv_p); + vty_out(vty, "%% Malformed Prefix\n"); + return CMD_WARNING_CONFIG_FAILED; + } + + if (bgp_debug_zebra_prefixes + && !list_isempty(bgp_debug_zebra_prefixes)) { + found_prefix = bgp_debug_list_remove_entry( + bgp_debug_zebra_prefixes, NULL, argv_p); + + if (list_isempty(bgp_debug_zebra_prefixes)) { + if (vty->node == CONFIG_NODE) + DEBUG_OFF(zebra, ZEBRA); + else { + TERM_DEBUG_OFF(zebra, ZEBRA); + vty_out(vty, "BGP zebra debugging is off\n"); + } + } + } + + if (found_prefix) + vty_out(vty, "BGP zebra debugging is off for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + else + vty_out(vty, "BGP zebra debugging was not enabled for %s\n", + argv[idx_ipv4_ipv6_prefixlen]->arg); + + return CMD_SUCCESS; } DEFUN (debug_bgp_allow_martians, @@ -1605,14 +1515,13 @@ DEFUN (debug_bgp_allow_martians, BGP_STR "BGP allow martian next hops\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (allow_martians, ALLOW_MARTIANS); - else - { - TERM_DEBUG_ON (allow_martians, ALLOW_MARTIANS); - vty_out (vty, "BGP allow_martian next hop debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(allow_martians, ALLOW_MARTIANS); + else { + TERM_DEBUG_ON(allow_martians, ALLOW_MARTIANS); + vty_out(vty, "BGP allow_martian next hop debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_allow_martians, @@ -1623,14 +1532,13 @@ DEFUN (no_debug_bgp_allow_martians, BGP_STR "BGP allow martian next hops\n") { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (allow_martians, ALLOW_MARTIANS); - else - { - TERM_DEBUG_OFF (allow_martians, ALLOW_MARTIANS); - vty_out (vty, "BGP allow martian next hop debugging is off\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_OFF(allow_martians, ALLOW_MARTIANS); + else { + TERM_DEBUG_OFF(allow_martians, ALLOW_MARTIANS); + vty_out(vty, "BGP allow martian next hop debugging is off\n"); + } + return CMD_SUCCESS; } @@ -1642,14 +1550,13 @@ DEFUN (debug_bgp_update_groups, BGP_STR "BGP update-groups\n") { - if (vty->node == CONFIG_NODE) - DEBUG_ON (update_groups, UPDATE_GROUPS); - else - { - TERM_DEBUG_ON (update_groups, UPDATE_GROUPS); - vty_out (vty, "BGP update-groups debugging is on\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_ON(update_groups, UPDATE_GROUPS); + else { + TERM_DEBUG_ON(update_groups, UPDATE_GROUPS); + vty_out(vty, "BGP update-groups debugging is on\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp_update_groups, @@ -1660,14 +1567,13 @@ DEFUN (no_debug_bgp_update_groups, BGP_STR "BGP update-groups\n") { - if (vty->node == CONFIG_NODE) - DEBUG_OFF (update_groups, UPDATE_GROUPS); - else - { - TERM_DEBUG_OFF (update_groups, UPDATE_GROUPS); - vty_out (vty, "BGP update-groups debugging is off\n"); - } - return CMD_SUCCESS; + if (vty->node == CONFIG_NODE) + DEBUG_OFF(update_groups, UPDATE_GROUPS); + else { + TERM_DEBUG_OFF(update_groups, UPDATE_GROUPS); + vty_out(vty, "BGP update-groups debugging is off\n"); + } + return CMD_SUCCESS; } DEFUN (no_debug_bgp, @@ -1677,30 +1583,30 @@ DEFUN (no_debug_bgp, DEBUG_STR BGP_STR) { - VTY_DECLVAR_CONTEXT(bgp, bgp); - bgp_debug_list_free(bgp_debug_neighbor_events_peers); - bgp_debug_list_free(bgp_debug_keepalive_peers); - bgp_debug_list_free(bgp_debug_update_in_peers); - bgp_debug_list_free(bgp_debug_update_out_peers); - bgp_debug_list_free(bgp_debug_update_prefixes); - bgp_debug_list_free(bgp_debug_bestpath_prefixes); - bgp_debug_list_free(bgp_debug_zebra_prefixes); - - bgp_debug_clear_updgrp_update_dbg(bgp); - - TERM_DEBUG_OFF (keepalive, KEEPALIVE); - TERM_DEBUG_OFF (update, UPDATE_IN); - TERM_DEBUG_OFF (update, UPDATE_OUT); - TERM_DEBUG_OFF (update, UPDATE_PREFIX); - TERM_DEBUG_OFF (bestpath, BESTPATH); - TERM_DEBUG_OFF (as4, AS4); - TERM_DEBUG_OFF (as4, AS4_SEGMENT); - TERM_DEBUG_OFF (neighbor_events, NEIGHBOR_EVENTS); - TERM_DEBUG_OFF (zebra, ZEBRA); - TERM_DEBUG_OFF (allow_martians, ALLOW_MARTIANS); - vty_out (vty, "All possible debugging has been turned off\n"); - - return CMD_SUCCESS; + VTY_DECLVAR_CONTEXT(bgp, bgp); + bgp_debug_list_free(bgp_debug_neighbor_events_peers); + bgp_debug_list_free(bgp_debug_keepalive_peers); + bgp_debug_list_free(bgp_debug_update_in_peers); + bgp_debug_list_free(bgp_debug_update_out_peers); + bgp_debug_list_free(bgp_debug_update_prefixes); + bgp_debug_list_free(bgp_debug_bestpath_prefixes); + bgp_debug_list_free(bgp_debug_zebra_prefixes); + + bgp_debug_clear_updgrp_update_dbg(bgp); + + TERM_DEBUG_OFF(keepalive, KEEPALIVE); + TERM_DEBUG_OFF(update, UPDATE_IN); + TERM_DEBUG_OFF(update, UPDATE_OUT); + TERM_DEBUG_OFF(update, UPDATE_PREFIX); + TERM_DEBUG_OFF(bestpath, BESTPATH); + TERM_DEBUG_OFF(as4, AS4); + TERM_DEBUG_OFF(as4, AS4_SEGMENT); + TERM_DEBUG_OFF(neighbor_events, NEIGHBOR_EVENTS); + TERM_DEBUG_OFF(zebra, ZEBRA); + TERM_DEBUG_OFF(allow_martians, ALLOW_MARTIANS); + vty_out(vty, "All possible debugging has been turned off\n"); + + return CMD_SUCCESS; } DEFUN (show_debugging_bgp, @@ -1710,486 +1616,462 @@ DEFUN (show_debugging_bgp, DEBUG_STR BGP_STR) { - vty_out (vty, "BGP debugging status:\n"); + vty_out(vty, "BGP debugging status:\n"); - if (BGP_DEBUG (as4, AS4)) - vty_out (vty, " BGP as4 debugging is on\n"); + if (BGP_DEBUG(as4, AS4)) + vty_out(vty, " BGP as4 debugging is on\n"); - if (BGP_DEBUG (as4, AS4_SEGMENT)) - vty_out (vty, " BGP as4 aspath segment debugging is on\n"); + if (BGP_DEBUG(as4, AS4_SEGMENT)) + vty_out(vty, " BGP as4 aspath segment debugging is on\n"); - if (BGP_DEBUG (bestpath, BESTPATH)) - bgp_debug_list_print (vty, " BGP bestpath debugging is on", - bgp_debug_bestpath_prefixes); + if (BGP_DEBUG(bestpath, BESTPATH)) + bgp_debug_list_print(vty, " BGP bestpath debugging is on", + bgp_debug_bestpath_prefixes); - if (BGP_DEBUG (keepalive, KEEPALIVE)) - bgp_debug_list_print (vty, " BGP keepalives debugging is on", - bgp_debug_keepalive_peers); + if (BGP_DEBUG(keepalive, KEEPALIVE)) + bgp_debug_list_print(vty, " BGP keepalives debugging is on", + bgp_debug_keepalive_peers); - if (BGP_DEBUG (neighbor_events, NEIGHBOR_EVENTS)) - bgp_debug_list_print (vty, " BGP neighbor-events debugging is on", - bgp_debug_neighbor_events_peers); + if (BGP_DEBUG(neighbor_events, NEIGHBOR_EVENTS)) + bgp_debug_list_print(vty, + " BGP neighbor-events debugging is on", + bgp_debug_neighbor_events_peers); - if (BGP_DEBUG (nht, NHT)) - vty_out (vty, " BGP next-hop tracking debugging is on\n"); + if (BGP_DEBUG(nht, NHT)) + vty_out(vty, " BGP next-hop tracking debugging is on\n"); - if (BGP_DEBUG (update_groups, UPDATE_GROUPS)) - vty_out (vty, " BGP update-groups debugging is on\n"); + if (BGP_DEBUG(update_groups, UPDATE_GROUPS)) + vty_out(vty, " BGP update-groups debugging is on\n"); - if (BGP_DEBUG (update, UPDATE_PREFIX)) - bgp_debug_list_print (vty, " BGP updates debugging is on", - bgp_debug_update_prefixes); + if (BGP_DEBUG(update, UPDATE_PREFIX)) + bgp_debug_list_print(vty, " BGP updates debugging is on", + bgp_debug_update_prefixes); - if (BGP_DEBUG (update, UPDATE_IN)) - bgp_debug_list_print (vty, " BGP updates debugging is on (inbound)", - bgp_debug_update_in_peers); + if (BGP_DEBUG(update, UPDATE_IN)) + bgp_debug_list_print(vty, + " BGP updates debugging is on (inbound)", + bgp_debug_update_in_peers); - if (BGP_DEBUG (update, UPDATE_OUT)) - bgp_debug_list_print (vty, " BGP updates debugging is on (outbound)", - bgp_debug_update_out_peers); + if (BGP_DEBUG(update, UPDATE_OUT)) + bgp_debug_list_print(vty, + " BGP updates debugging is on (outbound)", + bgp_debug_update_out_peers); - if (BGP_DEBUG (zebra, ZEBRA)) - bgp_debug_list_print (vty, " BGP zebra debugging is on", - bgp_debug_zebra_prefixes); + if (BGP_DEBUG(zebra, ZEBRA)) + bgp_debug_list_print(vty, " BGP zebra debugging is on", + bgp_debug_zebra_prefixes); - if (BGP_DEBUG (allow_martians, ALLOW_MARTIANS)) - vty_out (vty, " BGP allow martian next hop debugging is on\n"); - vty_out (vty, "\n"); - return CMD_SUCCESS; + if (BGP_DEBUG(allow_martians, ALLOW_MARTIANS)) + vty_out(vty, " BGP allow martian next hop debugging is on\n"); + vty_out(vty, "\n"); + return CMD_SUCCESS; } /* return count of number of debug flags set */ -int -bgp_debug_count(void) +int bgp_debug_count(void) { - int ret = 0; - if (BGP_DEBUG (as4, AS4)) - ret++; + int ret = 0; + if (BGP_DEBUG(as4, AS4)) + ret++; - if (BGP_DEBUG (as4, AS4_SEGMENT)) - ret++; + if (BGP_DEBUG(as4, AS4_SEGMENT)) + ret++; - if (BGP_DEBUG (bestpath, BESTPATH)) - ret++; + if (BGP_DEBUG(bestpath, BESTPATH)) + ret++; - if (BGP_DEBUG (keepalive, KEEPALIVE)) - ret++; + if (BGP_DEBUG(keepalive, KEEPALIVE)) + ret++; - if (BGP_DEBUG (neighbor_events, NEIGHBOR_EVENTS)) - ret++; + if (BGP_DEBUG(neighbor_events, NEIGHBOR_EVENTS)) + ret++; - if (BGP_DEBUG (nht, NHT)) - ret++; + if (BGP_DEBUG(nht, NHT)) + ret++; - if (BGP_DEBUG (update_groups, UPDATE_GROUPS)) - ret++; + if (BGP_DEBUG(update_groups, UPDATE_GROUPS)) + ret++; - if (BGP_DEBUG (update, UPDATE_PREFIX)) - ret++; + if (BGP_DEBUG(update, UPDATE_PREFIX)) + ret++; - if (BGP_DEBUG (update, UPDATE_IN)) - ret++; + if (BGP_DEBUG(update, UPDATE_IN)) + ret++; - if (BGP_DEBUG (update, UPDATE_OUT)) - ret++; + if (BGP_DEBUG(update, UPDATE_OUT)) + ret++; - if (BGP_DEBUG (zebra, ZEBRA)) - ret++; + if (BGP_DEBUG(zebra, ZEBRA)) + ret++; - if (BGP_DEBUG (allow_martians, ALLOW_MARTIANS)) - ret++; + if (BGP_DEBUG(allow_martians, ALLOW_MARTIANS)) + ret++; - return ret; + return ret; } -static int -bgp_config_write_debug (struct vty *vty) +static int bgp_config_write_debug(struct vty *vty) { - int write = 0; - - if (CONF_BGP_DEBUG (as4, AS4)) - { - vty_out (vty, "debug bgp as4\n"); - write++; - } - - if (CONF_BGP_DEBUG (as4, AS4_SEGMENT)) - { - vty_out (vty, "debug bgp as4 segment\n"); - write++; - } - - if (CONF_BGP_DEBUG (bestpath, BESTPATH)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp bestpath", - bgp_debug_bestpath_prefixes); - } - - if (CONF_BGP_DEBUG (keepalive, KEEPALIVE)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp keepalives", - bgp_debug_keepalive_peers); - } - - if (CONF_BGP_DEBUG (neighbor_events, NEIGHBOR_EVENTS)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp neighbor-events", - bgp_debug_neighbor_events_peers); - } - - if (CONF_BGP_DEBUG (nht, NHT)) - { - vty_out (vty, "debug bgp nht\n"); - write++; - } - - if (CONF_BGP_DEBUG (update_groups, UPDATE_GROUPS)) - { - vty_out (vty, "debug bgp update-groups\n"); - write++; - } - - if (CONF_BGP_DEBUG (update, UPDATE_PREFIX)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp updates prefix", - bgp_debug_update_prefixes); - } - - if (CONF_BGP_DEBUG (update, UPDATE_IN)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp updates in", - bgp_debug_update_in_peers); - } - - if (CONF_BGP_DEBUG (update, UPDATE_OUT)) - { - write += bgp_debug_list_conf_print (vty, "debug bgp updates out", - bgp_debug_update_out_peers); - } - - if (CONF_BGP_DEBUG (zebra, ZEBRA)) - { - if (!bgp_debug_zebra_prefixes || list_isempty(bgp_debug_zebra_prefixes)) - { - vty_out (vty, "debug bgp zebra\n"); - write++; - } - else - { - write += bgp_debug_list_conf_print (vty, "debug bgp zebra prefix", - bgp_debug_zebra_prefixes); - } - } - - if (CONF_BGP_DEBUG (allow_martians, ALLOW_MARTIANS)) - { - vty_out (vty, "debug bgp allow-martians\n"); - write++; - } - - return write; -} + int write = 0; -static struct cmd_node debug_node = -{ - DEBUG_NODE, - "", - 1 -}; + if (CONF_BGP_DEBUG(as4, AS4)) { + vty_out(vty, "debug bgp as4\n"); + write++; + } -void -bgp_debug_init (void) -{ - install_node (&debug_node, bgp_config_write_debug); - - install_element (ENABLE_NODE, &show_debugging_bgp_cmd); - - install_element (ENABLE_NODE, &debug_bgp_as4_cmd); - install_element (CONFIG_NODE, &debug_bgp_as4_cmd); - install_element (ENABLE_NODE, &debug_bgp_as4_segment_cmd); - install_element (CONFIG_NODE, &debug_bgp_as4_segment_cmd); - - install_element (ENABLE_NODE, &debug_bgp_neighbor_events_cmd); - install_element (CONFIG_NODE, &debug_bgp_neighbor_events_cmd); - install_element (ENABLE_NODE, &debug_bgp_nht_cmd); - install_element (CONFIG_NODE, &debug_bgp_nht_cmd); - install_element (ENABLE_NODE, &debug_bgp_keepalive_cmd); - install_element (CONFIG_NODE, &debug_bgp_keepalive_cmd); - install_element (ENABLE_NODE, &debug_bgp_update_cmd); - install_element (CONFIG_NODE, &debug_bgp_update_cmd); - install_element (ENABLE_NODE, &debug_bgp_zebra_cmd); - install_element (CONFIG_NODE, &debug_bgp_zebra_cmd); - install_element (ENABLE_NODE, &debug_bgp_allow_martians_cmd); - install_element (CONFIG_NODE, &debug_bgp_allow_martians_cmd); - install_element (ENABLE_NODE, &debug_bgp_update_groups_cmd); - install_element (CONFIG_NODE, &debug_bgp_update_groups_cmd); - install_element (ENABLE_NODE, &debug_bgp_bestpath_prefix_cmd); - install_element (CONFIG_NODE, &debug_bgp_bestpath_prefix_cmd); - - /* debug bgp updates (in|out) */ - install_element (ENABLE_NODE, &debug_bgp_update_direct_cmd); - install_element (CONFIG_NODE, &debug_bgp_update_direct_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_update_direct_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_update_direct_cmd); - - /* debug bgp updates (in|out) A.B.C.D */ - install_element (ENABLE_NODE, &debug_bgp_update_direct_peer_cmd); - install_element (CONFIG_NODE, &debug_bgp_update_direct_peer_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_update_direct_peer_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_update_direct_peer_cmd); - - /* debug bgp updates prefix A.B.C.D/M */ - install_element (ENABLE_NODE, &debug_bgp_update_prefix_cmd); - install_element (CONFIG_NODE, &debug_bgp_update_prefix_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_update_prefix_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_update_prefix_cmd); - - /* debug bgp zebra prefix A.B.C.D/M */ - install_element (ENABLE_NODE, &debug_bgp_zebra_prefix_cmd); - install_element (CONFIG_NODE, &debug_bgp_zebra_prefix_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_zebra_prefix_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_zebra_prefix_cmd); - - install_element (ENABLE_NODE, &no_debug_bgp_as4_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_as4_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_as4_segment_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_as4_segment_cmd); - - /* debug bgp neighbor-events A.B.C.D */ - install_element (ENABLE_NODE, &debug_bgp_neighbor_events_peer_cmd); - install_element (CONFIG_NODE, &debug_bgp_neighbor_events_peer_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_neighbor_events_peer_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_neighbor_events_peer_cmd); - - /* debug bgp keepalive A.B.C.D */ - install_element (ENABLE_NODE, &debug_bgp_keepalive_peer_cmd); - install_element (CONFIG_NODE, &debug_bgp_keepalive_peer_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_keepalive_peer_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_keepalive_peer_cmd); - - install_element (ENABLE_NODE, &no_debug_bgp_neighbor_events_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_neighbor_events_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_nht_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_nht_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_keepalive_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_keepalive_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_update_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_update_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_zebra_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_zebra_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_allow_martians_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_allow_martians_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_update_groups_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_update_groups_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_bestpath_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_bestpath_cmd); - install_element (ENABLE_NODE, &no_debug_bgp_bestpath_prefix_cmd); - install_element (CONFIG_NODE, &no_debug_bgp_bestpath_prefix_cmd); -} + if (CONF_BGP_DEBUG(as4, AS4_SEGMENT)) { + vty_out(vty, "debug bgp as4 segment\n"); + write++; + } -/* Return true if this prefix is on the per_prefix_list of prefixes to debug - * for BGP_DEBUG_TYPE - */ -static int -bgp_debug_per_prefix (struct prefix *p, unsigned long term_bgp_debug_type, - unsigned int BGP_DEBUG_TYPE, struct list *per_prefix_list) -{ - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; + if (CONF_BGP_DEBUG(bestpath, BESTPATH)) { + write += bgp_debug_list_conf_print(vty, "debug bgp bestpath", + bgp_debug_bestpath_prefixes); + } + + if (CONF_BGP_DEBUG(keepalive, KEEPALIVE)) { + write += bgp_debug_list_conf_print(vty, "debug bgp keepalives", + bgp_debug_keepalive_peers); + } + + if (CONF_BGP_DEBUG(neighbor_events, NEIGHBOR_EVENTS)) { + write += bgp_debug_list_conf_print( + vty, "debug bgp neighbor-events", + bgp_debug_neighbor_events_peers); + } + + if (CONF_BGP_DEBUG(nht, NHT)) { + vty_out(vty, "debug bgp nht\n"); + write++; + } + + if (CONF_BGP_DEBUG(update_groups, UPDATE_GROUPS)) { + vty_out(vty, "debug bgp update-groups\n"); + write++; + } + + if (CONF_BGP_DEBUG(update, UPDATE_PREFIX)) { + write += bgp_debug_list_conf_print(vty, + "debug bgp updates prefix", + bgp_debug_update_prefixes); + } + + if (CONF_BGP_DEBUG(update, UPDATE_IN)) { + write += bgp_debug_list_conf_print(vty, "debug bgp updates in", + bgp_debug_update_in_peers); + } + + if (CONF_BGP_DEBUG(update, UPDATE_OUT)) { + write += bgp_debug_list_conf_print(vty, "debug bgp updates out", + bgp_debug_update_out_peers); + } - if (term_bgp_debug_type & BGP_DEBUG_TYPE) - { - /* We are debugging all prefixes so return true */ - if (!per_prefix_list || list_isempty(per_prefix_list)) - return 1; + if (CONF_BGP_DEBUG(zebra, ZEBRA)) { + if (!bgp_debug_zebra_prefixes + || list_isempty(bgp_debug_zebra_prefixes)) { + vty_out(vty, "debug bgp zebra\n"); + write++; + } else { + write += bgp_debug_list_conf_print( + vty, "debug bgp zebra prefix", + bgp_debug_zebra_prefixes); + } + } - else - { - if (!p) - return 0; + if (CONF_BGP_DEBUG(allow_martians, ALLOW_MARTIANS)) { + vty_out(vty, "debug bgp allow-martians\n"); + write++; + } - for (ALL_LIST_ELEMENTS (per_prefix_list, node, nnode, filter)) - if (filter->p->prefixlen == p->prefixlen && prefix_match(filter->p, p)) - return 1; + return write; +} - return 0; - } - } +static struct cmd_node debug_node = {DEBUG_NODE, "", 1}; + +void bgp_debug_init(void) +{ + install_node(&debug_node, bgp_config_write_debug); + + install_element(ENABLE_NODE, &show_debugging_bgp_cmd); + + install_element(ENABLE_NODE, &debug_bgp_as4_cmd); + install_element(CONFIG_NODE, &debug_bgp_as4_cmd); + install_element(ENABLE_NODE, &debug_bgp_as4_segment_cmd); + install_element(CONFIG_NODE, &debug_bgp_as4_segment_cmd); + + install_element(ENABLE_NODE, &debug_bgp_neighbor_events_cmd); + install_element(CONFIG_NODE, &debug_bgp_neighbor_events_cmd); + install_element(ENABLE_NODE, &debug_bgp_nht_cmd); + install_element(CONFIG_NODE, &debug_bgp_nht_cmd); + install_element(ENABLE_NODE, &debug_bgp_keepalive_cmd); + install_element(CONFIG_NODE, &debug_bgp_keepalive_cmd); + install_element(ENABLE_NODE, &debug_bgp_update_cmd); + install_element(CONFIG_NODE, &debug_bgp_update_cmd); + install_element(ENABLE_NODE, &debug_bgp_zebra_cmd); + install_element(CONFIG_NODE, &debug_bgp_zebra_cmd); + install_element(ENABLE_NODE, &debug_bgp_allow_martians_cmd); + install_element(CONFIG_NODE, &debug_bgp_allow_martians_cmd); + install_element(ENABLE_NODE, &debug_bgp_update_groups_cmd); + install_element(CONFIG_NODE, &debug_bgp_update_groups_cmd); + install_element(ENABLE_NODE, &debug_bgp_bestpath_prefix_cmd); + install_element(CONFIG_NODE, &debug_bgp_bestpath_prefix_cmd); + + /* debug bgp updates (in|out) */ + install_element(ENABLE_NODE, &debug_bgp_update_direct_cmd); + install_element(CONFIG_NODE, &debug_bgp_update_direct_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_update_direct_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_update_direct_cmd); + + /* debug bgp updates (in|out) A.B.C.D */ + install_element(ENABLE_NODE, &debug_bgp_update_direct_peer_cmd); + install_element(CONFIG_NODE, &debug_bgp_update_direct_peer_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_update_direct_peer_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_update_direct_peer_cmd); + + /* debug bgp updates prefix A.B.C.D/M */ + install_element(ENABLE_NODE, &debug_bgp_update_prefix_cmd); + install_element(CONFIG_NODE, &debug_bgp_update_prefix_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_update_prefix_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_update_prefix_cmd); + + /* debug bgp zebra prefix A.B.C.D/M */ + install_element(ENABLE_NODE, &debug_bgp_zebra_prefix_cmd); + install_element(CONFIG_NODE, &debug_bgp_zebra_prefix_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_zebra_prefix_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_zebra_prefix_cmd); + + install_element(ENABLE_NODE, &no_debug_bgp_as4_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_as4_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_as4_segment_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_as4_segment_cmd); + + /* debug bgp neighbor-events A.B.C.D */ + install_element(ENABLE_NODE, &debug_bgp_neighbor_events_peer_cmd); + install_element(CONFIG_NODE, &debug_bgp_neighbor_events_peer_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_neighbor_events_peer_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_neighbor_events_peer_cmd); + + /* debug bgp keepalive A.B.C.D */ + install_element(ENABLE_NODE, &debug_bgp_keepalive_peer_cmd); + install_element(CONFIG_NODE, &debug_bgp_keepalive_peer_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_keepalive_peer_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_keepalive_peer_cmd); + + install_element(ENABLE_NODE, &no_debug_bgp_neighbor_events_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_neighbor_events_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_nht_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_nht_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_keepalive_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_keepalive_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_update_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_update_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_zebra_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_zebra_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_allow_martians_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_allow_martians_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_update_groups_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_update_groups_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_bestpath_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_bestpath_cmd); + install_element(ENABLE_NODE, &no_debug_bgp_bestpath_prefix_cmd); + install_element(CONFIG_NODE, &no_debug_bgp_bestpath_prefix_cmd); +} - return 0; +/* Return true if this prefix is on the per_prefix_list of prefixes to debug + * for BGP_DEBUG_TYPE + */ +static int bgp_debug_per_prefix(struct prefix *p, + unsigned long term_bgp_debug_type, + unsigned int BGP_DEBUG_TYPE, + struct list *per_prefix_list) +{ + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; + + if (term_bgp_debug_type & BGP_DEBUG_TYPE) { + /* We are debugging all prefixes so return true */ + if (!per_prefix_list || list_isempty(per_prefix_list)) + return 1; + + else { + if (!p) + return 0; + + for (ALL_LIST_ELEMENTS(per_prefix_list, node, nnode, + filter)) + if (filter->p->prefixlen == p->prefixlen + && prefix_match(filter->p, p)) + return 1; + + return 0; + } + } + + return 0; } /* Return true if this peer is on the per_peer_list of peers to debug * for BGP_DEBUG_TYPE */ -static int -bgp_debug_per_peer(char *host, unsigned long term_bgp_debug_type, - unsigned int BGP_DEBUG_TYPE, struct list *per_peer_list) +static int bgp_debug_per_peer(char *host, unsigned long term_bgp_debug_type, + unsigned int BGP_DEBUG_TYPE, + struct list *per_peer_list) { - struct bgp_debug_filter *filter; - struct listnode *node, *nnode; + struct bgp_debug_filter *filter; + struct listnode *node, *nnode; - if (term_bgp_debug_type & BGP_DEBUG_TYPE) - { - /* We are debugging all peers so return true */ - if (!per_peer_list || list_isempty(per_peer_list)) - return 1; + if (term_bgp_debug_type & BGP_DEBUG_TYPE) { + /* We are debugging all peers so return true */ + if (!per_peer_list || list_isempty(per_peer_list)) + return 1; - else - { - if (!host) - return 0; + else { + if (!host) + return 0; - for (ALL_LIST_ELEMENTS (per_peer_list, node, nnode, filter)) - if (strcmp (filter->host, host) == 0) - return 1; + for (ALL_LIST_ELEMENTS(per_peer_list, node, nnode, + filter)) + if (strcmp(filter->host, host) == 0) + return 1; - return 0; - } - } + return 0; + } + } - return 0; + return 0; } -int -bgp_debug_neighbor_events (struct peer *peer) +int bgp_debug_neighbor_events(struct peer *peer) { - char *host = NULL; + char *host = NULL; - if (peer) - host = peer->host; + if (peer) + host = peer->host; - return bgp_debug_per_peer (host, - term_bgp_debug_neighbor_events, - BGP_DEBUG_NEIGHBOR_EVENTS, - bgp_debug_neighbor_events_peers); + return bgp_debug_per_peer(host, term_bgp_debug_neighbor_events, + BGP_DEBUG_NEIGHBOR_EVENTS, + bgp_debug_neighbor_events_peers); } -int -bgp_debug_keepalive (struct peer *peer) +int bgp_debug_keepalive(struct peer *peer) { - char *host = NULL; + char *host = NULL; - if (peer) - host = peer->host; + if (peer) + host = peer->host; - return bgp_debug_per_peer (host, - term_bgp_debug_keepalive, - BGP_DEBUG_KEEPALIVE, - bgp_debug_keepalive_peers); + return bgp_debug_per_peer(host, term_bgp_debug_keepalive, + BGP_DEBUG_KEEPALIVE, + bgp_debug_keepalive_peers); } -int -bgp_debug_update (struct peer *peer, struct prefix *p, - struct update_group *updgrp, unsigned int inbound) +int bgp_debug_update(struct peer *peer, struct prefix *p, + struct update_group *updgrp, unsigned int inbound) { - char *host = NULL; - - if (peer) - host = peer->host; - - if (inbound) - { - if (bgp_debug_per_peer (host, term_bgp_debug_update, BGP_DEBUG_UPDATE_IN, - bgp_debug_update_in_peers)) - return 1; - } - - /* outbound */ - else - { - if (bgp_debug_per_peer (host, term_bgp_debug_update, - BGP_DEBUG_UPDATE_OUT, - bgp_debug_update_out_peers)) - return 1; - - /* Check if update debugging implicitly enabled for the group. */ - if (updgrp && UPDGRP_DBG_ON(updgrp)) - return 1; - } - - - if (BGP_DEBUG (update, UPDATE_PREFIX)) - { - if (bgp_debug_per_prefix (p, term_bgp_debug_update, - BGP_DEBUG_UPDATE_PREFIX, - bgp_debug_update_prefixes)) - return 1; - } - - return 0; + char *host = NULL; + + if (peer) + host = peer->host; + + if (inbound) { + if (bgp_debug_per_peer(host, term_bgp_debug_update, + BGP_DEBUG_UPDATE_IN, + bgp_debug_update_in_peers)) + return 1; + } + + /* outbound */ + else { + if (bgp_debug_per_peer(host, term_bgp_debug_update, + BGP_DEBUG_UPDATE_OUT, + bgp_debug_update_out_peers)) + return 1; + + /* Check if update debugging implicitly enabled for the group. + */ + if (updgrp && UPDGRP_DBG_ON(updgrp)) + return 1; + } + + + if (BGP_DEBUG(update, UPDATE_PREFIX)) { + if (bgp_debug_per_prefix(p, term_bgp_debug_update, + BGP_DEBUG_UPDATE_PREFIX, + bgp_debug_update_prefixes)) + return 1; + } + + return 0; } -int -bgp_debug_bestpath (struct prefix *p) +int bgp_debug_bestpath(struct prefix *p) { - if (BGP_DEBUG (bestpath, BESTPATH)) - { - if (bgp_debug_per_prefix (p, term_bgp_debug_bestpath, - BGP_DEBUG_BESTPATH, - bgp_debug_bestpath_prefixes)) - return 1; - } - - return 0; + if (BGP_DEBUG(bestpath, BESTPATH)) { + if (bgp_debug_per_prefix(p, term_bgp_debug_bestpath, + BGP_DEBUG_BESTPATH, + bgp_debug_bestpath_prefixes)) + return 1; + } + + return 0; } -int -bgp_debug_zebra (struct prefix *p) +int bgp_debug_zebra(struct prefix *p) { - if (BGP_DEBUG (zebra, ZEBRA)) - { - if (bgp_debug_per_prefix (p, term_bgp_debug_zebra, BGP_DEBUG_ZEBRA, - bgp_debug_zebra_prefixes)) - return 1; - } - - return 0; + if (BGP_DEBUG(zebra, ZEBRA)) { + if (bgp_debug_per_prefix(p, term_bgp_debug_zebra, + BGP_DEBUG_ZEBRA, + bgp_debug_zebra_prefixes)) + return 1; + } + + return 0; } -const char * -bgp_debug_rdpfxpath2str (afi_t afi, safi_t safi, - struct prefix_rd *prd, union prefixconstptr pu, - mpls_label_t *label, int addpath_valid, - u_int32_t addpath_id, char *str, int size) -{ - char rd_buf[RD_ADDRSTRLEN]; - char pfx_buf[PREFIX_STRLEN]; - char tag_buf[30]; - /* ' with addpath ID ' 17 - * max strlen of uint32 + 10 - * +/- (just in case) + 1 - * null terminator + 1 - * ============================ 29 */ - char pathid_buf[30]; - - if (size < BGP_PRD_PATH_STRLEN) - return NULL; - - /* Note: Path-id is created by default, but only included in update sometimes. */ - pathid_buf[0] = '\0'; - if (addpath_valid) - snprintf(pathid_buf, sizeof(pathid_buf), " with addpath ID %u", addpath_id); - - tag_buf[0] = '\0'; - if (bgp_labeled_safi (safi) && label) - { - u_int32_t label_value; - - label_value = decode_label (label); - sprintf (tag_buf, " label %u", label_value); - } - - if (prd) - snprintf (str, size, "RD %s %s%s%s", - prefix_rd2str(prd, rd_buf, sizeof (rd_buf)), - prefix2str (pu, pfx_buf, sizeof (pfx_buf)), - tag_buf, pathid_buf); - else - snprintf (str, size, "%s%s%s", - prefix2str (pu, pfx_buf, sizeof (pfx_buf)), - tag_buf, pathid_buf); - - return str; +const char *bgp_debug_rdpfxpath2str(afi_t afi, safi_t safi, + struct prefix_rd *prd, + union prefixconstptr pu, + mpls_label_t *label, int addpath_valid, + u_int32_t addpath_id, char *str, int size) +{ + char rd_buf[RD_ADDRSTRLEN]; + char pfx_buf[PREFIX_STRLEN]; + char tag_buf[30]; + /* ' with addpath ID ' 17 + * max strlen of uint32 + 10 + * +/- (just in case) + 1 + * null terminator + 1 + * ============================ 29 */ + char pathid_buf[30]; + + if (size < BGP_PRD_PATH_STRLEN) + return NULL; + + /* Note: Path-id is created by default, but only included in update + * sometimes. */ + pathid_buf[0] = '\0'; + if (addpath_valid) + snprintf(pathid_buf, sizeof(pathid_buf), " with addpath ID %u", + addpath_id); + + tag_buf[0] = '\0'; + if (bgp_labeled_safi(safi) && label) { + u_int32_t label_value; + + label_value = decode_label(label); + sprintf(tag_buf, " label %u", label_value); + } + + if (prd) + snprintf(str, size, "RD %s %s%s%s", + prefix_rd2str(prd, rd_buf, sizeof(rd_buf)), + prefix2str(pu, pfx_buf, sizeof(pfx_buf)), tag_buf, + pathid_buf); + else + snprintf(str, size, "%s%s%s", + prefix2str(pu, pfx_buf, sizeof(pfx_buf)), tag_buf, + pathid_buf); + + return str; } |