Revert "*: reindent pt. 2"

This reverts commit c14777c6bf.

clang 5 is not widely available enough for people to indent with.  This
is particularly problematic when rebasing/adjusting branches.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
David Lamparter 2017-07-22 14:52:33 +02:00
parent dceb5f8ac7
commit 9d303b37d7
140 changed files with 1570 additions and 1925 deletions

View File

@ -878,9 +878,8 @@ size_t aspath_put(struct stream *s, struct aspath *as, int use32bit)
* The general assumption here is that many things tested will * The general assumption here is that many things tested will
* never happen. And, in real live, up to now, they have not. * never happen. And, in real live, up to now, they have not.
*/ */
while (seg while (seg && (ASSEGMENT_LEN(seg, use32bit)
&& (ASSEGMENT_LEN(seg, use32bit) <= STREAM_WRITEABLE(s))) {
<= STREAM_WRITEABLE(s))) {
struct assegment *next = seg->next; struct assegment *next = seg->next;
int written = 0; int written = 0;
int asns_packed = 0; int asns_packed = 0;
@ -1585,14 +1584,12 @@ int aspath_cmp_left(const struct aspath *aspath1, const struct aspath *aspath2)
return 1; return 1;
/* find first non-confed segments for each */ /* find first non-confed segments for each */
while (seg1 while (seg1 && ((seg1->type == AS_CONFED_SEQUENCE)
&& ((seg1->type == AS_CONFED_SEQUENCE) || (seg1->type == AS_CONFED_SET)))
|| (seg1->type == AS_CONFED_SET)))
seg1 = seg1->next; seg1 = seg1->next;
while (seg2 while (seg2 && ((seg2->type == AS_CONFED_SEQUENCE)
&& ((seg2->type == AS_CONFED_SEQUENCE) || (seg2->type == AS_CONFED_SET)))
|| (seg2->type == AS_CONFED_SET)))
seg2 = seg2->next; seg2 = seg2->next;
/* Check as1's */ /* Check as1's */
@ -2069,8 +2066,7 @@ static void aspath_show_all_iterator(struct hash_backet *backet,
`show [ip] bgp paths' command. */ `show [ip] bgp paths' command. */
void aspath_print_all_vty(struct vty *vty) void aspath_print_all_vty(struct vty *vty)
{ {
hash_iterate(ashash, hash_iterate(ashash, (void (*)(struct hash_backet *,
(void (*)(struct hash_backet *, void *))aspath_show_all_iterator,
void *))aspath_show_all_iterator,
vty); vty);
} }

View File

@ -82,14 +82,15 @@ static const struct message attr_str[] = {
{BGP_ATTR_PREFIX_SID, "PREFIX_SID"}, {BGP_ATTR_PREFIX_SID, "PREFIX_SID"},
{0}}; {0}};
static const struct message attr_flag_str[] = { static const struct message attr_flag_str[] =
{BGP_ATTR_FLAG_OPTIONAL, "Optional"}, {
{BGP_ATTR_FLAG_TRANS, "Transitive"}, {BGP_ATTR_FLAG_OPTIONAL, "Optional"},
{BGP_ATTR_FLAG_PARTIAL, "Partial"}, {BGP_ATTR_FLAG_TRANS, "Transitive"},
/* bgp_attr_flags_diagnose() relies on this bit being last in {BGP_ATTR_FLAG_PARTIAL, "Partial"},
this list */ /* bgp_attr_flags_diagnose() relies on this bit being last in
{BGP_ATTR_FLAG_EXTLEN, "Extended Length"}, this list */
{0}}; {BGP_ATTR_FLAG_EXTLEN, "Extended Length"},
{0}};
static struct hash *cluster_hash; static struct hash *cluster_hash;
@ -679,10 +680,9 @@ static void attr_show_all_iterator(struct hash_backet *backet, struct vty *vty)
void attr_show_all(struct vty *vty) void attr_show_all(struct vty *vty)
{ {
hash_iterate( hash_iterate(attrhash, (void (*)(struct hash_backet *,
attrhash, void *))attr_show_all_iterator,
(void (*)(struct hash_backet *, void *))attr_show_all_iterator, vty);
vty);
} }
static void *bgp_attr_hash_alloc(void *p) static void *bgp_attr_hash_alloc(void *p)
@ -1055,7 +1055,7 @@ bgp_attr_malformed(struct bgp_attr_parser_args *args, u_char subcode,
static void static void
bgp_attr_flags_diagnose(struct bgp_attr_parser_args *args, bgp_attr_flags_diagnose(struct bgp_attr_parser_args *args,
u_int8_t desired_flags /* how RFC says it must be */ u_int8_t desired_flags /* how RFC says it must be */
) )
{ {
u_char seen = 0, i; u_char seen = 0, i;
u_char real_flags = args->flags; u_char real_flags = args->flags;
@ -1087,26 +1087,30 @@ bgp_attr_flags_diagnose(struct bgp_attr_parser_args *args,
* as will PARTIAL for optional+transitive attributes. * as will PARTIAL for optional+transitive attributes.
*/ */
const u_int8_t attr_flags_values[] = { const u_int8_t attr_flags_values[] = {
[BGP_ATTR_ORIGIN] = BGP_ATTR_FLAG_TRANS, [BGP_ATTR_ORIGIN] = BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_AS_PATH] = BGP_ATTR_FLAG_TRANS, [BGP_ATTR_AS_PATH] = BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_NEXT_HOP] = BGP_ATTR_FLAG_TRANS, [BGP_ATTR_NEXT_HOP] = BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_MULTI_EXIT_DISC] = BGP_ATTR_FLAG_OPTIONAL, [BGP_ATTR_MULTI_EXIT_DISC] = BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_LOCAL_PREF] = BGP_ATTR_FLAG_TRANS, [BGP_ATTR_LOCAL_PREF] = BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_ATOMIC_AGGREGATE] = BGP_ATTR_FLAG_TRANS, [BGP_ATTR_ATOMIC_AGGREGATE] = BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_AGGREGATOR] = BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL, [BGP_ATTR_AGGREGATOR] =
[BGP_ATTR_COMMUNITIES] = BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL, BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_ORIGINATOR_ID] = BGP_ATTR_FLAG_OPTIONAL, [BGP_ATTR_COMMUNITIES] =
[BGP_ATTR_CLUSTER_LIST] = BGP_ATTR_FLAG_OPTIONAL, BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_MP_REACH_NLRI] = BGP_ATTR_FLAG_OPTIONAL, [BGP_ATTR_ORIGINATOR_ID] = BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_MP_UNREACH_NLRI] = BGP_ATTR_FLAG_OPTIONAL, [BGP_ATTR_CLUSTER_LIST] = BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_EXT_COMMUNITIES] = [BGP_ATTR_MP_REACH_NLRI] = BGP_ATTR_FLAG_OPTIONAL,
BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS, [BGP_ATTR_MP_UNREACH_NLRI] = BGP_ATTR_FLAG_OPTIONAL,
[BGP_ATTR_AS4_PATH] = BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS, [BGP_ATTR_EXT_COMMUNITIES] =
[BGP_ATTR_AS4_AGGREGATOR] = BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS,
BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS, [BGP_ATTR_AS4_PATH] =
[BGP_ATTR_LARGE_COMMUNITIES] = BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS,
BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS, [BGP_ATTR_AS4_AGGREGATOR] =
[BGP_ATTR_PREFIX_SID] = BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS, BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_LARGE_COMMUNITIES] =
BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS,
[BGP_ATTR_PREFIX_SID] =
BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS,
}; };
static const size_t attr_flags_values_max = array_size(attr_flags_values) - 1; static const size_t attr_flags_values_max = array_size(attr_flags_values) - 1;
@ -2751,10 +2755,9 @@ static void bgp_packet_mpattr_tea(struct bgp *bgp, struct peer *peer,
struct bgp_attr_encap_subtlv *st; struct bgp_attr_encap_subtlv *st;
const char *attrname; const char *attrname;
if (!attr if (!attr || (attrtype == BGP_ATTR_ENCAP
|| (attrtype == BGP_ATTR_ENCAP && (!attr->encap_tunneltype
&& (!attr->encap_tunneltype || attr->encap_tunneltype == BGP_ENCAP_TYPE_MPLS)))
|| attr->encap_tunneltype == BGP_ENCAP_TYPE_MPLS)))
return; return;
switch (attrtype) { switch (attrtype) {
@ -2801,8 +2804,9 @@ static void bgp_packet_mpattr_tea(struct bgp *bgp, struct peer *peer,
if (attrlenfield > 0xff) { if (attrlenfield > 0xff) {
/* 2-octet length field */ /* 2-octet length field */
stream_putc(s, BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_EXTLEN); BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, attrtype); stream_putc(s, attrtype);
stream_putw(s, attrlenfield & 0xffff); stream_putw(s, attrlenfield & 0xffff);
} else { } else {
@ -3040,14 +3044,15 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY) if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_SEND_COMMUNITY)
&& (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES))) { && (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES))) {
if (attr->community->size * 4 > 255) { if (attr->community->size * 4 > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN); | BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_COMMUNITIES); stream_putc(s, BGP_ATTR_COMMUNITIES);
stream_putw(s, attr->community->size * 4); stream_putw(s, attr->community->size * 4);
} else { } else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_COMMUNITIES); stream_putc(s, BGP_ATTR_COMMUNITIES);
stream_putc(s, attr->community->size * 4); stream_putc(s, attr->community->size * 4);
} }
@ -3061,14 +3066,15 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
PEER_FLAG_SEND_LARGE_COMMUNITY) PEER_FLAG_SEND_LARGE_COMMUNITY)
&& (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES))) { && (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES))) {
if (attr->lcommunity->size * 12 > 255) { if (attr->lcommunity->size * 12 > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN); | BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES); stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
stream_putw(s, attr->lcommunity->size * 12); stream_putw(s, attr->lcommunity->size * 12);
} else { } else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES); stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
stream_putc(s, attr->lcommunity->size * 12); stream_putc(s, attr->lcommunity->size * 12);
} }
@ -3120,14 +3126,16 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
if (peer->sort == BGP_PEER_IBGP if (peer->sort == BGP_PEER_IBGP
|| peer->sort == BGP_PEER_CONFED) { || peer->sort == BGP_PEER_CONFED) {
if (attr->ecommunity->size * 8 > 255) { if (attr->ecommunity->size * 8 > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_EXTLEN); | BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_EXT_COMMUNITIES); stream_putc(s, BGP_ATTR_EXT_COMMUNITIES);
stream_putw(s, attr->ecommunity->size * 8); stream_putw(s, attr->ecommunity->size * 8);
} else { } else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_EXT_COMMUNITIES); stream_putc(s, BGP_ATTR_EXT_COMMUNITIES);
stream_putc(s, attr->ecommunity->size * 8); stream_putc(s, attr->ecommunity->size * 8);
} }
@ -3193,8 +3201,9 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
label_index = attr->label_index; label_index = attr->label_index;
if (label_index != BGP_INVALID_LABEL_INDEX) { if (label_index != BGP_INVALID_LABEL_INDEX) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_PREFIX_SID); stream_putc(s, BGP_ATTR_PREFIX_SID);
stream_putc(s, 10); stream_putc(s, 10);
stream_putc(s, BGP_PREFIX_SID_LABEL_INDEX); stream_putc(s, BGP_PREFIX_SID_LABEL_INDEX);
@ -3222,8 +3231,9 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
*/ */
aspath = aspath_delete_confed_seq(aspath); aspath = aspath_delete_confed_seq(aspath);
stream_putc(s, BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_EXTLEN); BGP_ATTR_FLAG_TRANS | BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_AS4_PATH); stream_putc(s, BGP_ATTR_AS4_PATH);
aspath_sizep = stream_get_endp(s); aspath_sizep = stream_get_endp(s);
stream_putw(s, 0); stream_putw(s, 0);
@ -3408,14 +3418,15 @@ void bgp_dump_routes_attr(struct stream *s, struct attr *attr,
/* Community attribute. */ /* Community attribute. */
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) { if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) {
if (attr->community->size * 4 > 255) { if (attr->community->size * 4 > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN); | BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_COMMUNITIES); stream_putc(s, BGP_ATTR_COMMUNITIES);
stream_putw(s, attr->community->size * 4); stream_putw(s, attr->community->size * 4);
} else { } else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_COMMUNITIES); stream_putc(s, BGP_ATTR_COMMUNITIES);
stream_putc(s, attr->community->size * 4); stream_putc(s, attr->community->size * 4);
} }
@ -3425,14 +3436,15 @@ void bgp_dump_routes_attr(struct stream *s, struct attr *attr,
/* Large Community attribute. */ /* Large Community attribute. */
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES)) { if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LARGE_COMMUNITIES)) {
if (attr->lcommunity->size * 12 > 255) { if (attr->lcommunity->size * 12 > 255) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS BGP_ATTR_FLAG_OPTIONAL | BGP_ATTR_FLAG_TRANS
| BGP_ATTR_FLAG_EXTLEN); | BGP_ATTR_FLAG_EXTLEN);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES); stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
stream_putw(s, attr->lcommunity->size * 12); stream_putw(s, attr->lcommunity->size * 12);
} else { } else {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES); stream_putc(s, BGP_ATTR_LARGE_COMMUNITIES);
stream_putc(s, attr->lcommunity->size * 12); stream_putc(s, attr->lcommunity->size * 12);
} }
@ -3477,8 +3489,9 @@ void bgp_dump_routes_attr(struct stream *s, struct attr *attr,
/* Prefix SID */ /* Prefix SID */
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_PREFIX_SID)) { if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_PREFIX_SID)) {
if (attr->label_index != BGP_INVALID_LABEL_INDEX) { if (attr->label_index != BGP_INVALID_LABEL_INDEX) {
stream_putc(s, BGP_ATTR_FLAG_OPTIONAL stream_putc(s,
| BGP_ATTR_FLAG_TRANS); BGP_ATTR_FLAG_OPTIONAL
| BGP_ATTR_FLAG_TRANS);
stream_putc(s, BGP_ATTR_PREFIX_SID); stream_putc(s, BGP_ATTR_PREFIX_SID);
stream_putc(s, 10); stream_putc(s, 10);
stream_putc(s, BGP_PREFIX_SID_LABEL_INDEX); stream_putc(s, BGP_PREFIX_SID_LABEL_INDEX);

View File

@ -220,7 +220,7 @@ typedef enum {
BGP_ATTR_PARSE_WITHDRAW = -2, BGP_ATTR_PARSE_WITHDRAW = -2,
/* only used internally, send notify + convert to BGP_ATTR_PARSE_ERROR /* only used internally, send notify + convert to BGP_ATTR_PARSE_ERROR
*/ */
BGP_ATTR_PARSE_ERROR_NOTIFYPLS = -3, BGP_ATTR_PARSE_ERROR_NOTIFYPLS = -3,
} bgp_attr_parse_ret_t; } bgp_attr_parse_ret_t;

View File

@ -212,9 +212,8 @@ static void bgp_bfd_update_type(struct peer *peer)
if ((multihop if ((multihop
&& !CHECK_FLAG(bfd_info->flags, && !CHECK_FLAG(bfd_info->flags,
BFD_FLAG_BFD_TYPE_MULTIHOP)) BFD_FLAG_BFD_TYPE_MULTIHOP))
|| (!multihop || (!multihop && CHECK_FLAG(bfd_info->flags,
&& CHECK_FLAG(bfd_info->flags, BFD_FLAG_BFD_TYPE_MULTIHOP))) {
BFD_FLAG_BFD_TYPE_MULTIHOP))) {
bgp_bfd_peer_sendmsg(peer, ZEBRA_BFD_DEST_DEREGISTER); bgp_bfd_peer_sendmsg(peer, ZEBRA_BFD_DEST_DEREGISTER);
bgp_bfd_peer_sendmsg(peer, ZEBRA_BFD_DEST_REGISTER); bgp_bfd_peer_sendmsg(peer, ZEBRA_BFD_DEST_REGISTER);
} }

View File

@ -36,9 +36,7 @@
/* privileges */ /* privileges */
static zebra_capabilities_t _caps_p[] = { static zebra_capabilities_t _caps_p[] = {
ZCAP_BIND, ZCAP_BIND, ZCAP_NET_RAW, ZCAP_NET_ADMIN,
ZCAP_NET_RAW,
ZCAP_NET_ADMIN,
}; };
struct zebra_privs_t bgpd_privs = { struct zebra_privs_t bgpd_privs = {

View File

@ -369,9 +369,10 @@ static void bgp_damp_parameter_set(int hlife, int reuse, int sup, int maxsup)
/* Initialize params per bgp_damp_config. */ /* Initialize params per bgp_damp_config. */
damp->reuse_index_size = REUSE_ARRAY_SIZE; damp->reuse_index_size = REUSE_ARRAY_SIZE;
damp->ceiling = (int)(damp->reuse_limit damp->ceiling =
* (pow(2, (double)damp->max_suppress_time (int)(damp->reuse_limit * (pow(2,
/ damp->half_life))); (double)damp->max_suppress_time
/ damp->half_life)));
/* Decay-array computations */ /* Decay-array computations */
damp->decay_array_size = damp->decay_array_size =
@ -413,11 +414,9 @@ static void bgp_damp_parameter_set(int hlife, int reuse, int sup, int maxsup)
for (i = 0; i < damp->reuse_index_size; i++) { for (i = 0; i < damp->reuse_index_size; i++) {
damp->reuse_index[i] = damp->reuse_index[i] =
(int)(((double)damp->half_life / DELTA_REUSE) (int)(((double)damp->half_life / DELTA_REUSE)
* log10(1.0 * log10(1.0 / (damp->reuse_limit
/ (damp->reuse_limit * (1.0 + ((double)i
* (1.0 / damp->scale_factor))))
+ ((double)i
/ damp->scale_factor))))
/ log10(0.5)); / log10(0.5));
} }
} }

View File

@ -244,8 +244,9 @@ static void bgp_dump_routes_index_table(struct bgp *bgp)
/* Populate fake peer at index 0, for locally originated routes */ /* Populate fake peer at index 0, for locally originated routes */
/* Peer type (IPv4) */ /* Peer type (IPv4) */
stream_putc(obuf, TABLE_DUMP_V2_PEER_INDEX_TABLE_AS4 stream_putc(obuf,
+ TABLE_DUMP_V2_PEER_INDEX_TABLE_IP); TABLE_DUMP_V2_PEER_INDEX_TABLE_AS4
+ TABLE_DUMP_V2_PEER_INDEX_TABLE_IP);
/* Peer BGP ID (0.0.0.0) */ /* Peer BGP ID (0.0.0.0) */
stream_putl(obuf, 0); stream_putl(obuf, 0);
/* Peer IP address (0.0.0.0) */ /* Peer IP address (0.0.0.0) */

View File

@ -2718,10 +2718,9 @@ int bgp_evpn_local_vni_add(struct bgp *bgp, vni_t vni,
*/ */
void bgp_evpn_cleanup_on_disable(struct bgp *bgp) void bgp_evpn_cleanup_on_disable(struct bgp *bgp)
{ {
hash_iterate( hash_iterate(bgp->vnihash, (void (*)(struct hash_backet *,
bgp->vnihash, void *))cleanup_vni_on_disable,
(void (*)(struct hash_backet *, void *))cleanup_vni_on_disable, bgp);
bgp);
} }
/* /*
@ -2731,10 +2730,9 @@ void bgp_evpn_cleanup_on_disable(struct bgp *bgp)
void bgp_evpn_cleanup(struct bgp *bgp) void bgp_evpn_cleanup(struct bgp *bgp)
{ {
if (bgp->vnihash) if (bgp->vnihash)
hash_iterate( hash_iterate(bgp->vnihash, (void (*)(struct hash_backet *,
bgp->vnihash, void *))free_vni_entry,
(void (*)(struct hash_backet *, void *))free_vni_entry, bgp);
bgp);
if (bgp->import_rt_hash) if (bgp->import_rt_hash)
hash_free(bgp->import_rt_hash); hash_free(bgp->import_rt_hash);
bgp->import_rt_hash = NULL; bgp->import_rt_hash = NULL;

View File

@ -1301,10 +1301,9 @@ static void evpn_show_routes_vni_all(struct vty *vty, struct bgp *bgp,
wctx.bgp = bgp; wctx.bgp = bgp;
wctx.vty = vty; wctx.vty = vty;
wctx.vtep_ip = vtep_ip; wctx.vtep_ip = vtep_ip;
hash_iterate( hash_iterate(bgp->vnihash, (void (*)(struct hash_backet *,
bgp->vnihash, void *))show_vni_routes_hash,
(void (*)(struct hash_backet *, void *))show_vni_routes_hash, &wctx);
&wctx);
} }
/* /*

View File

@ -1394,8 +1394,9 @@ static int bgp_establish(struct peer *peer)
} }
if (other == peer) if (other == peer)
ret = 1; /* bgp_establish specific code when xfer_conn ret =
happens. */ 1; /* bgp_establish specific code when xfer_conn
happens. */
/* Reset capability open status flag. */ /* Reset capability open status flag. */
if (!CHECK_FLAG(peer->sflags, PEER_STATUS_CAPABILITY_OPEN)) if (!CHECK_FLAG(peer->sflags, PEER_STATUS_CAPABILITY_OPEN))

View File

@ -283,7 +283,7 @@ int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,
* an error SHOULD * an error SHOULD
* be logged locally, and the prefix SHOULD be * be logged locally, and the prefix SHOULD be
* ignored. * ignored.
*/ */
zlog_err( zlog_err(
"%s: IPv4 labeled-unicast NLRI is multicast address %s, ignoring", "%s: IPv4 labeled-unicast NLRI is multicast address %s, ignoring",
peer->host, inet_ntoa(p.u.prefix4)); peer->host, inet_ntoa(p.u.prefix4));

View File

@ -101,9 +101,7 @@ static int retain_mode = 0;
/* privileges */ /* privileges */
static zebra_capabilities_t _caps_p[] = { static zebra_capabilities_t _caps_p[] = {
ZCAP_BIND, ZCAP_BIND, ZCAP_NET_RAW, ZCAP_NET_ADMIN,
ZCAP_NET_RAW,
ZCAP_NET_ADMIN,
}; };
struct zebra_privs_t bgpd_privs = { struct zebra_privs_t bgpd_privs = {

View File

@ -675,9 +675,8 @@ void bgp_info_mpath_aggregate_update(struct bgp_info *new_best,
bgp_attr_dup(&attr, new_best->attr); bgp_attr_dup(&attr, new_best->attr);
if (new_best->peer if (new_best->peer && bgp_flag_check(new_best->peer->bgp,
&& bgp_flag_check(new_best->peer->bgp, BGP_FLAG_MULTIPATH_RELAX_AS_SET)) {
BGP_FLAG_MULTIPATH_RELAX_AS_SET)) {
/* aggregate attribute from multipath constituents */ /* aggregate attribute from multipath constituents */
aspath = aspath_dup(attr.aspath); aspath = aspath_dup(attr.aspath);

View File

@ -612,9 +612,8 @@ int bgp_show_mpls_vpn(struct vty *vty, afi_t afi, struct prefix_rd *prd,
if (use_json) { if (use_json) {
json_object_object_add(json, "routes", json_nroute); json_object_object_add(json, "routes", json_nroute);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (output_count == 0) if (output_count == 0)

View File

@ -158,9 +158,8 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock)
if (ret) { if (ret) {
zlog_err( zlog_err(
"%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d", "%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d",
__func__, __func__, inet_ntop(AF_INET, &peer->remote_id,
inet_ntop(AF_INET, &peer->remote_id, buf, buf, sizeof(buf)),
sizeof(buf)),
errno); errno);
return ret; return ret;
} }
@ -173,9 +172,8 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock)
if (ret) { if (ret) {
zlog_err( zlog_err(
"%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d", "%s: Can't set TxTTL on peer (rtrid %s) socket, err = %d",
__func__, __func__, inet_ntop(AF_INET, &peer->remote_id,
inet_ntop(AF_INET, &peer->remote_id, buf, buf, sizeof(buf)),
sizeof(buf)),
errno); errno);
return ret; return ret;
} }
@ -184,9 +182,8 @@ int bgp_set_socket_ttl(struct peer *peer, int bgp_sock)
if (ret) { if (ret) {
zlog_err( zlog_err(
"%s: Can't set MinTTL on peer (rtrid %s) socket, err = %d", "%s: Can't set MinTTL on peer (rtrid %s) socket, err = %d",
__func__, __func__, inet_ntop(AF_INET, &peer->remote_id,
inet_ntop(AF_INET, &peer->remote_id, buf, buf, sizeof(buf)),
sizeof(buf)),
errno); errno);
return ret; return ret;
} }

View File

@ -744,18 +744,18 @@ static const struct message capcode_str[] = {
/* Minimum sizes for length field of each cap (so not inc. the header) */ /* Minimum sizes for length field of each cap (so not inc. the header) */
static const size_t cap_minsizes[] = { static const size_t cap_minsizes[] = {
[CAPABILITY_CODE_MP] = CAPABILITY_CODE_MP_LEN, [CAPABILITY_CODE_MP] = CAPABILITY_CODE_MP_LEN,
[CAPABILITY_CODE_REFRESH] = CAPABILITY_CODE_REFRESH_LEN, [CAPABILITY_CODE_REFRESH] = CAPABILITY_CODE_REFRESH_LEN,
[CAPABILITY_CODE_ORF] = CAPABILITY_CODE_ORF_LEN, [CAPABILITY_CODE_ORF] = CAPABILITY_CODE_ORF_LEN,
[CAPABILITY_CODE_RESTART] = CAPABILITY_CODE_RESTART_LEN, [CAPABILITY_CODE_RESTART] = CAPABILITY_CODE_RESTART_LEN,
[CAPABILITY_CODE_AS4] = CAPABILITY_CODE_AS4_LEN, [CAPABILITY_CODE_AS4] = CAPABILITY_CODE_AS4_LEN,
[CAPABILITY_CODE_ADDPATH] = CAPABILITY_CODE_ADDPATH_LEN, [CAPABILITY_CODE_ADDPATH] = CAPABILITY_CODE_ADDPATH_LEN,
[CAPABILITY_CODE_DYNAMIC] = CAPABILITY_CODE_DYNAMIC_LEN, [CAPABILITY_CODE_DYNAMIC] = CAPABILITY_CODE_DYNAMIC_LEN,
[CAPABILITY_CODE_DYNAMIC_OLD] = CAPABILITY_CODE_DYNAMIC_LEN, [CAPABILITY_CODE_DYNAMIC_OLD] = CAPABILITY_CODE_DYNAMIC_LEN,
[CAPABILITY_CODE_ENHE] = CAPABILITY_CODE_ENHE_LEN, [CAPABILITY_CODE_ENHE] = CAPABILITY_CODE_ENHE_LEN,
[CAPABILITY_CODE_REFRESH_OLD] = CAPABILITY_CODE_REFRESH_LEN, [CAPABILITY_CODE_REFRESH_OLD] = CAPABILITY_CODE_REFRESH_LEN,
[CAPABILITY_CODE_ORF_OLD] = CAPABILITY_CODE_ORF_LEN, [CAPABILITY_CODE_ORF_OLD] = CAPABILITY_CODE_ORF_LEN,
[CAPABILITY_CODE_FQDN] = CAPABILITY_CODE_MIN_FQDN_LEN, [CAPABILITY_CODE_FQDN] = CAPABILITY_CODE_MIN_FQDN_LEN,
}; };
/* value the capability must be a multiple of. /* value the capability must be a multiple of.
@ -764,12 +764,18 @@ static const size_t cap_minsizes[] = {
* table should be set to 1. * table should be set to 1.
*/ */
static const size_t cap_modsizes[] = { static const size_t cap_modsizes[] = {
[CAPABILITY_CODE_MP] = 4, [CAPABILITY_CODE_REFRESH] = 1, [CAPABILITY_CODE_MP] = 4,
[CAPABILITY_CODE_ORF] = 1, [CAPABILITY_CODE_RESTART] = 1, [CAPABILITY_CODE_REFRESH] = 1,
[CAPABILITY_CODE_AS4] = 4, [CAPABILITY_CODE_ADDPATH] = 4, [CAPABILITY_CODE_ORF] = 1,
[CAPABILITY_CODE_DYNAMIC] = 1, [CAPABILITY_CODE_DYNAMIC_OLD] = 1, [CAPABILITY_CODE_RESTART] = 1,
[CAPABILITY_CODE_ENHE] = 6, [CAPABILITY_CODE_REFRESH_OLD] = 1, [CAPABILITY_CODE_AS4] = 4,
[CAPABILITY_CODE_ORF_OLD] = 1, [CAPABILITY_CODE_FQDN] = 1, [CAPABILITY_CODE_ADDPATH] = 4,
[CAPABILITY_CODE_DYNAMIC] = 1,
[CAPABILITY_CODE_DYNAMIC_OLD] = 1,
[CAPABILITY_CODE_ENHE] = 6,
[CAPABILITY_CODE_REFRESH_OLD] = 1,
[CAPABILITY_CODE_ORF_OLD] = 1,
[CAPABILITY_CODE_FQDN] = 1,
}; };
/** /**
@ -1309,8 +1315,9 @@ void bgp_open_capability(struct stream *s, struct peer *peer)
*/ */
SET_FLAG(peer->cap, PEER_CAP_ENHE_ADV); SET_FLAG(peer->cap, PEER_CAP_ENHE_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP); stream_putc(s, BGP_OPEN_OPT_CAP);
stream_putc(s, CAPABILITY_CODE_ENHE_LEN stream_putc(s,
+ 2); CAPABILITY_CODE_ENHE_LEN
+ 2);
stream_putc(s, CAPABILITY_CODE_ENHE); stream_putc(s, CAPABILITY_CODE_ENHE);
stream_putc(s, stream_putc(s,
CAPABILITY_CODE_ENHE_LEN); CAPABILITY_CODE_ENHE_LEN);

View File

@ -547,8 +547,9 @@ void bgp_open_send(struct peer *peer)
/* Set open packet values. */ /* Set open packet values. */
stream_putc(s, BGP_VERSION_4); /* BGP version */ stream_putc(s, BGP_VERSION_4); /* BGP version */
stream_putw(s, (local_as <= BGP_AS_MAX) ? (u_int16_t)local_as stream_putw(s,
: BGP_AS_TRANS); (local_as <= BGP_AS_MAX) ? (u_int16_t)local_as
: BGP_AS_TRANS);
stream_putw(s, send_holdtime); /* Hold Time */ stream_putw(s, send_holdtime); /* Hold Time */
stream_put_in_addr(s, &peer->local_id); /* BGP Identifier */ stream_put_in_addr(s, &peer->local_id); /* BGP Identifier */

View File

@ -1916,9 +1916,8 @@ int subgroup_process_announce_selected(struct update_subgroup *subgrp,
: NULL); : NULL);
/* First update is deferred until ORF or ROUTE-REFRESH is received */ /* First update is deferred until ORF or ROUTE-REFRESH is received */
if (onlypeer if (onlypeer && CHECK_FLAG(onlypeer->af_sflags[afi][safi],
&& CHECK_FLAG(onlypeer->af_sflags[afi][safi], PEER_STATUS_ORF_WAIT_REFRESH))
PEER_STATUS_ORF_WAIT_REFRESH))
return 0; return 0;
memset(&attr, 0, sizeof(struct attr)); memset(&attr, 0, sizeof(struct attr));
@ -3869,7 +3868,7 @@ int bgp_nlri_parse_ip(struct peer *peer, struct attr *attr,
* an error SHOULD * an error SHOULD
* be logged locally, and the prefix SHOULD be * be logged locally, and the prefix SHOULD be
* ignored. * ignored.
*/ */
zlog_err( zlog_err(
"%s: IPv4 unicast NLRI is multicast address %s, ignoring", "%s: IPv4 unicast NLRI is multicast address %s, ignoring",
peer->host, inet_ntoa(p.u.prefix4)); peer->host, inet_ntoa(p.u.prefix4));
@ -5210,16 +5209,14 @@ DEFUN (no_bgp_network_mask_natural,
} }
ALIAS(no_bgp_network, no_bgp_network_label_index_cmd, ALIAS(no_bgp_network, no_bgp_network_label_index_cmd,
"no network A.B.C.D/M label-index (0-1048560)", "no network A.B.C.D/M label-index (0-1048560)", NO_STR
NO_STR
"Specify a network to announce via BGP\n" "Specify a network to announce via BGP\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
"Label index to associate with the prefix\n" "Label index to associate with the prefix\n"
"Label index value\n") "Label index value\n")
ALIAS(no_bgp_network, no_bgp_network_label_index_route_map_cmd, ALIAS(no_bgp_network, no_bgp_network_label_index_route_map_cmd,
"no network A.B.C.D/M label-index (0-1048560) route-map WORD", "no network A.B.C.D/M label-index (0-1048560) route-map WORD", NO_STR
NO_STR
"Specify a network to announce via BGP\n" "Specify a network to announce via BGP\n"
"IP prefix\n" "IP prefix\n"
"Label index to associate with the prefix\n" "Label index to associate with the prefix\n"
@ -5301,16 +5298,14 @@ DEFUN (no_ipv6_bgp_network,
} }
ALIAS(no_ipv6_bgp_network, no_ipv6_bgp_network_label_index_cmd, ALIAS(no_ipv6_bgp_network, no_ipv6_bgp_network_label_index_cmd,
"no network X:X::X:X/M label-index (0-1048560)", "no network X:X::X:X/M label-index (0-1048560)", NO_STR
NO_STR
"Specify a network to announce via BGP\n" "Specify a network to announce via BGP\n"
"IPv6 prefix <network>/<length>\n" "IPv6 prefix <network>/<length>\n"
"Label index to associate with the prefix\n" "Label index to associate with the prefix\n"
"Label index value\n") "Label index value\n")
ALIAS(no_ipv6_bgp_network, no_ipv6_bgp_network_label_index_route_map_cmd, ALIAS(no_ipv6_bgp_network, no_ipv6_bgp_network_label_index_route_map_cmd,
"no network X:X::X:X/M label-index (0-1048560) route-map WORD", "no network X:X::X:X/M label-index (0-1048560) route-map WORD", NO_STR
NO_STR
"Specify a network to announce via BGP\n" "Specify a network to announce via BGP\n"
"IPv6 prefix\n" "IPv6 prefix\n"
"Label index to associate with the prefix\n" "Label index to associate with the prefix\n"
@ -6510,10 +6505,11 @@ void route_vty_out(struct vty *vty, struct prefix *p, struct bgp_info *binfo,
len = vty_out( len = vty_out(
vty, "%s", vty, "%s",
binfo->peer->conf_if); binfo->peer->conf_if);
len = 7 - len; /* len of IPv6 len =
addr + max 7 - len; /* len of IPv6
len of def addr + max
ifname */ len of def
ifname */
if (len < 1) if (len < 1)
vty_out(vty, "\n%*s", vty_out(vty, "\n%*s",
@ -7000,10 +6996,9 @@ static void damp_route_vty_out(struct vty *vty, struct prefix *p,
bgp_damp_reuse_time_vty(vty, binfo, timebuf, BGP_UPTIME_LEN, bgp_damp_reuse_time_vty(vty, binfo, timebuf, BGP_UPTIME_LEN,
use_json, json); use_json, json);
else else
vty_out(vty, "%s ", vty_out(vty, "%s ", bgp_damp_reuse_time_vty(vty, binfo, timebuf,
bgp_damp_reuse_time_vty(vty, binfo, timebuf, BGP_UPTIME_LEN,
BGP_UPTIME_LEN, use_json, use_json, json));
json));
/* Print attribute */ /* Print attribute */
attr = binfo->attr; attr = binfo->attr;
@ -7082,9 +7077,8 @@ static void flap_route_vty_out(struct vty *vty, struct prefix *p,
peer_uptime(bdi->start_time, timebuf, BGP_UPTIME_LEN, use_json, peer_uptime(bdi->start_time, timebuf, BGP_UPTIME_LEN, use_json,
json); json);
else else
vty_out(vty, "%s ", vty_out(vty, "%s ", peer_uptime(bdi->start_time, timebuf,
peer_uptime(bdi->start_time, timebuf, BGP_UPTIME_LEN, 0, BGP_UPTIME_LEN, 0, NULL));
NULL));
if (CHECK_FLAG(binfo->flags, BGP_INFO_DAMPED) if (CHECK_FLAG(binfo->flags, BGP_INFO_DAMPED)
&& !CHECK_FLAG(binfo->flags, BGP_INFO_HISTORY)) { && !CHECK_FLAG(binfo->flags, BGP_INFO_HISTORY)) {
@ -8604,9 +8598,8 @@ static int bgp_show_route_in_table(struct vty *vty, struct bgp *bgp,
if (display) if (display)
json_object_object_add(json, "paths", json_paths); json_object_object_add(json, "paths", json_paths);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (!display) { if (!display) {
@ -9276,20 +9269,21 @@ enum bgp_stats {
}; };
static const char *table_stats_strs[] = { static const char *table_stats_strs[] = {
[BGP_STATS_PREFIXES] = "Total Prefixes", [BGP_STATS_PREFIXES] = "Total Prefixes",
[BGP_STATS_TOTPLEN] = "Average prefix length", [BGP_STATS_TOTPLEN] = "Average prefix length",
[BGP_STATS_RIB] = "Total Advertisements", [BGP_STATS_RIB] = "Total Advertisements",
[BGP_STATS_UNAGGREGATEABLE] = "Unaggregateable prefixes", [BGP_STATS_UNAGGREGATEABLE] = "Unaggregateable prefixes",
[BGP_STATS_MAX_AGGREGATEABLE] = "Maximum aggregateable prefixes", [BGP_STATS_MAX_AGGREGATEABLE] =
[BGP_STATS_AGGREGATES] = "BGP Aggregate advertisements", "Maximum aggregateable prefixes",
[BGP_STATS_SPACE] = "Address space advertised", [BGP_STATS_AGGREGATES] = "BGP Aggregate advertisements",
[BGP_STATS_ASPATH_COUNT] = "Advertisements with paths", [BGP_STATS_SPACE] = "Address space advertised",
[BGP_STATS_ASPATH_MAXHOPS] = "Longest AS-Path (hops)", [BGP_STATS_ASPATH_COUNT] = "Advertisements with paths",
[BGP_STATS_ASPATH_MAXSIZE] = "Largest AS-Path (bytes)", [BGP_STATS_ASPATH_MAXHOPS] = "Longest AS-Path (hops)",
[BGP_STATS_ASPATH_TOTHOPS] = "Average AS-Path length (hops)", [BGP_STATS_ASPATH_MAXSIZE] = "Largest AS-Path (bytes)",
[BGP_STATS_ASPATH_TOTSIZE] = "Average AS-Path size (bytes)", [BGP_STATS_ASPATH_TOTHOPS] = "Average AS-Path length (hops)",
[BGP_STATS_ASN_HIGHEST] = "Highest public ASN", [BGP_STATS_ASPATH_TOTSIZE] = "Average AS-Path size (bytes)",
[BGP_STATS_MAX] = NULL, [BGP_STATS_ASN_HIGHEST] = "Highest public ASN",
[BGP_STATS_MAX] = NULL,
}; };
struct bgp_table_stats { struct bgp_table_stats {
@ -9524,11 +9518,16 @@ enum bgp_pcounts {
}; };
static const char *pcount_strs[] = { static const char *pcount_strs[] = {
[PCOUNT_ADJ_IN] = "Adj-in", [PCOUNT_DAMPED] = "Damped", [PCOUNT_ADJ_IN] = "Adj-in",
[PCOUNT_REMOVED] = "Removed", [PCOUNT_HISTORY] = "History", [PCOUNT_DAMPED] = "Damped",
[PCOUNT_STALE] = "Stale", [PCOUNT_VALID] = "Valid", [PCOUNT_REMOVED] = "Removed",
[PCOUNT_ALL] = "All RIB", [PCOUNT_COUNTED] = "PfxCt counted", [PCOUNT_HISTORY] = "History",
[PCOUNT_PFCNT] = "Useable", [PCOUNT_MAX] = NULL, [PCOUNT_STALE] = "Stale",
[PCOUNT_VALID] = "Valid",
[PCOUNT_ALL] = "All RIB",
[PCOUNT_COUNTED] = "PfxCt counted",
[PCOUNT_PFCNT] = "Useable",
[PCOUNT_MAX] = NULL,
}; };
struct peer_pcounts { struct peer_pcounts {
@ -9629,9 +9628,9 @@ static int bgp_peer_counts(struct vty *vty, struct peer *peer, afi_t afi,
pcounts.table = peer->bgp->rib[afi][safi]; pcounts.table = peer->bgp->rib[afi][safi];
/* in-place call via thread subsystem so as to record execution time /* in-place call via thread subsystem so as to record execution time
* * stats for the thread-walk (i.e. ensure this can't be blamed on * * stats for the thread-walk (i.e. ensure this can't be blamed on
* * on just vty_read()). * * on just vty_read()).
* */ * */
thread_execute(bm->master, bgp_peer_count_walker, &pcounts, 0); thread_execute(bm->master, bgp_peer_count_walker, &pcounts, 0);
if (use_json) { if (use_json) {
@ -9888,9 +9887,8 @@ static void show_adj_route(struct vty *vty, struct peer *peer, afi_t afi,
"bgpOriginatingDefaultNetwork", "bgpOriginatingDefaultNetwork",
"0.0.0.0"); "0.0.0.0");
} else { } else {
vty_out(vty, vty_out(vty, "BGP table version is %" PRIu64
"BGP table version is %" PRIu64 ", local router ID is %s\n",
", local router ID is %s\n",
table->version, inet_ntoa(bgp->router_id)); table->version, inet_ntoa(bgp->router_id));
vty_out(vty, BGP_SHOW_SCODE_HEADER); vty_out(vty, BGP_SHOW_SCODE_HEADER);
vty_out(vty, BGP_SHOW_OCODE_HEADER); vty_out(vty, BGP_SHOW_OCODE_HEADER);

View File

@ -97,8 +97,10 @@ struct bgp_info_extra {
struct in6_addr addr6; struct in6_addr addr6;
} un; /* cached un address */ } un; /* cached un address */
time_t create_time; time_t create_time;
struct prefix aux_prefix; /* AFI_L2VPN: the IP addr, struct
if family set */ prefix
aux_prefix; /* AFI_L2VPN: the IP addr,
if family set */
} import; } import;
} vnc; } vnc;

View File

@ -652,10 +652,7 @@ static route_map_result_t route_match_metric(void *rule, struct prefix *prefix,
/* Route map commands for metric matching. */ /* Route map commands for metric matching. */
struct route_map_rule_cmd route_match_metric_cmd = { struct route_map_rule_cmd route_match_metric_cmd = {
"metric", "metric", route_match_metric, route_value_compile, route_value_free,
route_match_metric,
route_value_compile,
route_value_free,
}; };
/* `match as-path ASPATH' */ /* `match as-path ASPATH' */
@ -1050,9 +1047,7 @@ static route_map_result_t route_match_tag(void *rule, struct prefix *prefix,
/* Route map commands for tag matching. */ /* Route map commands for tag matching. */
static struct route_map_rule_cmd route_match_tag_cmd = { static struct route_map_rule_cmd route_match_tag_cmd = {
"tag", "tag", route_match_tag, route_map_rule_tag_compile,
route_match_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };
@ -1197,9 +1192,7 @@ static route_map_result_t route_set_local_pref(void *rule,
/* Set local preference rule structure. */ /* Set local preference rule structure. */
struct route_map_rule_cmd route_set_local_pref_cmd = { struct route_map_rule_cmd route_set_local_pref_cmd = {
"local-preference", "local-preference", route_set_local_pref, route_value_compile,
route_set_local_pref,
route_value_compile,
route_value_free, route_value_free,
}; };
@ -1228,10 +1221,7 @@ static route_map_result_t route_set_weight(void *rule, struct prefix *prefix,
/* Set local preference rule structure. */ /* Set local preference rule structure. */
struct route_map_rule_cmd route_set_weight_cmd = { struct route_map_rule_cmd route_set_weight_cmd = {
"weight", "weight", route_set_weight, route_value_compile, route_value_free,
route_set_weight,
route_value_compile,
route_value_free,
}; };
/* `set metric METRIC' */ /* `set metric METRIC' */
@ -1263,10 +1253,7 @@ static route_map_result_t route_set_metric(void *rule, struct prefix *prefix,
/* Set metric rule structure. */ /* Set metric rule structure. */
struct route_map_rule_cmd route_set_metric_cmd = { struct route_map_rule_cmd route_set_metric_cmd = {
"metric", "metric", route_set_metric, route_value_compile, route_value_free,
route_set_metric,
route_value_compile,
route_value_free,
}; };
/* `set as-path prepend ASPATH' */ /* `set as-path prepend ASPATH' */
@ -1324,10 +1311,8 @@ static void route_set_aspath_prepend_free(void *rule)
/* Set as-path prepend rule structure. */ /* Set as-path prepend rule structure. */
struct route_map_rule_cmd route_set_aspath_prepend_cmd = { struct route_map_rule_cmd route_set_aspath_prepend_cmd = {
"as-path prepend", "as-path prepend", route_set_aspath_prepend,
route_set_aspath_prepend, route_set_aspath_prepend_compile, route_set_aspath_prepend_free,
route_set_aspath_prepend_compile,
route_set_aspath_prepend_free,
}; };
/* `set as-path exclude ASn' */ /* `set as-path exclude ASn' */
@ -1360,9 +1345,7 @@ static route_map_result_t route_set_aspath_exclude(void *rule,
/* Set ASn exlude rule structure. */ /* Set ASn exlude rule structure. */
struct route_map_rule_cmd route_set_aspath_exclude_cmd = { struct route_map_rule_cmd route_set_aspath_exclude_cmd = {
"as-path exclude", "as-path exclude", route_set_aspath_exclude, route_aspath_compile,
route_set_aspath_exclude,
route_aspath_compile,
route_aspath_free, route_aspath_free,
}; };
@ -1475,9 +1458,7 @@ static void route_set_community_free(void *rule)
/* Set community rule structure. */ /* Set community rule structure. */
struct route_map_rule_cmd route_set_community_cmd = { struct route_map_rule_cmd route_set_community_cmd = {
"community", "community", route_set_community, route_set_community_compile,
route_set_community,
route_set_community_compile,
route_set_community_free, route_set_community_free,
}; };
@ -1595,9 +1576,7 @@ static void route_set_lcommunity_free(void *rule)
/* Set community rule structure. */ /* Set community rule structure. */
struct route_map_rule_cmd route_set_lcommunity_cmd = { struct route_map_rule_cmd route_set_lcommunity_cmd = {
"large-community", "large-community", route_set_lcommunity, route_set_lcommunity_compile,
route_set_lcommunity,
route_set_lcommunity_compile,
route_set_lcommunity_free, route_set_lcommunity_free,
}; };
@ -1680,10 +1659,8 @@ static void route_set_lcommunity_delete_free(void *rule)
/* Set lcommunity rule structure. */ /* Set lcommunity rule structure. */
struct route_map_rule_cmd route_set_lcommunity_delete_cmd = { struct route_map_rule_cmd route_set_lcommunity_delete_cmd = {
"large-comm-list", "large-comm-list", route_set_lcommunity_delete,
route_set_lcommunity_delete, route_set_lcommunity_delete_compile, route_set_lcommunity_delete_free,
route_set_lcommunity_delete_compile,
route_set_lcommunity_delete_free,
}; };
@ -1766,10 +1743,8 @@ static void route_set_community_delete_free(void *rule)
/* Set community rule structure. */ /* Set community rule structure. */
struct route_map_rule_cmd route_set_community_delete_cmd = { struct route_map_rule_cmd route_set_community_delete_cmd = {
"comm-list", "comm-list", route_set_community_delete,
route_set_community_delete, route_set_community_delete_compile, route_set_community_delete_free,
route_set_community_delete_compile,
route_set_community_delete_free,
}; };
/* `set extcommunity rt COMMUNITY' */ /* `set extcommunity rt COMMUNITY' */
@ -1836,10 +1811,8 @@ static void route_set_ecommunity_free(void *rule)
/* Set community rule structure. */ /* Set community rule structure. */
struct route_map_rule_cmd route_set_ecommunity_rt_cmd = { struct route_map_rule_cmd route_set_ecommunity_rt_cmd = {
"extcommunity rt", "extcommunity rt", route_set_ecommunity,
route_set_ecommunity, route_set_ecommunity_rt_compile, route_set_ecommunity_free,
route_set_ecommunity_rt_compile,
route_set_ecommunity_free,
}; };
/* `set extcommunity soo COMMUNITY' */ /* `set extcommunity soo COMMUNITY' */
@ -1858,10 +1831,8 @@ static void *route_set_ecommunity_soo_compile(const char *arg)
/* Set community rule structure. */ /* Set community rule structure. */
struct route_map_rule_cmd route_set_ecommunity_soo_cmd = { struct route_map_rule_cmd route_set_ecommunity_soo_cmd = {
"extcommunity soo", "extcommunity soo", route_set_ecommunity,
route_set_ecommunity, route_set_ecommunity_soo_compile, route_set_ecommunity_free,
route_set_ecommunity_soo_compile,
route_set_ecommunity_free,
}; };
/* `set origin ORIGIN' */ /* `set origin ORIGIN' */
@ -1909,9 +1880,7 @@ static void route_set_origin_free(void *rule)
/* Set origin rule structure. */ /* Set origin rule structure. */
struct route_map_rule_cmd route_set_origin_cmd = { struct route_map_rule_cmd route_set_origin_cmd = {
"origin", "origin", route_set_origin, route_set_origin_compile,
route_set_origin,
route_set_origin_compile,
route_set_origin_free, route_set_origin_free,
}; };
@ -1948,10 +1917,8 @@ static void route_set_atomic_aggregate_free(void *rule)
/* Set atomic aggregate rule structure. */ /* Set atomic aggregate rule structure. */
struct route_map_rule_cmd route_set_atomic_aggregate_cmd = { struct route_map_rule_cmd route_set_atomic_aggregate_cmd = {
"atomic-aggregate", "atomic-aggregate", route_set_atomic_aggregate,
route_set_atomic_aggregate, route_set_atomic_aggregate_compile, route_set_atomic_aggregate_free,
route_set_atomic_aggregate_compile,
route_set_atomic_aggregate_free,
}; };
/* `set aggregator as AS A.B.C.D' */ /* `set aggregator as AS A.B.C.D' */
@ -2006,10 +1973,8 @@ static void route_set_aggregator_as_free(void *rule)
} }
struct route_map_rule_cmd route_set_aggregator_as_cmd = { struct route_map_rule_cmd route_set_aggregator_as_cmd = {
"aggregator as", "aggregator as", route_set_aggregator_as,
route_set_aggregator_as, route_set_aggregator_as_compile, route_set_aggregator_as_free,
route_set_aggregator_as_compile,
route_set_aggregator_as_free,
}; };
/* Set tag to object. object must be pointer to struct bgp_info */ /* Set tag to object. object must be pointer to struct bgp_info */
@ -2032,9 +1997,7 @@ static route_map_result_t route_set_tag(void *rule, struct prefix *prefix,
/* Route map commands for tag set. */ /* Route map commands for tag set. */
static struct route_map_rule_cmd route_set_tag_cmd = { static struct route_map_rule_cmd route_set_tag_cmd = {
"tag", "tag", route_set_tag, route_map_rule_tag_compile,
route_set_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };
@ -2067,9 +2030,7 @@ static route_map_result_t route_set_label_index(void *rule,
/* Route map commands for label-index set. */ /* Route map commands for label-index set. */
static struct route_map_rule_cmd route_set_label_index_cmd = { static struct route_map_rule_cmd route_set_label_index_cmd = {
"label-index", "label-index", route_set_label_index, route_value_compile,
route_set_label_index,
route_value_compile,
route_value_free, route_value_free,
}; };
@ -2596,10 +2557,8 @@ static void route_set_originator_id_free(void *rule)
/* Set originator-id rule structure. */ /* Set originator-id rule structure. */
struct route_map_rule_cmd route_set_originator_id_cmd = { struct route_map_rule_cmd route_set_originator_id_cmd = {
"originator-id", "originator-id", route_set_originator_id,
route_set_originator_id, route_set_originator_id_compile, route_set_originator_id_free,
route_set_originator_id_compile,
route_set_originator_id_free,
}; };
/* Add bgp route map rule. */ /* Add bgp route map rule. */

View File

@ -864,6 +864,8 @@ static u_char *bgp4PathAttrTable(struct variable *v, oid name[], size_t *length,
return SNMP_INTEGER(-1); return SNMP_INTEGER(-1);
break; break;
case BGP4PATHATTRBEST: /* 13 */ case BGP4PATHATTRBEST: /* 13 */
/* $FRR indent$ */
/* clang-format off */
#define BGP4_PathAttrBest_false 1 #define BGP4_PathAttrBest_false 1
#define BGP4_PathAttrBest_true 2 #define BGP4_PathAttrBest_true 2
if (CHECK_FLAG(binfo->flags, BGP_INFO_SELECTED)) if (CHECK_FLAG(binfo->flags, BGP_INFO_SELECTED))

View File

@ -1121,8 +1121,8 @@ int update_subgroup_check_merge(struct update_subgroup *subgrp,
} }
/* /*
* update_subgroup_merge_check_thread_cb * update_subgroup_merge_check_thread_cb
*/ */
static int update_subgroup_merge_check_thread_cb(struct thread *thread) static int update_subgroup_merge_check_thread_cb(struct thread *thread)
{ {
struct update_subgroup *subgrp; struct update_subgroup *subgrp;

View File

@ -267,6 +267,7 @@ struct update_subgroup {
*/ */
#define SUBGRP_DECR_STAT(subgrp, stat) SUBGRP_INCR_STAT_BY(subgrp, stat, -1) #define SUBGRP_DECR_STAT(subgrp, stat) SUBGRP_INCR_STAT_BY(subgrp, stat, -1)
typedef int (*updgrp_walkcb)(struct update_group *updgrp, void *ctx); typedef int (*updgrp_walkcb)(struct update_group *updgrp, void *ctx);
/* really a private structure */ /* really a private structure */

View File

@ -646,10 +646,9 @@ void subgroup_announce_route(struct update_subgroup *subgrp)
*/ */
onlypeer = ((SUBGRP_PCOUNT(subgrp) == 1) ? (SUBGRP_PFIRST(subgrp))->peer onlypeer = ((SUBGRP_PCOUNT(subgrp) == 1) ? (SUBGRP_PFIRST(subgrp))->peer
: NULL); : NULL);
if (onlypeer if (onlypeer && CHECK_FLAG(onlypeer->af_sflags[SUBGRP_AFI(subgrp)]
&& CHECK_FLAG(onlypeer->af_sflags[SUBGRP_AFI(subgrp)] [SUBGRP_SAFI(subgrp)],
[SUBGRP_SAFI(subgrp)], PEER_STATUS_ORF_WAIT_REFRESH))
PEER_STATUS_ORF_WAIT_REFRESH))
return; return;
if (SUBGRP_SAFI(subgrp) != SAFI_MPLS_VPN if (SUBGRP_SAFI(subgrp) != SAFI_MPLS_VPN

View File

@ -732,9 +732,8 @@ struct bpacket *subgroup_update_packet(struct update_subgroup *subgrp)
space_remaining = STREAM_CONCAT_REMAIN(s, snlri, STREAM_SIZE(s)) space_remaining = STREAM_CONCAT_REMAIN(s, snlri, STREAM_SIZE(s))
- BGP_MAX_PACKET_SIZE_OVERFLOW; - BGP_MAX_PACKET_SIZE_OVERFLOW;
space_needed = space_needed = BGP_NLRI_LENGTH + bgp_packet_mpattr_prefix_size(
BGP_NLRI_LENGTH afi, safi, &rn->p);
+ bgp_packet_mpattr_prefix_size(afi, safi, &rn->p);
/* When remaining space can't include NLRI and it's length. */ /* When remaining space can't include NLRI and it's length. */
if (space_remaining < space_needed) if (space_remaining < space_needed)
@ -778,9 +777,9 @@ struct bpacket *subgroup_update_packet(struct update_subgroup *subgrp)
space_remaining = space_remaining =
STREAM_CONCAT_REMAIN(s, snlri, STREAM_SIZE(s)) STREAM_CONCAT_REMAIN(s, snlri, STREAM_SIZE(s))
- BGP_MAX_PACKET_SIZE_OVERFLOW; - BGP_MAX_PACKET_SIZE_OVERFLOW;
space_needed = BGP_NLRI_LENGTH space_needed =
+ bgp_packet_mpattr_prefix_size( BGP_NLRI_LENGTH + bgp_packet_mpattr_prefix_size(
afi, safi, &rn->p); afi, safi, &rn->p);
/* If the attributes alone do not leave any room for /* If the attributes alone do not leave any room for
* NLRI then * NLRI then

View File

@ -242,9 +242,8 @@ int show_adj_route_vpn(struct vty *vty, struct peer *peer,
} }
if (use_json) { if (use_json) {
json_object_object_add(json, "routes", json_routes); json_object_object_add(json, "routes", json_routes);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
return CMD_SUCCESS; return CMD_SUCCESS;

View File

@ -1470,8 +1470,7 @@ DEFUN (no_bgp_maxpaths,
} }
ALIAS_HIDDEN(no_bgp_maxpaths, no_bgp_maxpaths_hidden_cmd, ALIAS_HIDDEN(no_bgp_maxpaths, no_bgp_maxpaths_hidden_cmd,
"no maximum-paths [" CMD_RANGE_STR(1, MULTIPATH_NUM) "]", "no maximum-paths [" CMD_RANGE_STR(1, MULTIPATH_NUM) "]", NO_STR
NO_STR
"Forward packets over multiple paths\n" "Forward packets over multiple paths\n"
"Number of paths\n") "Number of paths\n")
@ -6377,9 +6376,8 @@ DEFUN (show_bgp_vrfs,
json_object_int_add(json, "totalVrfs", count); json_object_int_add(json, "totalVrfs", count);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (count) if (count)
@ -6473,20 +6471,17 @@ DEFUN (show_bgp_memory,
/* Other attributes */ /* Other attributes */
if ((count = community_count())) if ((count = community_count()))
vty_out(vty, "%ld BGP community entries, using %s of memory\n", vty_out(vty, "%ld BGP community entries, using %s of memory\n",
count, count, mtype_memstr(memstrbuf, sizeof(memstrbuf),
mtype_memstr(memstrbuf, sizeof(memstrbuf), count * sizeof(struct community)));
count * sizeof(struct community)));
if ((count = mtype_stats_alloc(MTYPE_ECOMMUNITY))) if ((count = mtype_stats_alloc(MTYPE_ECOMMUNITY)))
vty_out(vty, "%ld BGP community entries, using %s of memory\n", vty_out(vty, "%ld BGP community entries, using %s of memory\n",
count, count, mtype_memstr(memstrbuf, sizeof(memstrbuf),
mtype_memstr(memstrbuf, sizeof(memstrbuf), count * sizeof(struct ecommunity)));
count * sizeof(struct ecommunity)));
if ((count = mtype_stats_alloc(MTYPE_LCOMMUNITY))) if ((count = mtype_stats_alloc(MTYPE_LCOMMUNITY)))
vty_out(vty, vty_out(vty,
"%ld BGP large-community entries, using %s of memory\n", "%ld BGP large-community entries, using %s of memory\n",
count, count, mtype_memstr(memstrbuf, sizeof(memstrbuf),
mtype_memstr(memstrbuf, sizeof(memstrbuf), count * sizeof(struct lcommunity)));
count * sizeof(struct lcommunity)));
if ((count = mtype_stats_alloc(MTYPE_CLUSTER))) if ((count = mtype_stats_alloc(MTYPE_CLUSTER)))
vty_out(vty, "%ld Cluster lists, using %s of memory\n", count, vty_out(vty, "%ld Cluster lists, using %s of memory\n", count,
@ -6515,9 +6510,8 @@ DEFUN (show_bgp_memory,
count * sizeof(struct hash_backet))); count * sizeof(struct hash_backet)));
if ((count = mtype_stats_alloc(MTYPE_BGP_REGEXP))) if ((count = mtype_stats_alloc(MTYPE_BGP_REGEXP)))
vty_out(vty, "%ld compiled regexes, using %s of memory\n", vty_out(vty, "%ld compiled regexes, using %s of memory\n",
count, count, mtype_memstr(memstrbuf, sizeof(memstrbuf),
mtype_memstr(memstrbuf, sizeof(memstrbuf), count * sizeof(regex_t)));
count * sizeof(regex_t)));
return CMD_SUCCESS; return CMD_SUCCESS;
} }
@ -6742,9 +6736,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
ents); ents);
json_object_int_add( json_object_int_add(
json, "peerGroupMemory", json, "peerGroupMemory",
ents ents * sizeof(struct
* sizeof(struct peer_group));
peer_group));
} }
if (CHECK_FLAG(bgp->af_flags[afi][safi], if (CHECK_FLAG(bgp->af_flags[afi][safi],
@ -6775,9 +6768,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
mtype_memstr( mtype_memstr(
memstrbuf, memstrbuf,
sizeof(memstrbuf), sizeof(memstrbuf),
ents ents * sizeof(struct
* sizeof(struct bgp_node)));
bgp_node)));
/* Peer related usage */ /* Peer related usage */
ents = listcount(bgp->peer); ents = listcount(bgp->peer);
@ -6787,9 +6779,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
mtype_memstr( mtype_memstr(
memstrbuf, memstrbuf,
sizeof(memstrbuf), sizeof(memstrbuf),
ents ents * sizeof(struct
* sizeof(struct peer)));
peer)));
if ((ents = listcount(bgp->group))) if ((ents = listcount(bgp->group)))
vty_out(vty, vty_out(vty,
@ -6798,9 +6789,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
mtype_memstr( mtype_memstr(
memstrbuf, memstrbuf,
sizeof(memstrbuf), sizeof(memstrbuf),
ents ents * sizeof(struct
* sizeof(struct peer_group)));
peer_group)));
if (CHECK_FLAG(bgp->af_flags[afi][safi], if (CHECK_FLAG(bgp->af_flags[afi][safi],
BGP_CONFIG_DAMPENING)) BGP_CONFIG_DAMPENING))
@ -6918,9 +6908,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
vty_out(vty, "%*s", vty_out(vty, "%*s",
max_neighbor_width - len, " "); max_neighbor_width - len, " ");
vty_out(vty, vty_out(vty, "4 %10u %7d %7d %8" PRIu64
"4 %10u %7d %7d %8" PRIu64 " %4d %4zd %8s",
" %4d %4zd %8s",
peer->as, peer->as,
peer->open_in + peer->update_in peer->open_in + peer->update_in
+ peer->keepalive_in + peer->keepalive_in
@ -6968,9 +6957,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
json_object_int_add(json, "totalPeers", count); json_object_int_add(json, "totalPeers", count);
json_object_int_add(json, "dynamicPeers", dn_count); json_object_int_add(json, "dynamicPeers", dn_count);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (count) if (count)
@ -7065,9 +7053,10 @@ static void bgp_show_summary_afi_safi(struct vty *vty, struct bgp *bgp, int afi,
} }
safi++; safi++;
if (safi == SAFI_RESERVED_4 if (safi == SAFI_RESERVED_4
|| safi == SAFI_RESERVED_5) /* handle special || safi
cases to match == SAFI_RESERVED_5) /* handle special
zebra.h */ cases to match
zebra.h */
safi++; safi++;
if (!safi_wildcard) if (!safi_wildcard)
safi = SAFI_MAX; safi = SAFI_MAX;
@ -7626,9 +7615,8 @@ static void bgp_show_peer_afi(struct vty *vty, struct peer *p, afi_t afi,
paf = peer_af_find(p, afi, safi); paf = peer_af_find(p, afi, safi);
if (paf && PAF_SUBGRP(paf)) { if (paf && PAF_SUBGRP(paf)) {
vty_out(vty, vty_out(vty, " Update group %" PRIu64
" Update group %" PRIu64 ", subgroup %" PRIu64 ", subgroup %" PRIu64 "\n",
"\n",
PAF_UPDGRP(paf)->id, PAF_SUBGRP(paf)->id); PAF_UPDGRP(paf)->id, PAF_SUBGRP(paf)->id);
vty_out(vty, " Packet Queue length %d\n", vty_out(vty, " Packet Queue length %d\n",
bpacket_queue_virtual_length(paf)); bpacket_queue_virtual_length(paf));
@ -9394,9 +9382,8 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, u_char use_json,
} else } else
vty_out(vty, vty_out(vty,
" Reduce the no. of prefix from %s, will restart in %ld seconds\n", " Reduce the no. of prefix from %s, will restart in %ld seconds\n",
p->host, p->host, thread_timer_remain_second(
thread_timer_remain_second( p->t_pmax_restart));
p->t_pmax_restart));
} else { } else {
if (use_json) if (use_json)
json_object_boolean_true_add( json_object_boolean_true_add(
@ -9636,9 +9623,8 @@ static int bgp_show_neighbor(struct vty *vty, struct bgp *bgp,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -11093,45 +11079,31 @@ int bgp_config_write_redistribute(struct vty *vty, struct bgp *bgp, afi_t afi,
/* BGP node structure. */ /* BGP node structure. */
static struct cmd_node bgp_node = { static struct cmd_node bgp_node = {
BGP_NODE, BGP_NODE, "%s(config-router)# ", 1,
"%s(config-router)# ",
1,
}; };
static struct cmd_node bgp_ipv4_unicast_node = { static struct cmd_node bgp_ipv4_unicast_node = {
BGP_IPV4_NODE, BGP_IPV4_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_ipv4_multicast_node = { static struct cmd_node bgp_ipv4_multicast_node = {
BGP_IPV4M_NODE, BGP_IPV4M_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_ipv4_labeled_unicast_node = { static struct cmd_node bgp_ipv4_labeled_unicast_node = {
BGP_IPV4L_NODE, BGP_IPV4L_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_ipv6_unicast_node = { static struct cmd_node bgp_ipv6_unicast_node = {
BGP_IPV6_NODE, BGP_IPV6_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_ipv6_multicast_node = { static struct cmd_node bgp_ipv6_multicast_node = {
BGP_IPV6M_NODE, BGP_IPV6M_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_ipv6_labeled_unicast_node = { static struct cmd_node bgp_ipv6_labeled_unicast_node = {
BGP_IPV6L_NODE, BGP_IPV6L_NODE, "%s(config-router-af)# ", 1,
"%s(config-router-af)# ",
1,
}; };
static struct cmd_node bgp_vpnv4_node = {BGP_VPNV4_NODE, static struct cmd_node bgp_vpnv4_node = {BGP_VPNV4_NODE,

View File

@ -621,12 +621,10 @@ static int zebra_read_ipv4(int command, struct zclient *zclient,
zlog_debug( zlog_debug(
"Rx IPv4 route add VRF %u %s[%d] %s/%d nexthop %s metric %u tag %" ROUTE_TAG_PRI, "Rx IPv4 route add VRF %u %s[%d] %s/%d nexthop %s metric %u tag %" ROUTE_TAG_PRI,
vrf_id, zebra_route_string(api.type), vrf_id, zebra_route_string(api.type),
api.instance, api.instance, inet_ntop(AF_INET, &p.prefix,
inet_ntop(AF_INET, &p.prefix, buf[0], buf[0], sizeof(buf[0])),
sizeof(buf[0])), p.prefixlen, inet_ntop(AF_INET, &nexthop,
p.prefixlen, buf[1], sizeof(buf[1])),
inet_ntop(AF_INET, &nexthop, buf[1],
sizeof(buf[1])),
api.metric, api.tag); api.metric, api.tag);
} }
@ -657,12 +655,10 @@ static int zebra_read_ipv4(int command, struct zclient *zclient,
"Rx IPv4 route delete VRF %u %s[%d] %s/%d " "Rx IPv4 route delete VRF %u %s[%d] %s/%d "
"nexthop %s metric %u tag %" ROUTE_TAG_PRI, "nexthop %s metric %u tag %" ROUTE_TAG_PRI,
vrf_id, zebra_route_string(api.type), vrf_id, zebra_route_string(api.type),
api.instance, api.instance, inet_ntop(AF_INET, &p.prefix,
inet_ntop(AF_INET, &p.prefix, buf[0], buf[0], sizeof(buf[0])),
sizeof(buf[0])), p.prefixlen, inet_ntop(AF_INET, &nexthop,
p.prefixlen, buf[1], sizeof(buf[1])),
inet_ntop(AF_INET, &nexthop, buf[1],
sizeof(buf[1])),
api.metric, api.tag); api.metric, api.tag);
} }
bgp_redistribute_delete(bgp, (struct prefix *)&p, api.type, bgp_redistribute_delete(bgp, (struct prefix *)&p, api.type,
@ -752,12 +748,10 @@ static int zebra_read_ipv6(int command, struct zclient *zclient,
zlog_debug( zlog_debug(
"Rx IPv6 route add VRF %u %s[%d] %s/%d nexthop %s metric %u tag %" ROUTE_TAG_PRI, "Rx IPv6 route add VRF %u %s[%d] %s/%d nexthop %s metric %u tag %" ROUTE_TAG_PRI,
vrf_id, zebra_route_string(api.type), vrf_id, zebra_route_string(api.type),
api.instance, api.instance, inet_ntop(AF_INET6, &p.prefix,
inet_ntop(AF_INET6, &p.prefix, buf[0], buf[0], sizeof(buf[0])),
sizeof(buf[0])), p.prefixlen, inet_ntop(AF_INET, &nexthop,
p.prefixlen, buf[1], sizeof(buf[1])),
inet_ntop(AF_INET, &nexthop, buf[1],
sizeof(buf[1])),
api.metric, api.tag); api.metric, api.tag);
} }
@ -787,12 +781,10 @@ static int zebra_read_ipv6(int command, struct zclient *zclient,
"Rx IPv6 route delete VRF %u %s[%d] %s/%d " "Rx IPv6 route delete VRF %u %s[%d] %s/%d "
"nexthop %s metric %u tag %" ROUTE_TAG_PRI, "nexthop %s metric %u tag %" ROUTE_TAG_PRI,
vrf_id, zebra_route_string(api.type), vrf_id, zebra_route_string(api.type),
api.instance, api.instance, inet_ntop(AF_INET6, &p.prefix,
inet_ntop(AF_INET6, &p.prefix, buf[0], buf[0], sizeof(buf[0])),
sizeof(buf[0])), p.prefixlen, inet_ntop(AF_INET6, &nexthop,
p.prefixlen, buf[1], sizeof(buf[1])),
inet_ntop(AF_INET6, &nexthop, buf[1],
sizeof(buf[1])),
api.metric, api.tag); api.metric, api.tag);
} }
bgp_redistribute_delete(bgp, (struct prefix *)&p, api.type, bgp_redistribute_delete(bgp, (struct prefix *)&p, api.type,
@ -1324,9 +1316,8 @@ void bgp_zebra_announce(struct bgp_node *rn, struct prefix *p,
"Tx IPv4 route %s VRF %u %s/%d metric %u tag %" ROUTE_TAG_PRI "Tx IPv4 route %s VRF %u %s/%d metric %u tag %" ROUTE_TAG_PRI
" count %d", " count %d",
(valid_nh_count ? "add" : "delete"), (valid_nh_count ? "add" : "delete"),
bgp->vrf_id, bgp->vrf_id, inet_ntop(AF_INET, &p->u.prefix4,
inet_ntop(AF_INET, &p->u.prefix4, buf[0], buf[0], sizeof(buf[0])),
sizeof(buf[0])),
p->prefixlen, api.metric, api.tag, p->prefixlen, api.metric, api.tag,
api.nexthop_num); api.nexthop_num);
for (i = 0; i < api.nexthop_num; i++) { for (i = 0; i < api.nexthop_num; i++) {

View File

@ -3886,9 +3886,8 @@ static int peer_af_flag_modify(struct peer *peer, afi_t afi, safi_t safi,
} }
/* Track if addpath TX is in use */ /* Track if addpath TX is in use */
if (flag if (flag & (PEER_FLAG_ADDPATH_TX_ALL_PATHS
& (PEER_FLAG_ADDPATH_TX_ALL_PATHS | PEER_FLAG_ADDPATH_TX_BESTPATH_PER_AS)) {
| PEER_FLAG_ADDPATH_TX_BESTPATH_PER_AS)) {
bgp = peer->bgp; bgp = peer->bgp;
addpath_tx_used = 0; addpath_tx_used = 0;
@ -6758,9 +6757,8 @@ static void bgp_config_write_peer_af(struct vty *vty, struct bgp *bgp,
} else { } else {
if (!peer_af_flag_check(peer, afi, safi, if (!peer_af_flag_check(peer, afi, safi,
PEER_FLAG_SEND_COMMUNITY) PEER_FLAG_SEND_COMMUNITY)
&& (!g_peer && (!g_peer || peer_af_flag_check(g_peer, afi, safi,
|| peer_af_flag_check(g_peer, afi, safi, PEER_FLAG_SEND_COMMUNITY))
PEER_FLAG_SEND_COMMUNITY))
&& !peer_af_flag_check(peer, afi, safi, && !peer_af_flag_check(peer, afi, safi,
PEER_FLAG_SEND_EXT_COMMUNITY) PEER_FLAG_SEND_EXT_COMMUNITY)
&& (!g_peer && (!g_peer
@ -6768,10 +6766,9 @@ static void bgp_config_write_peer_af(struct vty *vty, struct bgp *bgp,
PEER_FLAG_SEND_EXT_COMMUNITY)) PEER_FLAG_SEND_EXT_COMMUNITY))
&& !peer_af_flag_check(peer, afi, safi, && !peer_af_flag_check(peer, afi, safi,
PEER_FLAG_SEND_LARGE_COMMUNITY) PEER_FLAG_SEND_LARGE_COMMUNITY)
&& (!g_peer && (!g_peer || peer_af_flag_check(
|| peer_af_flag_check( g_peer, afi, safi,
g_peer, afi, safi, PEER_FLAG_SEND_LARGE_COMMUNITY))) {
PEER_FLAG_SEND_LARGE_COMMUNITY))) {
afi_header_vty_out( afi_header_vty_out(
vty, afi, safi, write, vty, afi, safi, write,
" no neighbor %s send-community all\n", addr); " no neighbor %s send-community all\n", addr);
@ -6802,10 +6799,9 @@ static void bgp_config_write_peer_af(struct vty *vty, struct bgp *bgp,
if (!peer_af_flag_check(peer, afi, safi, if (!peer_af_flag_check(peer, afi, safi,
PEER_FLAG_SEND_COMMUNITY) PEER_FLAG_SEND_COMMUNITY)
&& (!g_peer && (!g_peer || peer_af_flag_check(
|| peer_af_flag_check( g_peer, afi, safi,
g_peer, afi, safi, PEER_FLAG_SEND_COMMUNITY))) {
PEER_FLAG_SEND_COMMUNITY))) {
afi_header_vty_out( afi_header_vty_out(
vty, afi, safi, write, vty, afi, safi, write,
" no neighbor %s send-community\n", " no neighbor %s send-community\n",

View File

@ -251,14 +251,13 @@ struct bgp {
/* $FRR indent$ */ /* $FRR indent$ */
/* clang-format off */ /* clang-format off */
#define BGP_MAXMED_ADMIN_UNCONFIGURED 0 /* Off by default */ #define BGP_MAXMED_ADMIN_UNCONFIGURED 0 /* Off by default */
u_int32_t maxmed_admin_value; /* Max-med value when administrative in on u_int32_t
maxmed_admin_value; /* Max-med value when administrative in on
*/ */
/* $FRR indent$ */
/* clang-format off */
#define BGP_MAXMED_VALUE_DEFAULT 4294967294 /* Maximum by default */ #define BGP_MAXMED_VALUE_DEFAULT 4294967294 /* Maximum by default */
u_char maxmed_active; /* 1/0 if max-med is active or not */ u_char maxmed_active; /* 1/0 if max-med is active or not */
u_int32_t maxmed_value; /* Max-med value when its active */ u_int32_t maxmed_value; /* Max-med value when its active */
/* BGP update delay on startup */ /* BGP update delay on startup */
struct thread *t_update_delay; struct thread *t_update_delay;

View File

@ -503,8 +503,9 @@ DEFUN (vnc_defaults_responselifetime,
} else { } else {
rspint = strtoul(argv[1]->arg, NULL, 10); rspint = strtoul(argv[1]->arg, NULL, 10);
if (rspint > INT32_MAX) if (rspint > INT32_MAX)
rspint = INT32_MAX; /* is really an int, not an unsigned rspint =
int */ INT32_MAX; /* is really an int, not an unsigned
int */
} }
bgp->rfapi_cfg->default_response_lifetime = rspint; bgp->rfapi_cfg->default_response_lifetime = rspint;
@ -1673,9 +1674,8 @@ DEFUN (vnc_nve_group_export_no_prefixlist,
} }
if (argv[2]->arg[0] == 'b') { if (argv[2]->arg[0] == 'b') {
if (((argc > 5) if (((argc > 5) && strmatch(argv[5]->text,
&& strmatch(argv[5]->text, rfg->plist_export_bgp_name[afi]))
rfg->plist_export_bgp_name[afi]))
|| (argc <= 5)) { || (argc <= 5)) {
if (rfg->plist_export_bgp_name[afi]) if (rfg->plist_export_bgp_name[afi])
@ -1686,9 +1686,8 @@ DEFUN (vnc_nve_group_export_no_prefixlist,
vnc_direct_bgp_reexport_group_afi(bgp, rfg, afi); vnc_direct_bgp_reexport_group_afi(bgp, rfg, afi);
} }
} else { } else {
if (((argc > 5) if (((argc > 5) && strmatch(argv[5]->text,
&& strmatch(argv[5]->text, rfg->plist_export_zebra_name[afi]))
rfg->plist_export_zebra_name[afi]))
|| (argc <= 5)) { || (argc <= 5)) {
if (rfg->plist_export_zebra_name[afi]) if (rfg->plist_export_zebra_name[afi])
free(rfg->plist_export_zebra_name[afi]); free(rfg->plist_export_zebra_name[afi]);
@ -1792,9 +1791,8 @@ DEFUN (vnc_nve_group_export_no_routemap,
vnc_direct_bgp_reexport_group_afi(bgp, rfg, AFI_IP6); vnc_direct_bgp_reexport_group_afi(bgp, rfg, AFI_IP6);
} }
} else { } else {
if (((argc > 4) if (((argc > 4) && strmatch(argv[4]->text,
&& strmatch(argv[4]->text, rfg->routemap_export_zebra_name))
rfg->routemap_export_zebra_name))
|| (argc <= 4)) { || (argc <= 4)) {
if (rfg->routemap_export_zebra_name) if (rfg->routemap_export_zebra_name)
free(rfg->routemap_export_zebra_name); free(rfg->routemap_export_zebra_name);
@ -2447,9 +2445,8 @@ bgp_rfapi_delete_named_nve_group(struct vty *vty, /* NULL = no output */
*/ */
for (ALL_LIST_ELEMENTS_RO(bgp->rfapi_cfg->rfg_export_direct_bgp_l, node, for (ALL_LIST_ELEMENTS_RO(bgp->rfapi_cfg->rfg_export_direct_bgp_l, node,
rfgn)) { rfgn)) {
if (rfg_name == NULL if (rfg_name == NULL || (type == RFAPI_GROUP_CFG_NVE
|| (type == RFAPI_GROUP_CFG_NVE && !strcmp(rfgn->name, rfg_name))) {
&& !strcmp(rfgn->name, rfg_name))) {
rfgn->rfg = NULL; rfgn->rfg = NULL;
/* remove exported routes from this group */ /* remove exported routes from this group */
vnc_direct_bgp_del_group(bgp, rfg); vnc_direct_bgp_del_group(bgp, rfg);
@ -2463,9 +2460,8 @@ bgp_rfapi_delete_named_nve_group(struct vty *vty, /* NULL = no output */
for (ALL_LIST_ELEMENTS_RO(bgp->rfapi_cfg->rfg_export_zebra_l, node, for (ALL_LIST_ELEMENTS_RO(bgp->rfapi_cfg->rfg_export_zebra_l, node,
rfgn)) { rfgn)) {
if (rfg_name == NULL if (rfg_name == NULL || (type == RFAPI_GROUP_CFG_NVE
|| (type == RFAPI_GROUP_CFG_NVE && !strcmp(rfgn->name, rfg_name))) {
&& !strcmp(rfgn->name, rfg_name))) {
rfgn->rfg = NULL; rfgn->rfg = NULL;
/* remove exported routes from this group */ /* remove exported routes from this group */
vnc_zebra_del_group(bgp, rfg); vnc_zebra_del_group(bgp, rfg);

View File

@ -2603,9 +2603,8 @@ int rfapi_register(void *handle, struct rfapi_ip_prefix *prefix,
ZEBRA_ROUTE_BGP, BGP_ROUTE_RFP, NULL, ZEBRA_ROUTE_BGP, BGP_ROUTE_RFP, NULL,
action == RFAPI_REGISTER_KILL); action == RFAPI_REGISTER_KILL);
if (0 if (0 == rfapiApDelete(bgp, rfd, &p, pfx_mac, &prd,
== rfapiApDelete(bgp, rfd, &p, pfx_mac, &prd, &adv_tunnel)) {
&adv_tunnel)) {
if (adv_tunnel) if (adv_tunnel)
rfapiTunnelRouteAnnounce( rfapiTunnelRouteAnnounce(
bgp, rfd, &rfd->max_prefix_lifetime); bgp, rfd, &rfd->max_prefix_lifetime);

View File

@ -1,22 +1,22 @@
/* /*
* *
* Copyright 2009-2016, LabN Consulting, L.L.C. * Copyright 2009-2016, LabN Consulting, L.L.C.
* *
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 * as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version. * of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along * You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software * with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
/* /*
* File: rfapi_import.c * File: rfapi_import.c
@ -1086,8 +1086,9 @@ int rfapiEcommunityGetEthernetTag(struct ecommunity *ecom, uint16_t *tag_id)
} else if (encode == ECOMMUNITY_ENCODE_AS) { } else if (encode == ECOMMUNITY_ENCODE_AS) {
as = (*p++ << 8); as = (*p++ << 8);
as |= (*p++); as |= (*p++);
p += 2; /* skip next two, tag/vid p +=
always in lowest bytes */ 2; /* skip next two, tag/vid
always in lowest bytes */
} }
if (as == bgp->as) { if (as == bgp->as) {
*tag_id = *p++ << 8; *tag_id = *p++ << 8;
@ -2010,9 +2011,8 @@ static void rfapiBgpInfoAttachSorted(struct route_node *rn,
for (prev = NULL, next = rn->info; next; for (prev = NULL, next = rn->info; next;
prev = next, next = next->next) { prev = next, next = next->next) {
if (!bgp if (!bgp || (!CHECK_FLAG(info_new->flags, BGP_INFO_REMOVED)
|| (!CHECK_FLAG(info_new->flags, BGP_INFO_REMOVED) && CHECK_FLAG(next->flags, BGP_INFO_REMOVED))
&& CHECK_FLAG(next->flags, BGP_INFO_REMOVED))
|| bgp_info_cmp_compatible(bgp, info_new, next, pfx_buf, || bgp_info_cmp_compatible(bgp, info_new, next, pfx_buf,
afi, safi) afi, safi)
== -1) { /* -1 if 1st is better */ == -1) { /* -1 if 1st is better */
@ -3554,10 +3554,9 @@ void rfapiBgpInfoFilteredImportVPN(
vnc_zlog_debug_verbose( vnc_zlog_debug_verbose(
"%s: withdrawing at prefix %s/%d%s", "%s: withdrawing at prefix %s/%d%s",
__func__, __func__, rfapi_ntop(rn->p.family,
rfapi_ntop(rn->p.family, &rn->p.u.prefix,
&rn->p.u.prefix, buf, buf, BUFSIZ),
BUFSIZ),
rn->p.prefixlen, rn->p.prefixlen,
(washolddown (washolddown
? " (already being withdrawn)" ? " (already being withdrawn)"
@ -4024,7 +4023,7 @@ void rfapiProcessWithdraw(struct peer *peer, void *rfd, struct prefix *p,
p, /* aux_prefix: IP */ p, /* aux_prefix: IP */
AFI_L2VPN, prd, attr, type, 0, AFI_L2VPN, prd, attr, type, 0,
NULL); /* sub_type & label unused for withdraw NULL); /* sub_type & label unused for withdraw
*/ */
} }
} }
@ -4311,8 +4310,9 @@ void bgp_rfapi_destroy(struct bgp *bgp, struct rfapi *h)
void *cursor; void *cursor;
int rc; int rc;
for (cursor = NULL, rc = skiplist_next(h->import_mac, NULL, for (cursor = NULL,
(void **)&it, &cursor); rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor);
!rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it, !rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor)) { &cursor)) {
@ -4711,8 +4711,9 @@ void rfapiDeleteRemotePrefixes(struct prefix *un, struct prefix *vn,
void *cursor = NULL; void *cursor = NULL;
int rc; int rc;
for (cursor = NULL, rc = skiplist_next(h->import_mac, NULL, for (cursor = NULL,
(void **)&it, &cursor); rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor);
!rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it, !rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor)) { &cursor)) {
@ -4805,8 +4806,9 @@ void rfapiCountAllItRoutes(int *pALRcount, /* active local routes */
int rc; int rc;
if (h->import_mac) { if (h->import_mac) {
for (cursor = NULL, rc = skiplist_next(h->import_mac, NULL, for (cursor = NULL,
(void **)&it, &cursor); rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor);
!rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it, !rc; rc = skiplist_next(h->import_mac, NULL, (void **)&it,
&cursor)) { &cursor)) {

View File

@ -1339,11 +1339,10 @@ struct route_node *rfapiMonitorEthAdd(struct bgp *bgp,
{ {
char buf[BUFSIZ]; char buf[BUFSIZ];
vnc_zlog_debug_verbose("%s: LNI=%d: rfd=%p, pfx=%s", __func__, vnc_zlog_debug_verbose(
logical_net_id, rfd, "%s: LNI=%d: rfd=%p, pfx=%s", __func__, logical_net_id,
rfapi_ntop(pfx_mac_buf.family, rfd, rfapi_ntop(pfx_mac_buf.family, pfx_mac_buf.u.val,
pfx_mac_buf.u.val, buf, buf, BUFSIZ));
BUFSIZ));
} }

View File

@ -527,11 +527,11 @@ void rfapiRibClear(struct rfapi_descriptor *rfd)
struct rfapi_info *ri; struct rfapi_info *ri;
while (0 while (0 == skiplist_first(
== skiplist_first( (struct skiplist *)
(struct skiplist *) rn->info,
rn->info, NULL,
NULL, (void **)&ri)) { (void **)&ri)) {
rfapi_info_free(ri); rfapi_info_free(ri);
skiplist_delete_first( skiplist_delete_first(
@ -2449,7 +2449,7 @@ void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,
#else #else
"Remaining" "Remaining"
#endif #endif
); );
} }
if (!printednve) { if (!printednve) {
char str_vn[BUFSIZ]; char str_vn[BUFSIZ];

View File

@ -2009,7 +2009,7 @@ void vnc_import_bgp_exterior_del_route(
bgp_info_unlock(info); bgp_info_unlock(info);
route_unlock_node( route_unlock_node(
rn); /* sl entry rn); /* sl entry
*/ */
} }
if (skiplist_empty( if (skiplist_empty(
RFAPI_MONITOR_EXTERIOR( RFAPI_MONITOR_EXTERIOR(

View File

@ -375,9 +375,8 @@ static int vnc_zebra_read_ipv4(int command, struct zclient *zclient,
__func__, zebra_route_string(api.type), __func__, zebra_route_string(api.type),
inet_ntop(AF_INET, &p.prefix, buf[0], inet_ntop(AF_INET, &p.prefix, buf[0],
sizeof(buf[0])), sizeof(buf[0])),
p.prefixlen, p.prefixlen, inet_ntop(AF_INET, &nexthop,
inet_ntop(AF_INET, &nexthop, buf[1], buf[1], sizeof(buf[1])),
sizeof(buf[1])),
api.metric); api.metric);
} }
vnc_redistribute_add((struct prefix *)&p, &nexthop, api.metric, vnc_redistribute_add((struct prefix *)&p, &nexthop, api.metric,
@ -391,9 +390,8 @@ static int vnc_zebra_read_ipv4(int command, struct zclient *zclient,
__func__, zebra_route_string(api.type), __func__, zebra_route_string(api.type),
inet_ntop(AF_INET, &p.prefix, buf[0], inet_ntop(AF_INET, &p.prefix, buf[0],
sizeof(buf[0])), sizeof(buf[0])),
p.prefixlen, p.prefixlen, inet_ntop(AF_INET, &nexthop,
inet_ntop(AF_INET, &nexthop, buf[1], buf[1], sizeof(buf[1])),
sizeof(buf[1])),
api.metric); api.metric);
} }
vnc_redistribute_delete((struct prefix *)&p, api.type); vnc_redistribute_delete((struct prefix *)&p, api.type);

View File

@ -552,9 +552,8 @@ struct eigrp_interface *eigrp_if_lookup_recv_if(struct eigrp *eigrp,
if (prefix_match(CONNECTED_PREFIX(ei->connected), if (prefix_match(CONNECTED_PREFIX(ei->connected),
(struct prefix *)&addr)) { (struct prefix *)&addr)) {
if ((match == NULL) if ((match == NULL) || (match->address->prefixlen
|| (match->address->prefixlen < ei->address->prefixlen))
< ei->address->prefixlen))
match = ei; match = ei;
} }
} }

View File

@ -68,9 +68,7 @@
/* eigprd privileges */ /* eigprd privileges */
zebra_capabilities_t _caps_p[] = { zebra_capabilities_t _caps_p[] = {
ZCAP_NET_RAW, ZCAP_NET_RAW, ZCAP_BIND, ZCAP_NET_ADMIN,
ZCAP_BIND,
ZCAP_NET_ADMIN,
}; };
struct zebra_privs_t eigrpd_privs = { struct zebra_privs_t eigrpd_privs = {

View File

@ -134,9 +134,8 @@ int eigrp_make_md5_digest(struct eigrp_interface *ei, struct stream *s,
MD5Update(&ctx, zeropad, 16 - strlen(key->string)); MD5Update(&ctx, zeropad, 16 - strlen(key->string));
if (backup_end > (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE)) { if (backup_end > (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE)) {
MD5Update(&ctx, MD5Update(&ctx,
ibuf ibuf + (EIGRP_HEADER_LEN
+ (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE),
+ EIGRP_AUTH_MD5_TLV_SIZE),
backup_end - 20 backup_end - 20
- (EIGRP_HEADER_LEN - (EIGRP_HEADER_LEN
+ EIGRP_AUTH_MD5_TLV_SIZE)); + EIGRP_AUTH_MD5_TLV_SIZE));
@ -209,9 +208,8 @@ int eigrp_check_md5_digest(struct stream *s,
MD5Update(&ctx, zeropad, 16 - strlen(key->string)); MD5Update(&ctx, zeropad, 16 - strlen(key->string));
if (backup_end > (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE)) { if (backup_end > (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE)) {
MD5Update(&ctx, MD5Update(&ctx,
ibuf ibuf + (EIGRP_HEADER_LEN
+ (EIGRP_HEADER_LEN + EIGRP_AUTH_MD5_TLV_SIZE),
+ EIGRP_AUTH_MD5_TLV_SIZE),
backup_end - 20 backup_end - 20
- (EIGRP_HEADER_LEN - (EIGRP_HEADER_LEN
+ EIGRP_AUTH_MD5_TLV_SIZE)); + EIGRP_AUTH_MD5_TLV_SIZE));
@ -328,9 +326,9 @@ int eigrp_write(struct thread *thread)
struct listnode *node; struct listnode *node;
#ifdef WANT_EIGRP_WRITE_FRAGMENT #ifdef WANT_EIGRP_WRITE_FRAGMENT
static u_int16_t ipid = 0; static u_int16_t ipid = 0;
#endif /* WANT_EIGRP_WRITE_FRAGMENT */ #endif /* WANT_EIGRP_WRITE_FRAGMENT */
/* $FRR indent$ */ /* $FRR indent$ */
/* clang-format off */ /* clang-format off */
#define EIGRP_WRITE_IPHL_SHIFT 2 #define EIGRP_WRITE_IPHL_SHIFT 2
eigrp->t_write = NULL; eigrp->t_write = NULL;

View File

@ -644,9 +644,7 @@ static void route_set_metric_free(void *rule)
/* Set metric rule structure. */ /* Set metric rule structure. */
static struct route_map_rule_cmd route_set_metric_cmd = { static struct route_map_rule_cmd route_set_metric_cmd = {
"metric", "metric", route_set_metric, route_set_metric_compile,
route_set_metric,
route_set_metric_compile,
route_set_metric_free, route_set_metric_free,
}; };
@ -778,8 +776,7 @@ DEFUN (no_match_metric,
} }
ALIAS(no_match_metric, no_match_metric_val_cmd, ALIAS(no_match_metric, no_match_metric_val_cmd,
"no match metric <0-4294967295>", "no match metric <0-4294967295>", NO_STR MATCH_STR
NO_STR MATCH_STR
"Match metric of route\n" "Match metric of route\n"
"Metric value\n") "Metric value\n")
@ -842,8 +839,7 @@ DEFUN (no_match_ip_next_hop,
} }
ALIAS(no_match_ip_next_hop, no_match_ip_next_hop_val_cmd, ALIAS(no_match_ip_next_hop, no_match_ip_next_hop_val_cmd,
"no match ip next-hop (<1-199>|<1300-2699>|WORD)", "no match ip next-hop (<1-199>|<1300-2699>|WORD)", NO_STR MATCH_STR IP_STR
NO_STR MATCH_STR IP_STR
"Match next-hop address of route\n" "Match next-hop address of route\n"
"IP access-list number\n" "IP access-list number\n"
"IP access-list number (expanded range)\n" "IP access-list number (expanded range)\n"
@ -881,8 +877,7 @@ DEFUN (no_match_ip_next_hop_prefix_list,
ALIAS(no_match_ip_next_hop_prefix_list, ALIAS(no_match_ip_next_hop_prefix_list,
no_match_ip_next_hop_prefix_list_val_cmd, no_match_ip_next_hop_prefix_list_val_cmd,
"no match ip next-hop prefix-list WORD", "no match ip next-hop prefix-list WORD", NO_STR MATCH_STR IP_STR
NO_STR MATCH_STR IP_STR
"Match next-hop address of route\n" "Match next-hop address of route\n"
"Match entries of prefix-lists\n" "Match entries of prefix-lists\n"
"IP prefix-list name\n") "IP prefix-list name\n")
@ -916,8 +911,7 @@ DEFUN (no_match_ip_address,
} }
ALIAS(no_match_ip_address, no_match_ip_address_val_cmd, ALIAS(no_match_ip_address, no_match_ip_address_val_cmd,
"no match ip address (<1-199>|<1300-2699>|WORD)", "no match ip address (<1-199>|<1300-2699>|WORD)", NO_STR MATCH_STR IP_STR
NO_STR MATCH_STR IP_STR
"Match address of route\n" "Match address of route\n"
"IP access-list number\n" "IP access-list number\n"
"IP access-list number (expanded range)\n" "IP access-list number (expanded range)\n"
@ -954,8 +948,7 @@ DEFUN (no_match_ip_address_prefix_list,
} }
ALIAS(no_match_ip_address_prefix_list, no_match_ip_address_prefix_list_val_cmd, ALIAS(no_match_ip_address_prefix_list, no_match_ip_address_prefix_list_val_cmd,
"no match ip address prefix-list WORD", "no match ip address prefix-list WORD", NO_STR MATCH_STR IP_STR
NO_STR MATCH_STR IP_STR
"Match address of route\n" "Match address of route\n"
"Match entries of prefix-lists\n" "Match entries of prefix-lists\n"
"IP prefix-list name\n") "IP prefix-list name\n")
@ -1000,8 +993,7 @@ DEFUN (set_metric,
return eigrp_route_set_add(vty, vty->index, "metric", argv[0]); return eigrp_route_set_add(vty, vty->index, "metric", argv[0]);
} }
ALIAS(set_metric, set_metric_addsub_cmd, "set metric <+/-metric>", ALIAS(set_metric, set_metric_addsub_cmd, "set metric <+/-metric>", SET_STR
SET_STR
"Metric value for destination routing protocol\n" "Metric value for destination routing protocol\n"
"Add or subtract metric\n") "Add or subtract metric\n")
@ -1019,8 +1011,7 @@ DEFUN (no_set_metric,
} }
ALIAS(no_set_metric, no_set_metric_val_cmd, ALIAS(no_set_metric, no_set_metric_val_cmd,
"no set metric (<0-4294967295>|<+/-metric>)", "no set metric (<0-4294967295>|<+/-metric>)", NO_STR SET_STR
NO_STR SET_STR
"Metric value for destination routing protocol\n" "Metric value for destination routing protocol\n"
"Metric value\n" "Metric value\n"
"Add or subtract metric\n") "Add or subtract metric\n")
@ -1061,8 +1052,7 @@ DEFUN (no_set_ip_nexthop,
} }
ALIAS(no_set_ip_nexthop, no_set_ip_nexthop_val_cmd, ALIAS(no_set_ip_nexthop, no_set_ip_nexthop_val_cmd,
"no set ip next-hop A.B.C.D", "no set ip next-hop A.B.C.D", NO_STR SET_STR IP_STR
NO_STR SET_STR IP_STR
"Next hop address\n" "Next hop address\n"
"IP address of next hop\n") "IP address of next hop\n")
@ -1089,8 +1079,7 @@ DEFUN (no_set_tag,
return eigrp_route_set_delete(vty, vty->index, "tag", argv[0]); return eigrp_route_set_delete(vty, vty->index, "tag", argv[0]);
} }
ALIAS(no_set_tag, no_set_tag_val_cmd, "no set tag <0-65535>", ALIAS(no_set_tag, no_set_tag_val_cmd, "no set tag <0-65535>", NO_STR SET_STR
NO_STR SET_STR
"Tag value for routing protocol\n" "Tag value for routing protocol\n"
"Tag value\n") "Tag value\n")

View File

@ -104,8 +104,9 @@ struct eigrp {
uint64_t serno; /* Global serial number counter for topology entry uint64_t serno; /* Global serial number counter for topology entry
changes*/ changes*/
uint64_t serno_last_update; /* Highest serial number of information send uint64_t
by last update*/ serno_last_update; /* Highest serial number of information send
by last update*/
struct list *topology_changes_internalIPV4; struct list *topology_changes_internalIPV4;
struct list *topology_changes_externalIPV4; struct list *topology_changes_externalIPV4;

View File

@ -771,8 +771,8 @@ void eigrp_update_send_all(struct eigrp *eigrp,
/** /**
* @fn eigrp_update_send_GR_part * @fn eigrp_update_send_GR_part
* *
* @param[in] nbr contains neighbor who would receive * @param[in] nbr contains neighbor who would receive Graceful
* Graceful restart * restart
* *
* @return void * @return void
* *
@ -1034,8 +1034,8 @@ int eigrp_update_send_GR_thread(struct thread *thread)
/** /**
* @fn eigrp_update_send_GR * @fn eigrp_update_send_GR
* *
* @param[in] nbr Neighbor who would receive * @param[in] nbr Neighbor who would receive Graceful
* Graceful restart * restart
* @param[in] gr_type Who executed Graceful restart * @param[in] gr_type Who executed Graceful restart
* @param[in] vty Virtual terminal for log output * @param[in] vty Virtual terminal for log output
* *
@ -1094,8 +1094,8 @@ void eigrp_update_send_GR(struct eigrp_neighbor *nbr, enum GR_type gr_type,
/** /**
* @fn eigrp_update_send_interface_GR * @fn eigrp_update_send_interface_GR
* *
* @param[in] ei Interface to neighbors of which the * @param[in] ei Interface to neighbors of which the GR
* GR is sent * is sent
* @param[in] gr_type Who executed Graceful restart * @param[in] gr_type Who executed Graceful restart
* @param[in] vty Virtual terminal for log output * @param[in] vty Virtual terminal for log output
* *

View File

@ -441,7 +441,7 @@ dnode_t *dict_lookup(dict_t *dict, const void *key)
root = root->right; root = root->right;
else { else {
if (!dict->dupes) { /* no duplicates, return match if (!dict->dupes) { /* no duplicates, return match
*/ */
return root; return root;
} else { /* could be dupes, find leftmost one */ } else { /* could be dupes, find leftmost one */
do { do {

View File

@ -446,10 +446,9 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
adj->dis_record[ISIS_LEVELS + level - 1] adj->dis_record[ISIS_LEVELS + level - 1]
.dis), .dis),
adj->dischanges[level - 1], adj->dischanges[level - 1],
time2string(now time2string(now - (adj->dis_record[ISIS_LEVELS
- (adj->dis_record[ISIS_LEVELS + level - 1]
+ level - 1] .last_dis_change)));
.last_dis_change)));
} }
vty_out(vty, "\n"); vty_out(vty, "\n");

View File

@ -1270,9 +1270,7 @@ int isis_circuit_passwd_hmac_md5_set(struct isis_circuit *circuit,
passwd); passwd);
} }
struct cmd_node interface_node = { struct cmd_node interface_node = {
INTERFACE_NODE, INTERFACE_NODE, "%s(config-if)# ", 1,
"%s(config-if)# ",
1,
}; };
int isis_circuit_circ_type_set(struct isis_circuit *circuit, int circ_type) int isis_circuit_circ_type_set(struct isis_circuit *circuit, int circ_type)

View File

@ -838,30 +838,26 @@ static void lsp_print_mt_ipv6_reach(struct list *list, struct vty *vty,
if (mtid == ISIS_MT_IPV4_UNICAST) { if (mtid == ISIS_MT_IPV4_UNICAST) {
if ((ipv6_reach->control_info & CTRL_INFO_DISTRIBUTION) if ((ipv6_reach->control_info & CTRL_INFO_DISTRIBUTION)
== DISTRIBUTION_INTERNAL) == DISTRIBUTION_INTERNAL)
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv6-Internal : %s/%d\n",
" IPv6-Internal : %s/%d\n",
ntohl(ipv6_reach->metric), buff, ntohl(ipv6_reach->metric), buff,
ipv6_reach->prefix_len); ipv6_reach->prefix_len);
else else
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv6-External : %s/%d\n",
" IPv6-External : %s/%d\n",
ntohl(ipv6_reach->metric), buff, ntohl(ipv6_reach->metric), buff,
ipv6_reach->prefix_len); ipv6_reach->prefix_len);
} else { } else {
if ((ipv6_reach->control_info & CTRL_INFO_DISTRIBUTION) if ((ipv6_reach->control_info & CTRL_INFO_DISTRIBUTION)
== DISTRIBUTION_INTERNAL) == DISTRIBUTION_INTERNAL)
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv6-MT-Int : %s/%d %s\n",
" IPv6-MT-Int : %s/%d %s\n",
ntohl(ipv6_reach->metric), buff, ntohl(ipv6_reach->metric), buff,
ipv6_reach->prefix_len, ipv6_reach->prefix_len,
isis_mtid2str(mtid)); isis_mtid2str(mtid));
else else
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv6-MT-Ext : %s/%d %s\n",
" IPv6-MT-Ext : %s/%d %s\n",
ntohl(ipv6_reach->metric), buff, ntohl(ipv6_reach->metric), buff,
ipv6_reach->prefix_len, ipv6_reach->prefix_len,
isis_mtid2str(mtid)); isis_mtid2str(mtid));
@ -879,9 +875,8 @@ static void lsp_print_mt_ipv4_reach(struct list *list, struct vty *vty,
if (mtid == ISIS_MT_IPV4_UNICAST) { if (mtid == ISIS_MT_IPV4_UNICAST) {
/* FIXME: There should be better way to output this /* FIXME: There should be better way to output this
* stuff. */ * stuff. */
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv4-Extended : %s/%d\n",
" IPv4-Extended : %s/%d\n",
ntohl(te_ipv4_reach->te_metric), ntohl(te_ipv4_reach->te_metric),
inet_ntoa(newprefix2inaddr( inet_ntoa(newprefix2inaddr(
&te_ipv4_reach->prefix_start, &te_ipv4_reach->prefix_start,
@ -890,9 +885,8 @@ static void lsp_print_mt_ipv4_reach(struct list *list, struct vty *vty,
} else { } else {
/* FIXME: There should be better way to output this /* FIXME: There should be better way to output this
* stuff. */ * stuff. */
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu32
" Metric : %-8" PRIu32 " IPv4-MT : %s/%d %s\n",
" IPv4-MT : %s/%d %s\n",
ntohl(te_ipv4_reach->te_metric), ntohl(te_ipv4_reach->te_metric),
inet_ntoa(newprefix2inaddr( inet_ntoa(newprefix2inaddr(
&te_ipv4_reach->prefix_start, &te_ipv4_reach->prefix_start,
@ -993,9 +987,8 @@ void lsp_print_detail(struct isis_lsp *lsp, struct vty *vty, char dynhost)
for (ALL_LIST_ELEMENTS_RO(lsp->tlv_data.is_neighs, lnode, for (ALL_LIST_ELEMENTS_RO(lsp->tlv_data.is_neighs, lnode,
is_neigh)) { is_neigh)) {
lspid_print(is_neigh->neigh_id, LSPid, dynhost, 0); lspid_print(is_neigh->neigh_id, LSPid, dynhost, 0);
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu8
" Metric : %-8" PRIu8 " IS : %s\n",
" IS : %s\n",
is_neigh->metrics.metric_default, LSPid); is_neigh->metrics.metric_default, LSPid);
} }
@ -1007,9 +1000,8 @@ void lsp_print_detail(struct isis_lsp *lsp, struct vty *vty, char dynhost)
sizeof(ipv4_reach_prefix)); sizeof(ipv4_reach_prefix));
memcpy(ipv4_reach_mask, inet_ntoa(ipv4_reach->mask), memcpy(ipv4_reach_mask, inet_ntoa(ipv4_reach->mask),
sizeof(ipv4_reach_mask)); sizeof(ipv4_reach_mask));
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu8
" Metric : %-8" PRIu8 " IPv4-Internal : %s %s\n",
" IPv4-Internal : %s %s\n",
ipv4_reach->metrics.metric_default, ipv4_reach->metrics.metric_default,
ipv4_reach_prefix, ipv4_reach_mask); ipv4_reach_prefix, ipv4_reach_mask);
} }
@ -1022,9 +1014,8 @@ void lsp_print_detail(struct isis_lsp *lsp, struct vty *vty, char dynhost)
sizeof(ipv4_reach_prefix)); sizeof(ipv4_reach_prefix));
memcpy(ipv4_reach_mask, inet_ntoa(ipv4_reach->mask), memcpy(ipv4_reach_mask, inet_ntoa(ipv4_reach->mask),
sizeof(ipv4_reach_mask)); sizeof(ipv4_reach_mask));
vty_out(vty, vty_out(vty, " Metric : %-8" PRIu8
" Metric : %-8" PRIu8 " IPv4-External : %s %s\n",
" IPv4-External : %s %s\n",
ipv4_reach->metrics.metric_default, ipv4_reach->metrics.metric_default,
ipv4_reach_prefix, ipv4_reach_mask); ipv4_reach_prefix, ipv4_reach_mask);
} }
@ -2763,9 +2754,9 @@ int lsp_regenerate_schedule_pseudo(struct isis_circuit *circuit, int level)
THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[lvl - 1]); THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[lvl - 1]);
diff = now - lsp->last_generated; diff = now - lsp->last_generated;
if (diff < circuit->area->lsp_gen_interval[lvl - 1]) { if (diff < circuit->area->lsp_gen_interval[lvl - 1]) {
timeout = 1000 timeout =
* (circuit->area->lsp_gen_interval[lvl - 1] 1000 * (circuit->area->lsp_gen_interval[lvl - 1]
- diff); - diff);
sched_debug( sched_debug(
"ISIS (%s): Sechduling in %ld ms to match configured lsp_gen_interval", "ISIS (%s): Sechduling in %ld ms to match configured lsp_gen_interval",
area->area_tag, timeout); area->area_tag, timeout);
@ -2990,9 +2981,9 @@ void lsp_purge_non_exist(int level, struct isis_link_state_hdr *lsp_hdr,
lsp->level = level; lsp->level = level;
lsp->pdu = stream_new(LLC_LEN + area->lsp_mtu); lsp->pdu = stream_new(LLC_LEN + area->lsp_mtu);
lsp->isis_header = (struct isis_fixed_hdr *)STREAM_DATA(lsp->pdu); lsp->isis_header = (struct isis_fixed_hdr *)STREAM_DATA(lsp->pdu);
fill_fixed_hdr(lsp->isis_header, (lsp->level == IS_LEVEL_1) fill_fixed_hdr(lsp->isis_header,
? L1_LINK_STATE (lsp->level == IS_LEVEL_1) ? L1_LINK_STATE
: L2_LINK_STATE); : L2_LINK_STATE);
lsp->lsp_header = (struct isis_link_state_hdr *)(STREAM_DATA(lsp->pdu) lsp->lsp_header = (struct isis_link_state_hdr *)(STREAM_DATA(lsp->pdu)
+ ISIS_FIXED_HDR_LEN); + ISIS_FIXED_HDR_LEN);
memcpy(lsp->lsp_header, lsp_hdr, ISIS_LSP_HDR_LEN); memcpy(lsp->lsp_header, lsp_hdr, ISIS_LSP_HDR_LEN);

View File

@ -1391,10 +1391,11 @@ dontcheckadj:
lsp_set_all_srmflags(lsp); lsp_set_all_srmflags(lsp);
/* v */ /* v */
ISIS_FLAGS_CLEAR_ALL( ISIS_FLAGS_CLEAR_ALL(
lsp->SSNflags); /* FIXME: lsp
OTHER ->SSNflags); /* FIXME:
than c OTHER
*/ than c
*/
/* For the case of lsp confusion, flood /* For the case of lsp confusion, flood
* the purge back to its * the purge back to its

View File

@ -47,16 +47,17 @@
extern struct zebra_privs_t isisd_privs; extern struct zebra_privs_t isisd_privs;
/* tcpdump -i eth0 'isis' -dd */ /* tcpdump -i eth0 'isis' -dd */
static struct sock_filter isisfilter[] = { static struct sock_filter isisfilter[] =
/* NB: we're in SOCK_DGRAM, so src/dst mac + length are stripped {
* off! /* NB: we're in SOCK_DGRAM, so src/dst mac + length are stripped
* (OTOH it's a bit more lower-layer agnostic and might work * off!
* over GRE?) */ * (OTOH it's a bit more lower-layer agnostic and might work
/* { 0x28, 0, 0, 0x0000000c - 14 }, */ * over GRE?) */
/* { 0x25, 5, 0, 0x000005dc }, */ /* { 0x28, 0, 0, 0x0000000c - 14 }, */
{0x28, 0, 0, 0x0000000e - 14}, {0x15, 0, 3, 0x0000fefe}, /* { 0x25, 5, 0, 0x000005dc }, */
{0x30, 0, 0, 0x00000011 - 14}, {0x15, 0, 1, 0x00000083}, {0x28, 0, 0, 0x0000000e - 14}, {0x15, 0, 3, 0x0000fefe},
{0x6, 0, 0, 0x00040000}, {0x6, 0, 0, 0x00000000}, {0x30, 0, 0, 0x00000011 - 14}, {0x15, 0, 1, 0x00000083},
{0x6, 0, 0, 0x00040000}, {0x6, 0, 0, 0x00000000},
}; };
static struct sock_fprog bpf = { static struct sock_fprog bpf = {

View File

@ -389,9 +389,9 @@ static void isis_redist_update_zebra_subscriptions(struct isis *isis)
for (protocol = 0; protocol < REDIST_PROTOCOL_COUNT; protocol++) for (protocol = 0; protocol < REDIST_PROTOCOL_COUNT; protocol++)
for (type = 0; type < ZEBRA_ROUTE_MAX + 1; type++) for (type = 0; type < ZEBRA_ROUTE_MAX + 1; type++)
for (level = 0; level < ISIS_LEVELS; level++) for (level = 0; level < ISIS_LEVELS; level++)
if (area->redist_settings if (area->redist_settings[protocol]
[protocol][type][level] [type]
.redist) [level].redist)
do_subscribe[protocol][type] = do_subscribe[protocol][type] =
1; 1;

View File

@ -366,9 +366,10 @@ static struct isis_vertex *isis_spf_add_root(struct isis_spftree *spftree,
zlog_warn("ISIS-Spf: could not find own l%d LSP!", zlog_warn("ISIS-Spf: could not find own l%d LSP!",
spftree->level); spftree->level);
vertex = isis_vertex_new(id, spftree->area->oldmetric vertex = isis_vertex_new(id,
? VTYPE_NONPSEUDO_IS spftree->area->oldmetric
: VTYPE_NONPSEUDO_TE_IS); ? VTYPE_NONPSEUDO_IS
: VTYPE_NONPSEUDO_TE_IS);
listnode_add(spftree->paths, vertex); listnode_add(spftree->paths, vertex);
#ifdef EXTREME_DEBUG #ifdef EXTREME_DEBUG
@ -507,13 +508,11 @@ static void isis_spf_add_local(struct isis_spftree *spftree,
/* d) */ /* d) */
if (listcount(vertex->Adj_N) > ISIS_MAX_PATH_SPLITS) if (listcount(vertex->Adj_N) > ISIS_MAX_PATH_SPLITS)
remove_excess_adjs(vertex->Adj_N); remove_excess_adjs(vertex->Adj_N);
if (parent if (parent && (listnode_lookup(vertex->parents, parent)
&& (listnode_lookup(vertex->parents, parent) == NULL))
== NULL))
listnode_add(vertex->parents, parent); listnode_add(vertex->parents, parent);
if (parent if (parent && (listnode_lookup(parent->children, vertex)
&& (listnode_lookup(parent->children, vertex) == NULL))
== NULL))
listnode_add(parent->children, vertex); listnode_add(parent->children, vertex);
return; return;
} else if (vertex->d_N < cost) { } else if (vertex->d_N < cost) {
@ -650,9 +649,8 @@ static int isis_spf_process_lsp(struct isis_spftree *spftree,
mt_router_info = tlvs_lookup_mt_router_info(&lsp->tlv_data, mt_router_info = tlvs_lookup_mt_router_info(&lsp->tlv_data,
spftree->mtid); spftree->mtid);
if (!pseudo_lsp if (!pseudo_lsp && (spftree->mtid == ISIS_MT_IPV4_UNICAST
&& (spftree->mtid == ISIS_MT_IPV4_UNICAST && !speaks(lsp->tlv_data.nlpids, spftree->family))
&& !speaks(lsp->tlv_data.nlpids, spftree->family))
&& !mt_router_info) && !mt_router_info)
return ISIS_OK; return ISIS_OK;
@ -669,9 +667,8 @@ lspfragloop:
#endif /* EXTREME_DEBUG */ #endif /* EXTREME_DEBUG */
/* RFC3787 section 4 SHOULD ignore overload bit in pseudo LSPs */ /* RFC3787 section 4 SHOULD ignore overload bit in pseudo LSPs */
if (pseudo_lsp if (pseudo_lsp || (spftree->mtid == ISIS_MT_IPV4_UNICAST
|| (spftree->mtid == ISIS_MT_IPV4_UNICAST && !ISIS_MASK_LSP_OL_BIT(lsp->lsp_header->lsp_bits))
&& !ISIS_MASK_LSP_OL_BIT(lsp->lsp_header->lsp_bits))
|| (mt_router_info && !mt_router_info->overload)) || (mt_router_info && !mt_router_info->overload))
{ {

View File

@ -217,7 +217,7 @@ struct te_ipv4_reachability {
u_int32_t te_metric; u_int32_t te_metric;
u_char control; u_char control;
u_char prefix_start; /* since this is variable length by nature it only u_char prefix_start; /* since this is variable length by nature it only
*/ */
}; /* points to an approximate location */ }; /* points to an approximate location */
#define TE_IPV4_HAS_SUBTLV (0x40) #define TE_IPV4_HAS_SUBTLV (0x40)

View File

@ -70,7 +70,7 @@ struct isis_area {
struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v6 SPTs */ struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v6 SPTs */
struct route_table *route_table6[ISIS_LEVELS]; /* IPv6 routes */ struct route_table *route_table6[ISIS_LEVELS]; /* IPv6 routes */
/* $FRR indent$ */ /* $FRR indent$ */
/* clang-format off */ /* clang-format off */
#define DEFAULT_LSP_MTU 1497 #define DEFAULT_LSP_MTU 1497
unsigned int lsp_mtu; /* Size of LSPs to generate */ unsigned int lsp_mtu; /* Size of LSPs to generate */
struct list *circuit_list; /* IS-IS circuits */ struct list *circuit_list; /* IS-IS circuits */

View File

@ -10,7 +10,7 @@
#include "checksum.h" #include "checksum.h"
int /* return checksum in low-order 16 bits */ int /* return checksum in low-order 16 bits */
in_cksum(void *parg, int nbytes) in_cksum(void *parg, int nbytes)
{ {
u_short *ptr = parg; u_short *ptr = parg;
register long sum; /* assumes long == 32 bits */ register long sum; /* assumes long == 32 bits */

View File

@ -56,23 +56,19 @@ struct host host;
/* Standard command node structures. */ /* Standard command node structures. */
static struct cmd_node auth_node = { static struct cmd_node auth_node = {
AUTH_NODE, AUTH_NODE, "Password: ",
"Password: ",
}; };
static struct cmd_node view_node = { static struct cmd_node view_node = {
VIEW_NODE, VIEW_NODE, "%s> ",
"%s> ",
}; };
static struct cmd_node auth_enable_node = { static struct cmd_node auth_enable_node = {
AUTH_ENABLE_NODE, AUTH_ENABLE_NODE, "Password: ",
"Password: ",
}; };
static struct cmd_node enable_node = { static struct cmd_node enable_node = {
ENABLE_NODE, ENABLE_NODE, "%s# ",
"%s# ",
}; };
static struct cmd_node config_node = {CONFIG_NODE, "%s(config)# ", 1}; static struct cmd_node config_node = {CONFIG_NODE, "%s(config)# ", 1};
@ -653,9 +649,8 @@ void cmd_variable_complete(struct cmd_token *token, const char *arg,
for (ALL_LIST_ELEMENTS_RO(varhandlers, ln, cvh)) { for (ALL_LIST_ELEMENTS_RO(varhandlers, ln, cvh)) {
if (cvh->tokenname && strcmp(cvh->tokenname, token->text)) if (cvh->tokenname && strcmp(cvh->tokenname, token->text))
continue; continue;
if (cvh->varname if (cvh->varname && (!token->varname
&& (!token->varname || strcmp(cvh->varname, token->varname)))
|| strcmp(cvh->varname, token->varname)))
continue; continue;
cvh->completions(tmpcomps, token); cvh->completions(tmpcomps, token);
break; break;
@ -1500,9 +1495,8 @@ DEFUN (config_write,
struct stat conf_stat; struct stat conf_stat;
// if command was 'write terminal' or 'show running-config' // if command was 'write terminal' or 'show running-config'
if (argc == 2 if (argc == 2 && (strmatch(argv[idx_type]->text, "terminal")
&& (strmatch(argv[idx_type]->text, "terminal") || strmatch(argv[0]->text, "show"))) {
|| strmatch(argv[0]->text, "show"))) {
vty_write_config(vty); vty_write_config(vty);
return CMD_SUCCESS; return CMD_SUCCESS;
} }

View File

@ -203,7 +203,7 @@ static PyObject *graph_to_pyobj(struct wrap_graph *wgraph,
/* plumbing types */ /* plumbing types */
item(FORK_TKN) item(JOIN_TKN) item(START_TKN) item(FORK_TKN) item(JOIN_TKN) item(START_TKN)
item(END_TKN) default item(END_TKN) default
: wrap->type = "???"; : wrap->type = "???";
} }
wrap->deprecated = (tok->attr == CMD_ATTR_DEPRECATED); wrap->deprecated = (tok->attr == CMD_ATTR_DEPRECATED);

View File

@ -619,9 +619,8 @@ int long_only;
if (longopts != NULL if (longopts != NULL
&& (argv[optind][1] == '-' && (argv[optind][1] == '-'
|| (long_only || (long_only && (argv[optind][2]
&& (argv[optind][2] || !my_index(optstring, argv[optind][1]))))) {
|| !my_index(optstring, argv[optind][1]))))) {
char *nameend; char *nameend;
const struct option *p; const struct option *p;
const struct option *pfound = NULL; const struct option *pfound = NULL;

View File

@ -161,8 +161,7 @@ extern void _hook_unregister(struct hook *hook, void *funcptr, void *arg,
*/ */
#define DEFINE_HOOK(hookname, arglist, passlist) \ #define DEFINE_HOOK(hookname, arglist, passlist) \
struct hook _hook_##hookname = { \ struct hook _hook_##hookname = { \
.name = #hookname, \ .name = #hookname, .entries = NULL, \
.entries = NULL, \
}; \ }; \
static int hook_call_##hookname arglist \ static int hook_call_##hookname arglist \
{ \ { \

View File

@ -236,7 +236,7 @@ struct interface {
unsigned int mtu; /* IPv4 MTU */ unsigned int mtu; /* IPv4 MTU */
unsigned int unsigned int
mtu6; /* IPv6 MTU - probably, but not neccessarily same as mtu mtu6; /* IPv6 MTU - probably, but not neccessarily same as mtu
*/ */
/* Link-layer information and hardware address */ /* Link-layer information and hardware address */
enum zebra_link_type ll_type; enum zebra_link_type ll_type;

View File

@ -411,7 +411,7 @@ void zlog_signal(int signo, const char *action
, ,
siginfo_t *siginfo, void *program_counter siginfo_t *siginfo, void *program_counter
#endif #endif
) )
{ {
time_t now; time_t now;
char buf[sizeof("DEFAULT: Received signal S at T (si_addr 0xP, PC 0xP); aborting...") char buf[sizeof("DEFAULT: Received signal S at T (si_addr 0xP, PC 0xP); aborting...")
@ -474,7 +474,7 @@ void zlog_signal(int signo, const char *action
#else #else
NULL NULL
#endif #endif
); );
s = buf; s = buf;
struct thread *tc; struct thread *tc;
@ -1063,9 +1063,10 @@ void zlog_hexdump(const void *mem, unsigned int len)
printing */ printing */
s += sprintf(s, " "); s += sprintf(s, " ");
else if (isprint((int)((const char *)mem) else if (
[j])) /* printable char isprint((int)((const char *)mem)
*/ [j])) /* printable char
*/
s += sprintf( s += sprintf(
s, "%c", s, "%c",
0xFF & ((const char *)mem)[j]); 0xFF & ((const char *)mem)[j]);

View File

@ -109,7 +109,7 @@ extern void zlog_signal(int signo, const char *action
, ,
siginfo_t *siginfo, void *program_counter siginfo_t *siginfo, void *program_counter
#endif #endif
); );
/* Log a backtrace. */ /* Log a backtrace. */
extern void zlog_backtrace(int priority); extern void zlog_backtrace(int priority);
@ -143,7 +143,7 @@ struct timestamp_control {
int precision; /* configuration parameter */ int precision; /* configuration parameter */
int already_rendered; /* should be initialized to 0 */ int already_rendered; /* should be initialized to 0 */
char buf[QUAGGA_TIMESTAMP_LEN]; /* will contain the rendered timestamp char buf[QUAGGA_TIMESTAMP_LEN]; /* will contain the rendered timestamp
*/ */
}; };
/* Defines for use in command construction: */ /* Defines for use in command construction: */

View File

@ -389,11 +389,11 @@ uint8_t *digest; /* caller digest to be filled in */
{ {
MD5_CTX context; MD5_CTX context;
unsigned char k_ipad[65]; /* inner padding - unsigned char k_ipad[65]; /* inner padding -
* key XORd with ipad * key XORd with ipad
*/ */
unsigned char k_opad[65]; /* outer padding - unsigned char k_opad[65]; /* outer padding -
* key XORd with opad * key XORd with opad
*/ */
unsigned char tk[16]; unsigned char tk[16];
int i; int i;
/* if key is longer than 64 bytes reset it to key=MD5(key) */ /* if key is longer than 64 bytes reset it to key=MD5(key) */

View File

@ -173,7 +173,7 @@ static inline char *label2str(mpls_label_t label, char *buf, size_t len)
#define MPLS_LABEL_RTALERT 1 /* Router Alert Label */ #define MPLS_LABEL_RTALERT 1 /* Router Alert Label */
#define MPLS_LABEL_IPV6NULL 2 /* IPv6 Explicit NULL Label */ #define MPLS_LABEL_IPV6NULL 2 /* IPv6 Explicit NULL Label */
#define MPLS_LABEL_IMPLNULL 3 /* Implicit NULL Label */ #define MPLS_LABEL_IMPLNULL 3 /* Implicit NULL Label */
/* MPLS_LABEL_RESERVED 4-15 */ /* Values 4-15 are reserved */ /* MPLS_LABEL_RESERVED 4-15 */ /* Values 4-15 are reserved */
#define MPLS_LABEL_RESERVED_MAX 15 #define MPLS_LABEL_RESERVED_MAX 15
#define MPLS_LABEL_MAX ((1 << 20) - 1) #define MPLS_LABEL_MAX ((1 << 20) - 1)

View File

@ -509,9 +509,7 @@ int _rb_check(const struct rb_type *, void *, unsigned long);
return _cmp(l, r); \ return _cmp(l, r); \
} \ } \
static const struct rb_type _name##_RB_INFO = { \ static const struct rb_type _name##_RB_INFO = { \
_name##_RB_COMPARE, \ _name##_RB_COMPARE, _aug, offsetof(struct _type, _field), \
_aug, \
offsetof(struct _type, _field), \
}; \ }; \
const struct rb_type *const _name##_RB_TYPE = &_name##_RB_INFO; const struct rb_type *const _name##_RB_TYPE = &_name##_RB_INFO;

View File

@ -1918,9 +1918,8 @@ int prefix_bgp_show_prefix_list(struct vty *vty, afi_t afi, char *name,
json_object_object_add(json, "ipv6PrefixList", json_object_object_add(json, "ipv6PrefixList",
json_prefix); json_prefix);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
vty_out(vty, "ip%s prefix-list %s: %d entries\n", vty_out(vty, "ip%s prefix-list %s: %d entries\n",

View File

@ -1151,9 +1151,8 @@ const char *prefix2str(union prefixconstptr pu, char *str, int size)
switch (p->family) { switch (p->family) {
case AF_INET: case AF_INET:
case AF_INET6: case AF_INET6:
snprintf(str, size, "%s/%d", snprintf(str, size, "%s/%d", inet_ntop(p->family, &p->u.prefix,
inet_ntop(p->family, &p->u.prefix, buf, buf, PREFIX2STR_BUFFER),
PREFIX2STR_BUFFER),
p->prefixlen); p->prefixlen);
break; break;

View File

@ -53,9 +53,9 @@ struct ethaddr {
/* length is the number of valuable bits of prefix structure /* length is the number of valuable bits of prefix structure
* 18 bytes is current length in structure, if address is ipv4 * 18 bytes is current length in structure, if address is ipv4
* 30 bytes is in case of ipv6 * 30 bytes is in case of ipv6
*/ */
#define PREFIX_LEN_ROUTE_TYPE_5_IPV4 (18*8) #define PREFIX_LEN_ROUTE_TYPE_5_IPV4 (18*8)
#define PREFIX_LEN_ROUTE_TYPE_5_IPV6 (30*8) #define PREFIX_LEN_ROUTE_TYPE_5_IPV6 (30*8)

View File

@ -99,131 +99,113 @@ static struct {
pvalue_t *system_caps; pvalue_t *system_caps;
} cap_map[ZCAP_MAX] = { } cap_map[ZCAP_MAX] = {
#ifdef HAVE_LCAPS /* Quagga -> Linux capabilities mappings */ #ifdef HAVE_LCAPS /* Quagga -> Linux capabilities mappings */
[ZCAP_SETID] = [ZCAP_SETID] =
{ {
2, 2, (pvalue_t[]){CAP_SETGID, CAP_SETUID},
(pvalue_t[]){CAP_SETGID, CAP_SETUID}, },
}, [ZCAP_BIND] =
[ZCAP_BIND] = {
{ 1, (pvalue_t[]){CAP_NET_BIND_SERVICE},
1, },
(pvalue_t[]){CAP_NET_BIND_SERVICE}, [ZCAP_NET_ADMIN] =
}, {
[ZCAP_NET_ADMIN] = 1, (pvalue_t[]){CAP_NET_ADMIN},
{ },
1, [ZCAP_NET_RAW] =
(pvalue_t[]){CAP_NET_ADMIN}, {
}, 1, (pvalue_t[]){CAP_NET_RAW},
[ZCAP_NET_RAW] = },
{ [ZCAP_CHROOT] =
1, {
(pvalue_t[]){CAP_NET_RAW}, 1,
}, (pvalue_t[]){
[ZCAP_CHROOT] = CAP_SYS_CHROOT,
{ },
1, },
(pvalue_t[]){ [ZCAP_NICE] =
CAP_SYS_CHROOT, {
1, (pvalue_t[]){CAP_SYS_NICE},
},
[ZCAP_PTRACE] =
{
1, (pvalue_t[]){CAP_SYS_PTRACE},
},
[ZCAP_DAC_OVERRIDE] =
{
1, (pvalue_t[]){CAP_DAC_OVERRIDE},
},
[ZCAP_READ_SEARCH] =
{
1, (pvalue_t[]){CAP_DAC_READ_SEARCH},
},
[ZCAP_SYS_ADMIN] =
{
1, (pvalue_t[]){CAP_SYS_ADMIN},
},
[ZCAP_FOWNER] =
{
1, (pvalue_t[]){CAP_FOWNER},
}, },
},
[ZCAP_NICE] =
{
1,
(pvalue_t[]){CAP_SYS_NICE},
},
[ZCAP_PTRACE] =
{
1,
(pvalue_t[]){CAP_SYS_PTRACE},
},
[ZCAP_DAC_OVERRIDE] =
{
1,
(pvalue_t[]){CAP_DAC_OVERRIDE},
},
[ZCAP_READ_SEARCH] =
{
1,
(pvalue_t[]){CAP_DAC_READ_SEARCH},
},
[ZCAP_SYS_ADMIN] =
{
1,
(pvalue_t[]){CAP_SYS_ADMIN},
},
[ZCAP_FOWNER] =
{
1,
(pvalue_t[]){CAP_FOWNER},
},
#elif defined(HAVE_SOLARIS_CAPABILITIES) /* HAVE_LCAPS */ #elif defined(HAVE_SOLARIS_CAPABILITIES) /* HAVE_LCAPS */
/* Quagga -> Solaris privilege mappings */ /* Quagga -> Solaris privilege mappings */
[ZCAP_SETID] = [ZCAP_SETID] =
{ {
1, 1, (pvalue_t[]){PRIV_PROC_SETID},
(pvalue_t[]){PRIV_PROC_SETID}, },
}, [ZCAP_BIND] =
[ZCAP_BIND] = {
{ 1, (pvalue_t[]){PRIV_NET_PRIVADDR},
1, },
(pvalue_t[]){PRIV_NET_PRIVADDR},
},
/* IP_CONFIG is a subset of NET_CONFIG and is allowed in zones */ /* IP_CONFIG is a subset of NET_CONFIG and is allowed in zones */
#ifdef PRIV_SYS_IP_CONFIG #ifdef PRIV_SYS_IP_CONFIG
[ZCAP_NET_ADMIN] = [ZCAP_NET_ADMIN] =
{ {
1, 1, (pvalue_t[]){PRIV_SYS_IP_CONFIG},
(pvalue_t[]){PRIV_SYS_IP_CONFIG}, },
},
#else #else
[ZCAP_NET_ADMIN] = [ZCAP_NET_ADMIN] =
{ {
1, 1, (pvalue_t[]){PRIV_SYS_NET_CONFIG},
(pvalue_t[]){PRIV_SYS_NET_CONFIG}, },
},
#endif #endif
[ZCAP_NET_RAW] = [ZCAP_NET_RAW] =
{ {
2, 2, (pvalue_t[]){PRIV_NET_RAWACCESS,
(pvalue_t[]){PRIV_NET_RAWACCESS, PRIV_NET_ICMPACCESS}, PRIV_NET_ICMPACCESS},
}, },
[ZCAP_CHROOT] = [ZCAP_CHROOT] =
{ {
1, 1, (pvalue_t[]){PRIV_PROC_CHROOT},
(pvalue_t[]){PRIV_PROC_CHROOT}, },
}, [ZCAP_NICE] =
[ZCAP_NICE] = {
{ 1, (pvalue_t[]){PRIV_PROC_PRIOCNTL},
1, },
(pvalue_t[]){PRIV_PROC_PRIOCNTL}, [ZCAP_PTRACE] =
}, {
[ZCAP_PTRACE] = 1, (pvalue_t[]){PRIV_PROC_SESSION},
{ },
1, [ZCAP_DAC_OVERRIDE] =
(pvalue_t[]){PRIV_PROC_SESSION}, {
}, 5, (pvalue_t[]){PRIV_FILE_DAC_EXECUTE,
[ZCAP_DAC_OVERRIDE] = PRIV_FILE_DAC_READ,
{ PRIV_FILE_DAC_SEARCH,
5, PRIV_FILE_DAC_WRITE,
(pvalue_t[]){PRIV_FILE_DAC_EXECUTE, PRIV_FILE_DAC_READ, PRIV_FILE_DAC_SEARCH},
PRIV_FILE_DAC_SEARCH, PRIV_FILE_DAC_WRITE, },
PRIV_FILE_DAC_SEARCH}, [ZCAP_READ_SEARCH] =
}, {
[ZCAP_READ_SEARCH] = 2, (pvalue_t[]){PRIV_FILE_DAC_SEARCH,
{ PRIV_FILE_DAC_READ},
2, },
(pvalue_t[]){PRIV_FILE_DAC_SEARCH, PRIV_FILE_DAC_READ}, [ZCAP_SYS_ADMIN] =
}, {
[ZCAP_SYS_ADMIN] = 1, (pvalue_t[]){PRIV_SYS_ADMIN},
{ },
1, [ZCAP_FOWNER] =
(pvalue_t[]){PRIV_SYS_ADMIN}, {
}, 1, (pvalue_t[]){PRIV_FILE_OWNER},
[ZCAP_FOWNER] = },
{
1,
(pvalue_t[]){PRIV_FILE_OWNER},
},
#endif /* HAVE_SOLARIS_CAPABILITIES */ #endif /* HAVE_SOLARIS_CAPABILITIES */
}; };
@ -785,7 +767,7 @@ void zprivs_init(struct zebra_privs_t *zprivs)
if (zprivs->vty_group) if (zprivs->vty_group)
/* Add the vty_group to the supplementary groups so it can be chowned to /* Add the vty_group to the supplementary groups so it can be chowned to
*/ */
{ {
if (zprivs_state.vtygrp == (gid_t)-1) { if (zprivs_state.vtygrp == (gid_t)-1) {
fprintf(stderr, fprintf(stderr,

View File

@ -1232,9 +1232,8 @@ int route_map_delete_match(struct route_map_index *index,
return 1; return 1;
for (rule = index->match_list.head; rule; rule = rule->next) for (rule = index->match_list.head; rule; rule = rule->next)
if (rule->cmd == cmd if (rule->cmd == cmd && (rulecmp(rule->rule_str, match_arg) == 0
&& (rulecmp(rule->rule_str, match_arg) == 0 || match_arg == NULL)) {
|| match_arg == NULL)) {
route_map_rule_delete(&index->match_list, rule); route_map_rule_delete(&index->match_list, rule);
/* Execute event hook. */ /* Execute event hook. */
if (route_map_master.event_hook) { if (route_map_master.event_hook) {
@ -1320,9 +1319,8 @@ int route_map_delete_set(struct route_map_index *index, const char *set_name,
return 1; return 1;
for (rule = index->set_list.head; rule; rule = rule->next) for (rule = index->set_list.head; rule; rule = rule->next)
if ((rule->cmd == cmd) if ((rule->cmd == cmd) && (rulecmp(rule->rule_str, set_arg) == 0
&& (rulecmp(rule->rule_str, set_arg) == 0 || set_arg == NULL)) {
|| set_arg == NULL)) {
route_map_rule_delete(&index->set_list, rule); route_map_rule_delete(&index->set_list, rule);
/* Execute event hook. */ /* Execute event hook. */
if (route_map_master.event_hook) { if (route_map_master.event_hook) {

View File

@ -207,14 +207,14 @@ exit_handler(int signo
, ,
siginfo_t *siginfo, void *context siginfo_t *siginfo, void *context
#endif #endif
) )
{ {
zlog_signal(signo, "exiting..." zlog_signal(signo, "exiting..."
#ifdef SA_SIGINFO #ifdef SA_SIGINFO
, ,
siginfo, program_counter(context) siginfo, program_counter(context)
#endif #endif
); );
_exit(128 + signo); _exit(128 + signo);
} }
@ -224,7 +224,7 @@ core_handler(int signo
, ,
siginfo_t *siginfo, void *context siginfo_t *siginfo, void *context
#endif #endif
) )
{ {
/* make sure we don't hang in here. default for SIGALRM is terminate. /* make sure we don't hang in here. default for SIGALRM is terminate.
* - if we're in backtrace for more than a second, abort. */ * - if we're in backtrace for more than a second, abort. */
@ -243,7 +243,7 @@ core_handler(int signo
, ,
siginfo, program_counter(context) siginfo, program_counter(context)
#endif #endif
); );
/* dump memory stats on core */ /* dump memory stats on core */
log_memstats_stderr("core_handler"); log_memstats_stderr("core_handler");
abort(); abort();
@ -290,7 +290,7 @@ static void trap_default_signals(void)
, ,
siginfo_t *info, void *context siginfo_t *info, void *context
#endif #endif
); );
} sigmap[] = { } sigmap[] = {
{core_signals, array_size(core_signals), core_handler}, {core_signals, array_size(core_signals), core_handler},
{exit_signals, array_size(exit_signals), exit_handler}, {exit_signals, array_size(exit_signals), exit_handler},

View File

@ -210,25 +210,22 @@ static void smux_getresp_send(oid objid[], size_t objid_len, long reqid,
ptr = asn_build_sequence(ptr, &len, (u_char)SMUX_GETRSP, 0); ptr = asn_build_sequence(ptr, &len, (u_char)SMUX_GETRSP, 0);
h1e = ptr; h1e = ptr;
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), &reqid, &reqid, sizeof(reqid));
sizeof(reqid));
if (debug_smux) if (debug_smux)
zlog_debug("SMUX GETRSP errstat: %ld", errstat); zlog_debug("SMUX GETRSP errstat: %ld", errstat);
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), &errstat, &errstat, sizeof(errstat));
sizeof(errstat));
if (debug_smux) if (debug_smux)
zlog_debug("SMUX GETRSP errindex: %ld", errindex); zlog_debug("SMUX GETRSP errindex: %ld", errindex);
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), &errindex, sizeof(errindex));
&errindex, sizeof(errindex));
h2 = ptr; h2 = ptr;
/* Place holder h2 for one variable */ /* Place holder h2 for one variable */
@ -887,28 +884,24 @@ static int smux_open(int sock)
/* SMUX Open. */ /* SMUX Open. */
version = 0; version = 0;
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), &version, &version, sizeof(version));
sizeof(version));
/* SMUX connection oid. */ /* SMUX connection oid. */
ptr = asn_build_objid( ptr = asn_build_objid(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_OBJECT_ID),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), smux_oid, smux_oid_len);
smux_oid, smux_oid_len);
/* SMUX connection description. */ /* SMUX connection description. */
ptr = asn_build_string( ptr = asn_build_string(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_OCTET_STR),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), (const u_char *)progname, strlen(progname));
(const u_char *)progname, strlen(progname));
/* SMUX connection password. */ /* SMUX connection password. */
ptr = asn_build_string( ptr = asn_build_string(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_OCTET_STR),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), (u_char *)smux_passwd, strlen(smux_passwd));
(u_char *)smux_passwd, strlen(smux_passwd));
/* Fill in real SMUX header. We exclude ASN header size (2). */ /* Fill in real SMUX header. We exclude ASN header size (2). */
len = BUFSIZ; len = BUFSIZ;
@ -948,31 +941,27 @@ int smux_trap(struct variable *vp, size_t vp_len, const oid *ename,
ptr = asn_build_header(ptr, &len, (u_char)SMUX_TRAP, 0); ptr = asn_build_header(ptr, &len, (u_char)SMUX_TRAP, 0);
/* Sub agent enterprise oid. */ /* Sub agent enterprise oid. */
ptr = asn_build_objid( ptr = asn_build_objid(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_OBJECT_ID),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), smux_oid, smux_oid_len);
smux_oid, smux_oid_len);
/* IP address. */ /* IP address. */
addr.s_addr = 0; addr.s_addr = 0;
ptr = asn_build_string( ptr = asn_build_string(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_IPADDRESS),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_IPADDRESS), (u_char *)&addr, sizeof(addr));
(u_char *)&addr, sizeof(addr));
/* Generic trap integer. */ /* Generic trap integer. */
val = SNMP_TRAP_ENTERPRISESPECIFIC; val = SNMP_TRAP_ENTERPRISESPECIFIC;
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), (long *)&val, sizeof(val));
(long *)&val, sizeof(val));
/* Specific trap integer. */ /* Specific trap integer. */
val = sptrap; val = sptrap;
ptr = asn_build_int( ptr = asn_build_int(ptr, &len, (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE
ptr, &len, | ASN_INTEGER),
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), (long *)&val, sizeof(val));
(long *)&val, sizeof(val));
/* Timeticks timestamp. */ /* Timeticks timestamp. */
val = 0; val = 0;

View File

@ -261,9 +261,8 @@ int setsockopt_ipv4_multicast(int sock, int optname, struct in_addr if_addr,
zlog_info( zlog_info(
"setsockopt_ipv4_multicast attempting to drop and " "setsockopt_ipv4_multicast attempting to drop and "
"re-add (fd %d, mcast %s, ifindex %u)", "re-add (fd %d, mcast %s, ifindex %u)",
sock, sock, inet_ntop(AF_INET, &mreqn.imr_multiaddr, buf[0],
inet_ntop(AF_INET, &mreqn.imr_multiaddr, buf[0], sizeof(buf[0])),
sizeof(buf[0])),
ifindex); ifindex);
setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *)&mreqn, setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *)&mreqn,
sizeof(mreqn)); sizeof(mreqn));
@ -304,9 +303,8 @@ int setsockopt_ipv4_multicast(int sock, int optname, struct in_addr if_addr,
zlog_info( zlog_info(
"setsockopt_ipv4_multicast attempting to drop and " "setsockopt_ipv4_multicast attempting to drop and "
"re-add (fd %d, mcast %s, ifindex %u)", "re-add (fd %d, mcast %s, ifindex %u)",
sock, sock, inet_ntop(AF_INET, &mreq.imr_multiaddr, buf[0],
inet_ntop(AF_INET, &mreq.imr_multiaddr, buf[0], sizeof(buf[0])),
sizeof(buf[0])),
ifindex); ifindex);
setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *)&mreq, setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, (void *)&mreq,
sizeof(mreq)); sizeof(mreq));

View File

@ -2822,9 +2822,7 @@ static int vty_config_write(struct vty *vty)
} }
struct cmd_node vty_node = { struct cmd_node vty_node = {
VTY_NODE, VTY_NODE, "%s(config-line)# ", 1,
"%s(config-line)# ",
1,
}; };
/* Reset all VTY status. */ /* Reset all VTY status. */

View File

@ -34,10 +34,9 @@ extern void _zlog_assert_failed(const char *assertion, const char *file,
#endif #endif
#define zassert(EX) \ #define zassert(EX) \
((void)((EX) ? 0 \ ((void)((EX) ? 0 : (_zlog_assert_failed(#EX, __FILE__, __LINE__, \
: (_zlog_assert_failed(#EX, __FILE__, __LINE__, \ __ASSERT_FUNCTION), \
__ASSERT_FUNCTION), \ 0)))
0)))
#undef assert #undef assert
#define assert(EX) zassert(EX) #define assert(EX) zassert(EX)

View File

@ -1480,9 +1480,8 @@ struct connected *zebra_interface_address_read(int type, struct stream *s,
zlog_warn( zlog_warn(
"warning: interface %s address %s " "warning: interface %s address %s "
"with peer flag set, but no peer address!", "with peer flag set, but no peer address!",
ifp->name, ifp->name, prefix2str(ifc->address, buf,
prefix2str(ifc->address, buf, sizeof buf));
sizeof buf));
UNSET_FLAG(ifc->flags, ZEBRA_IFA_PEER); UNSET_FLAG(ifc->flags, ZEBRA_IFA_PEER);
} }
} }

View File

@ -848,9 +848,7 @@ static route_map_result_t ospf6_routemap_rule_match_tag(void *rule,
} }
static struct route_map_rule_cmd ospf6_routemap_rule_match_tag_cmd = { static struct route_map_rule_cmd ospf6_routemap_rule_match_tag_cmd = {
"tag", "tag", ospf6_routemap_rule_match_tag, route_map_rule_tag_compile,
ospf6_routemap_rule_match_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };
@ -885,8 +883,7 @@ static void ospf6_routemap_rule_set_metric_type_free(void *rule)
} }
struct route_map_rule_cmd ospf6_routemap_rule_set_metric_type_cmd = { struct route_map_rule_cmd ospf6_routemap_rule_set_metric_type_cmd = {
"metric-type", "metric-type", ospf6_routemap_rule_set_metric_type,
ospf6_routemap_rule_set_metric_type,
ospf6_routemap_rule_set_metric_type_compile, ospf6_routemap_rule_set_metric_type_compile,
ospf6_routemap_rule_set_metric_type_free, ospf6_routemap_rule_set_metric_type_free,
}; };
@ -921,8 +918,7 @@ static void ospf6_routemap_rule_set_metric_free(void *rule)
} }
struct route_map_rule_cmd ospf6_routemap_rule_set_metric_cmd = { struct route_map_rule_cmd ospf6_routemap_rule_set_metric_cmd = {
"metric", "metric", ospf6_routemap_rule_set_metric,
ospf6_routemap_rule_set_metric,
ospf6_routemap_rule_set_metric_compile, ospf6_routemap_rule_set_metric_compile,
ospf6_routemap_rule_set_metric_free, ospf6_routemap_rule_set_metric_free,
}; };
@ -960,8 +956,7 @@ static void ospf6_routemap_rule_set_forwarding_free(void *rule)
} }
struct route_map_rule_cmd ospf6_routemap_rule_set_forwarding_cmd = { struct route_map_rule_cmd ospf6_routemap_rule_set_forwarding_cmd = {
"forwarding-address", "forwarding-address", ospf6_routemap_rule_set_forwarding,
ospf6_routemap_rule_set_forwarding,
ospf6_routemap_rule_set_forwarding_compile, ospf6_routemap_rule_set_forwarding_compile,
ospf6_routemap_rule_set_forwarding_free, ospf6_routemap_rule_set_forwarding_free,
}; };
@ -983,9 +978,7 @@ static route_map_result_t ospf6_routemap_rule_set_tag(void *rule,
} }
static struct route_map_rule_cmd ospf6_routemap_rule_set_tag_cmd = { static struct route_map_rule_cmd ospf6_routemap_rule_set_tag_cmd = {
"tag", "tag", ospf6_routemap_rule_set_tag, route_map_rule_tag_compile,
ospf6_routemap_rule_set_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };

View File

@ -1402,10 +1402,9 @@ DEFUN (ipv6_ospf6_priority,
oi->priority = strtol(argv[idx_number]->arg, NULL, 10); oi->priority = strtol(argv[idx_number]->arg, NULL, 10);
if (oi->area if (oi->area && (oi->state == OSPF6_INTERFACE_DROTHER
&& (oi->state == OSPF6_INTERFACE_DROTHER || oi->state == OSPF6_INTERFACE_BDR
|| oi->state == OSPF6_INTERFACE_BDR || oi->state == OSPF6_INTERFACE_DR))
|| oi->state == OSPF6_INTERFACE_DR))
ospf6_interface_state_change(dr_election(oi), oi); ospf6_interface_state_change(dr_election(oi), oi);
return CMD_SUCCESS; return CMD_SUCCESS;

View File

@ -73,9 +73,8 @@ static char *ospf6_router_lsa_get_nbr_id(struct ospf6_lsa *lsa, char *buf,
lsdesc = (struct ospf6_router_lsdesc lsdesc = (struct ospf6_router_lsdesc
*)(start *)(start
+ pos + pos * (sizeof(struct
* (sizeof(struct ospf6_router_lsdesc)));
ospf6_router_lsdesc)));
if ((char *)lsdesc < end) { if ((char *)lsdesc < end) {
if (buf && (buflen > INET_ADDRSTRLEN * 2)) { if (buf && (buflen > INET_ADDRSTRLEN * 2)) {
inet_ntop(AF_INET, inet_ntop(AF_INET,

View File

@ -869,7 +869,7 @@ static unsigned ospf6_prefixes_examin(
unsigned length, unsigned length,
const u_int32_t req_num_pfxs /* always compared with the actual number const u_int32_t req_num_pfxs /* always compared with the actual number
of prefixes */ of prefixes */
) )
{ {
u_char requested_pfx_bytes; u_char requested_pfx_bytes;
u_int32_t real_num_pfxs = 0; u_int32_t real_num_pfxs = 0;
@ -1066,7 +1066,7 @@ static unsigned ospf6_lsa_examin(struct ospf6_lsa_header *lsah,
lsalen - OSPF6_LSA_HEADER_SIZE lsalen - OSPF6_LSA_HEADER_SIZE
- OSPF6_LINK_LSA_MIN_SIZE, - OSPF6_LINK_LSA_MIN_SIZE,
ntohl(link_lsa->prefix_num) /* 32 bits */ ntohl(link_lsa->prefix_num) /* 32 bits */
); );
case OSPF6_LSTYPE_INTRA_PREFIX: case OSPF6_LSTYPE_INTRA_PREFIX:
/* RFC5340 A.4.10, LSA header + OSPF6_INTRA_PREFIX_LSA_MIN_SIZE /* RFC5340 A.4.10, LSA header + OSPF6_INTRA_PREFIX_LSA_MIN_SIZE
bytes bytes
@ -1084,7 +1084,7 @@ static unsigned ospf6_lsa_examin(struct ospf6_lsa_header *lsah,
lsalen - OSPF6_LSA_HEADER_SIZE lsalen - OSPF6_LSA_HEADER_SIZE
- OSPF6_INTRA_PREFIX_LSA_MIN_SIZE, - OSPF6_INTRA_PREFIX_LSA_MIN_SIZE,
ntohs(intra_prefix_lsa->prefix_num) /* 16 bits */ ntohs(intra_prefix_lsa->prefix_num) /* 16 bits */
); );
} }
/* No additional validation is possible for unknown LSA types, which are /* No additional validation is possible for unknown LSA types, which are
themselves valid in OPSFv3, hence the default decision is to accept. themselves valid in OPSFv3, hence the default decision is to accept.
@ -1270,7 +1270,7 @@ static unsigned ospf6_packet_examin(struct ospf6_header *oh,
+ OSPF6_LS_UPD_MIN_SIZE), + OSPF6_LS_UPD_MIN_SIZE),
bytesonwire - OSPF6_HEADER_SIZE - OSPF6_LS_UPD_MIN_SIZE, bytesonwire - OSPF6_HEADER_SIZE - OSPF6_LS_UPD_MIN_SIZE,
0, ntohl(lsupd->lsa_number) /* 32 bits */ 0, ntohl(lsupd->lsa_number) /* 32 bits */
); );
break; break;
case OSPF6_MESSAGE_TYPE_LSACK: case OSPF6_MESSAGE_TYPE_LSACK:
/* RFC5340 A.3.6, packet header + N>=0 header-only LSAs. */ /* RFC5340 A.3.6, packet header + N>=0 header-only LSAs. */

View File

@ -347,8 +347,7 @@ static int config_write_ospf6_zebra(struct vty *vty)
/* Zebra node structure. */ /* Zebra node structure. */
static struct cmd_node zebra_node = { static struct cmd_node zebra_node = {
ZEBRA_NODE, ZEBRA_NODE, "%s(config-zebra)# ",
"%s(config-zebra)# ",
}; };
#define ADD 0 #define ADD 0

View File

@ -1034,20 +1034,22 @@ static void ospf_abr_process_network_rt(struct ospf *ospf,
continue; continue;
} }
if (or->path_type == OSPF_PATH_INTRA_AREA if (
&& !ospf_abr_should_announce( or->path_type == OSPF_PATH_INTRA_AREA
ospf, (struct prefix_ipv4 *)&rn->p, && !ospf_abr_should_announce(
or)) { ospf, (struct prefix_ipv4 *)&rn->p,
or)) {
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)
zlog_debug( zlog_debug(
"ospf_abr_process_network_rt(): denied by export-list"); "ospf_abr_process_network_rt(): denied by export-list");
continue; continue;
} }
if (or->path_type == OSPF_PATH_INTRA_AREA if (
&& !ospf_abr_plist_out_check( or->path_type == OSPF_PATH_INTRA_AREA
area, or, && !ospf_abr_plist_out_check(
(struct prefix_ipv4 *)&rn->p)) { area, or,
(struct prefix_ipv4 *)&rn->p)) {
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)
zlog_debug( zlog_debug(
"ospf_abr_process_network_rt(): denied by prefix-list"); "ospf_abr_process_network_rt(): denied by prefix-list");
@ -1269,9 +1271,10 @@ static void ospf_abr_process_router_rt(struct ospf *ospf,
continue; continue;
} }
if (or->path_type == OSPF_PATH_INTER_AREA if (
&& !OSPF_IS_AREA_ID_BACKBONE( or->path_type == OSPF_PATH_INTER_AREA
or->u.std.area_id)) { && !OSPF_IS_AREA_ID_BACKBONE(
or->u.std.area_id)) {
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)
zlog_debug( zlog_debug(
"ospf_abr_process_router_rt(): " "ospf_abr_process_router_rt(): "

View File

@ -131,60 +131,46 @@ const char *ospf_api_typename(int msgtype)
{ {
struct nametab NameTab[] = { struct nametab NameTab[] = {
{ {
MSG_REGISTER_OPAQUETYPE, MSG_REGISTER_OPAQUETYPE, "Register opaque-type",
"Register opaque-type",
}, },
{ {
MSG_UNREGISTER_OPAQUETYPE, MSG_UNREGISTER_OPAQUETYPE, "Unregister opaque-type",
"Unregister opaque-type",
}, },
{ {
MSG_REGISTER_EVENT, MSG_REGISTER_EVENT, "Register event",
"Register event",
}, },
{ {
MSG_SYNC_LSDB, MSG_SYNC_LSDB, "Sync LSDB",
"Sync LSDB",
}, },
{ {
MSG_ORIGINATE_REQUEST, MSG_ORIGINATE_REQUEST, "Originate request",
"Originate request",
}, },
{ {
MSG_DELETE_REQUEST, MSG_DELETE_REQUEST, "Delete request",
"Delete request",
}, },
{ {
MSG_REPLY, MSG_REPLY, "Reply",
"Reply",
}, },
{ {
MSG_READY_NOTIFY, MSG_READY_NOTIFY, "Ready notify",
"Ready notify",
}, },
{ {
MSG_LSA_UPDATE_NOTIFY, MSG_LSA_UPDATE_NOTIFY, "LSA update notify",
"LSA update notify",
}, },
{ {
MSG_LSA_DELETE_NOTIFY, MSG_LSA_DELETE_NOTIFY, "LSA delete notify",
"LSA delete notify",
}, },
{ {
MSG_NEW_IF, MSG_NEW_IF, "New interface",
"New interface",
}, },
{ {
MSG_DEL_IF, MSG_DEL_IF, "Del interface",
"Del interface",
}, },
{ {
MSG_ISM_CHANGE, MSG_ISM_CHANGE, "ISM change",
"ISM change",
}, },
{ {
MSG_NSM_CHANGE, MSG_NSM_CHANGE, "NSM change",
"NSM change",
}, },
}; };
@ -205,48 +191,38 @@ const char *ospf_api_errname(int errcode)
{ {
struct nametab NameTab[] = { struct nametab NameTab[] = {
{ {
OSPF_API_OK, OSPF_API_OK, "OK",
"OK",
}, },
{ {
OSPF_API_NOSUCHINTERFACE, OSPF_API_NOSUCHINTERFACE, "No such interface",
"No such interface",
}, },
{ {
OSPF_API_NOSUCHAREA, OSPF_API_NOSUCHAREA, "No such area",
"No such area",
}, },
{ {
OSPF_API_NOSUCHLSA, OSPF_API_NOSUCHLSA, "No such LSA",
"No such LSA",
}, },
{ {
OSPF_API_ILLEGALLSATYPE, OSPF_API_ILLEGALLSATYPE, "Illegal LSA type",
"Illegal LSA type",
}, },
{ {
OSPF_API_OPAQUETYPEINUSE, OSPF_API_OPAQUETYPEINUSE, "Opaque type in use",
"Opaque type in use",
}, },
{ {
OSPF_API_OPAQUETYPENOTREGISTERED, OSPF_API_OPAQUETYPENOTREGISTERED,
"Opaque type not registered", "Opaque type not registered",
}, },
{ {
OSPF_API_NOTREADY, OSPF_API_NOTREADY, "Not ready",
"Not ready",
}, },
{ {
OSPF_API_NOMEMORY, OSPF_API_NOMEMORY, "No memory",
"No memory",
}, },
{ {
OSPF_API_ERROR, OSPF_API_ERROR, "Other error",
"Other error",
}, },
{ {
OSPF_API_UNDEF, OSPF_API_UNDEF, "Undefined",
"Undefined",
}, },
}; };

View File

@ -1236,10 +1236,10 @@ static int apiserver_sync_callback(struct ospf_lsa *lsa, void *p_arg,
zlog_warn( zlog_warn(
"apiserver_sync_callback: new_msg_update failed"); "apiserver_sync_callback: new_msg_update failed");
#ifdef NOTYET #ifdef NOTYET
/* Cannot allocate new message. What should we do? */ /* Cannot allocate new message. What should we do? */
/* ospf_apiserver_free (apiserv);*/ /* Do nothing /* ospf_apiserver_free (apiserv);*/ /* Do nothing
here XXX here XXX
*/ */
#endif #endif
goto out; goto out;
} }

View File

@ -217,7 +217,7 @@ static void ospf_process_self_originated_lsa(struct ospf *ospf,
break; break;
case OSPF_OPAQUE_AS_LSA: case OSPF_OPAQUE_AS_LSA:
ospf_opaque_lsa_refresh(new); ospf_opaque_lsa_refresh(new);
/* Reconsideration may needed. */ /* XXX */ /* Reconsideration may needed. */ /* XXX */
break; break;
default: default:
break; break;
@ -281,7 +281,7 @@ int ospf_flood(struct ospf *ospf, struct ospf_neighbor *nbr,
"LSA[Flooding]: Got a self-originated LSA, " "LSA[Flooding]: Got a self-originated LSA, "
"while local one is initial instance."); "while local one is initial instance.");
; /* Accept this LSA for quick LSDB resynchronization. ; /* Accept this LSA for quick LSDB resynchronization.
*/ */
} else if (monotime_since(&current->tv_recv, NULL) } else if (monotime_since(&current->tv_recv, NULL)
< ospf->min_ls_arrival * 1000LL) { < ospf->min_ls_arrival * 1000LL) {
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)

View File

@ -361,8 +361,10 @@ static void ospf_update_network_route(struct ospf *ospf, struct route_table *rt,
} }
if (ospf->abr_type == OSPF_ABR_SHORTCUT) { if (ospf->abr_type == OSPF_ABR_SHORTCUT) {
if (or->path_type == OSPF_PATH_INTRA_AREA if (
&& !OSPF_IS_AREA_ID_BACKBONE(or->u.std.area_id)) { or->path_type == OSPF_PATH_INTRA_AREA
&& !OSPF_IS_AREA_ID_BACKBONE(
or->u.std.area_id)) {
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)
zlog_debug( zlog_debug(
"ospf_update_network_route(): Shortcut: " "ospf_update_network_route(): Shortcut: "
@ -648,7 +650,7 @@ void ospf_ia_routing(struct ospf *ospf, struct route_table *rt,
OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL( OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL(
area, rt, rtrs); area, rt, rtrs);
} else { /* No active BB connection--consider all areas } else { /* No active BB connection--consider all areas
*/ */
if (IS_DEBUG_OSPF_EVENT) if (IS_DEBUG_OSPF_EVENT)
zlog_debug( zlog_debug(
"ospf_ia_routing(): " "ospf_ia_routing(): "

View File

@ -428,9 +428,8 @@ struct ospf_interface *ospf_if_lookup_recv_if(struct ospf *ospf,
match = oi; match = oi;
else if (prefix_match(CONNECTED_PREFIX(oi->connected), else if (prefix_match(CONNECTED_PREFIX(oi->connected),
(struct prefix *)&addr)) { (struct prefix *)&addr)) {
if ((match == NULL) if ((match == NULL) || (match->address->prefixlen
|| (match->address->prefixlen < oi->address->prefixlen))
< oi->address->prefixlen))
match = oi; match = oi;
} }
} }

View File

@ -429,8 +429,8 @@ static char link_info_set(struct stream *s, struct in_addr id,
* *
* Simpler just to subtract OSPF_MAX_LSA_SIZE though. * Simpler just to subtract OSPF_MAX_LSA_SIZE though.
*/ */
ret = stream_resize(s, OSPF_MAX_PACKET_SIZE ret = stream_resize(
- OSPF_MAX_LSA_SIZE); s, OSPF_MAX_PACKET_SIZE - OSPF_MAX_LSA_SIZE);
} }
if (ret == OSPF_MAX_LSA_SIZE) { if (ret == OSPF_MAX_LSA_SIZE) {
@ -519,9 +519,8 @@ static int lsa_link_broadcast_set(struct stream *s, struct ospf_interface *oi)
dr = ospf_nbr_lookup_by_addr(oi->nbrs, &DR(oi)); dr = ospf_nbr_lookup_by_addr(oi->nbrs, &DR(oi));
/* Describe Type 2 link. */ /* Describe Type 2 link. */
if (dr if (dr && (dr->state == NSM_Full
&& (dr->state == NSM_Full || IPV4_ADDR_SAME(&oi->address->u.prefix4, &DR(oi)))
|| IPV4_ADDR_SAME(&oi->address->u.prefix4, &DR(oi)))
&& ospf_nbr_count(oi, NSM_Full) > 0) { && ospf_nbr_count(oi, NSM_Full) > 0) {
if (IS_DEBUG_OSPF(lsa, LSA_GENERATE)) if (IS_DEBUG_OSPF(lsa, LSA_GENERATE))
zlog_debug( zlog_debug(
@ -3418,7 +3417,7 @@ struct in_addr ospf_lsa_unique_id(struct ospf *ospf, struct ospf_lsdb *lsdb,
return id; return id;
} }
/* Masklen differs, then apply wildcard mask to Link State ID. /* Masklen differs, then apply wildcard mask to Link State ID.
*/ */
else { else {
masklen2ip(p->prefixlen, &mask); masklen2ip(p->prefixlen, &mask);

View File

@ -55,9 +55,7 @@
/* ospfd privileges */ /* ospfd privileges */
zebra_capabilities_t _caps_p[] = { zebra_capabilities_t _caps_p[] = {
ZCAP_NET_RAW, ZCAP_NET_RAW, ZCAP_BIND, ZCAP_NET_ADMIN,
ZCAP_BIND,
ZCAP_NET_ADMIN,
}; };
struct zebra_privs_t ospfd_privs = { struct zebra_privs_t ospfd_privs = {

View File

@ -460,8 +460,9 @@ struct ospf_neighbor *ospf_nbr_get(struct ospf_interface *oi,
if (oi->type == OSPF_IFTYPE_VIRTUALLINK if (oi->type == OSPF_IFTYPE_VIRTUALLINK
|| oi->type == OSPF_IFTYPE_POINTOPOINT) || oi->type == OSPF_IFTYPE_POINTOPOINT)
key.u.prefix4 = ospfh->router_id; /* index vlink and ptp nbrs by key.u.prefix4 =
router-id */ ospfh->router_id; /* index vlink and ptp nbrs by
router-id */
else else
key.u.prefix4 = iph->ip_src; key.u.prefix4 = iph->ip_src;

View File

@ -1358,11 +1358,12 @@ void ospf_opaque_lsa_originate_schedule(struct ospf_interface *oi, int *delay0)
* list_isempty (oipt->id_list) * list_isempty (oipt->id_list)
* not being empty. * not being empty.
*/ */
if (oipt->t_opaque_lsa_self if (
!= NULL /* Waiting for a thread call. */ oipt->t_opaque_lsa_self
|| oipt->status == PROC_SUSPEND) /* Cannot != NULL /* Waiting for a thread call. */
originate || oipt->status == PROC_SUSPEND) /* Cannot
now. */ originate
now. */
continue; continue;
ospf_opaque_lsa_reoriginate_schedule( ospf_opaque_lsa_reoriginate_schedule(
@ -1383,11 +1384,12 @@ void ospf_opaque_lsa_originate_schedule(struct ospf_interface *oi, int *delay0)
* list_isempty (oipt->id_list) * list_isempty (oipt->id_list)
* not being empty. * not being empty.
*/ */
if (oipt->t_opaque_lsa_self if (
!= NULL /* Waiting for a thread call. */ oipt->t_opaque_lsa_self
|| oipt->status == PROC_SUSPEND) /* Cannot != NULL /* Waiting for a thread call. */
originate || oipt->status == PROC_SUSPEND) /* Cannot
now. */ originate
now. */
continue; continue;
ospf_opaque_lsa_reoriginate_schedule( ospf_opaque_lsa_reoriginate_schedule(
@ -1408,11 +1410,12 @@ void ospf_opaque_lsa_originate_schedule(struct ospf_interface *oi, int *delay0)
* list_isempty (oipt->id_list) * list_isempty (oipt->id_list)
* not being empty. * not being empty.
*/ */
if (oipt->t_opaque_lsa_self if (
!= NULL /* Waiting for a thread call. */ oipt->t_opaque_lsa_self
|| oipt->status == PROC_SUSPEND) /* Cannot != NULL /* Waiting for a thread call. */
originate || oipt->status == PROC_SUSPEND) /* Cannot
now. */ originate
now. */
continue; continue;
ospf_opaque_lsa_reoriginate_schedule((void *)top, ospf_opaque_lsa_reoriginate_schedule((void *)top,

View File

@ -643,9 +643,9 @@ static int ospf_write(struct thread *thread)
#ifdef WANT_OSPF_WRITE_FRAGMENT #ifdef WANT_OSPF_WRITE_FRAGMENT
static u_int16_t ipid = 0; static u_int16_t ipid = 0;
u_int16_t maxdatasize; u_int16_t maxdatasize;
#endif /* WANT_OSPF_WRITE_FRAGMENT */ #endif /* WANT_OSPF_WRITE_FRAGMENT */
/* $FRR indent$ */ /* $FRR indent$ */
/* clang-format off */ /* clang-format off */
#define OSPF_WRITE_IPHL_SHIFT 2 #define OSPF_WRITE_IPHL_SHIFT 2
int pkt_count = 0; int pkt_count = 0;
@ -2436,15 +2436,15 @@ static int ospf_check_auth(struct ospf_interface *oi, struct ospf_header *ospfh)
return 0; return 0;
} }
/* only MD5 crypto method can pass ospf_packet_examin() */ /* only MD5 crypto method can pass ospf_packet_examin() */
if (NULL if (
== (ck = listgetdata(listtail( NULL == (ck = listgetdata(listtail(
OSPF_IF_PARAM(oi, auth_crypt)))) OSPF_IF_PARAM(oi, auth_crypt))))
|| ospfh->u.crypt.key_id != ck->key_id || || ospfh->u.crypt.key_id != ck->key_id ||
/* Condition above uses the last key ID on the list, /* Condition above uses the last key ID on the list,
which is which is
different from what ospf_crypt_key_lookup() does. A different from what ospf_crypt_key_lookup() does. A
bug? */ bug? */
!ospf_check_md5_digest(oi, ospfh)) { !ospf_check_md5_digest(oi, ospfh)) {
if (IS_DEBUG_OSPF_PACKET(ospfh->type - 1, RECV)) if (IS_DEBUG_OSPF_PACKET(ospfh->type - 1, RECV))
zlog_warn("interface %s: MD5 auth failed", zlog_warn("interface %s: MD5 auth failed",
IF_NAME(oi)); IF_NAME(oi));
@ -2548,7 +2548,7 @@ static unsigned ospf_lsa_examin(struct lsa_header *lsah, const u_int16_t lsalen,
header, "flags", header, "flags",
0, "# links" */ 0, "# links" */
ntohs(rlsa->links) /* 16 bits */ ntohs(rlsa->links) /* 16 bits */
); );
break; break;
case OSPF_AS_EXTERNAL_LSA: case OSPF_AS_EXTERNAL_LSA:
/* RFC2328 A.4.5, LSA header + 4 bytes followed by N>=1 12-bytes long /* RFC2328 A.4.5, LSA header + 4 bytes followed by N>=1 12-bytes long
@ -2772,7 +2772,7 @@ static unsigned ospf_packet_examin(struct ospf_header *oh,
bytesdeclared - OSPF_HEADER_SIZE - OSPF_LS_UPD_MIN_SIZE, bytesdeclared - OSPF_HEADER_SIZE - OSPF_LS_UPD_MIN_SIZE,
0, /* full LSAs */ 0, /* full LSAs */
ntohl(lsupd->num_lsas) /* 32 bits */ ntohl(lsupd->num_lsas) /* 32 bits */
); );
break; break;
case OSPF_MSG_LS_ACK: case OSPF_MSG_LS_ACK:
/* RFC2328 A.3.6, packet header followed by N>=0 header-only /* RFC2328 A.3.6, packet header followed by N>=0 header-only
@ -2888,8 +2888,8 @@ int ospf_read(struct thread *thread)
ospfh = (struct ospf_header *)STREAM_PNT(ibuf); ospfh = (struct ospf_header *)STREAM_PNT(ibuf);
if (MSG_OK if (MSG_OK
!= ospf_packet_examin(ospfh, stream_get_endp(ibuf) != ospf_packet_examin(
- stream_get_getp(ibuf))) ospfh, stream_get_endp(ibuf) - stream_get_getp(ibuf)))
return -1; return -1;
/* Now it is safe to access all fields of OSPF packet header. */ /* Now it is safe to access all fields of OSPF packet header. */
@ -2935,9 +2935,8 @@ int ospf_read(struct thread *thread)
* or header area is backbone but ospf_interface is not * or header area is backbone but ospf_interface is not
* check for VLINK interface * check for VLINK interface
*/ */
if ((oi == NULL) if ((oi == NULL) || (OSPF_IS_AREA_ID_BACKBONE(ospfh->area_id)
|| (OSPF_IS_AREA_ID_BACKBONE(ospfh->area_id) && !OSPF_IS_AREA_ID_BACKBONE(oi->area->area_id))) {
&& !OSPF_IS_AREA_ID_BACKBONE(oi->area->area_id))) {
if ((oi = ospf_associate_packet_vl(ospf, ifp, iph, ospfh)) if ((oi = ospf_associate_packet_vl(ospf, ifp, iph, ospfh))
== NULL) { == NULL) {
if (!ospf->instance && IS_DEBUG_OSPF_EVENT) if (!ospf->instance && IS_DEBUG_OSPF_EVENT)

View File

@ -229,16 +229,18 @@ static void ospf_route_delete_uniq(struct route_table *rt,
or->path_type == OSPF_PATH_INTER_AREA) { or->path_type == OSPF_PATH_INTER_AREA) {
if (or->type == OSPF_DESTINATION_NETWORK) { if (or->type == OSPF_DESTINATION_NETWORK) {
if (!ospf_route_exist_new_table( if (!ospf_route_exist_new_table(
cmprt, (struct prefix_ipv4 cmprt,
*)&rn->p)) (struct prefix_ipv4 *)&rn
->p))
ospf_zebra_delete( ospf_zebra_delete(
(struct prefix_ipv4 (struct prefix_ipv4
*)&rn->p, *)&rn->p,
or); or);
} else if (or->type == OSPF_DESTINATION_DISCARD) } else if (or->type == OSPF_DESTINATION_DISCARD)
if (!ospf_route_exist_new_table( if (!ospf_route_exist_new_table(
cmprt, (struct prefix_ipv4 cmprt,
*)&rn->p)) (struct prefix_ipv4 *)&rn
->p))
ospf_zebra_delete_discard( ospf_zebra_delete_discard(
(struct prefix_ipv4 (struct prefix_ipv4
*)&rn->p); *)&rn->p);

View File

@ -332,9 +332,7 @@ static route_map_result_t route_match_tag(void *rule, struct prefix *prefix,
/* Route map commands for tag matching. */ /* Route map commands for tag matching. */
static struct route_map_rule_cmd route_match_tag_cmd = { static struct route_map_rule_cmd route_match_tag_cmd = {
"tag", "tag", route_match_tag, route_map_rule_tag_compile,
route_match_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };
@ -392,9 +390,7 @@ static void route_set_metric_free(void *rule)
/* Set metric rule structure. */ /* Set metric rule structure. */
struct route_map_rule_cmd route_set_metric_cmd = { struct route_map_rule_cmd route_set_metric_cmd = {
"metric", "metric", route_set_metric, route_set_metric_compile,
route_set_metric,
route_set_metric_compile,
route_set_metric_free, route_set_metric_free,
}; };
@ -446,9 +442,7 @@ static void route_set_metric_type_free(void *rule)
/* Set metric rule structure. */ /* Set metric rule structure. */
struct route_map_rule_cmd route_set_metric_type_cmd = { struct route_map_rule_cmd route_set_metric_type_cmd = {
"metric-type", "metric-type", route_set_metric_type, route_set_metric_type_compile,
route_set_metric_type,
route_set_metric_type_compile,
route_set_metric_type_free, route_set_metric_type_free,
}; };
@ -471,9 +465,7 @@ static route_map_result_t route_set_tag(void *rule, struct prefix *prefix,
/* Route map commands for tag set. */ /* Route map commands for tag set. */
static struct route_map_rule_cmd route_set_tag_cmd = { static struct route_map_rule_cmd route_set_tag_cmd = {
"tag", "tag", route_set_tag, route_map_rule_tag_compile,
route_set_tag,
route_map_rule_tag_compile,
route_map_rule_tag_free, route_map_rule_tag_free,
}; };

View File

@ -872,9 +872,7 @@ static u_char *ospfStubAreaEntry(struct variable *v, oid *name, size_t *length,
return SNMP_INTEGER(SNMP_VALID); return SNMP_INTEGER(SNMP_VALID);
break; break;
case OSPFSTUBMETRICTYPE: /* 5 */ case OSPFSTUBMETRICTYPE: /* 5 */
/* OSPF Metric type. */ /* OSPF Metric type. */
/* $FRR indent$ */
/* clang-format off */
#define OSPF_ospfMetric 1 #define OSPF_ospfMetric 1
#define OSPF_comparableCost 2 #define OSPF_comparableCost 2
#define OSPF_nonComparable 3 #define OSPF_nonComparable 3
@ -2102,8 +2100,7 @@ static struct ospf_neighbor *ospf_snmp_nbr_lookup(struct ospf *ospf,
for (ALL_LIST_ELEMENTS(ospf->oiflist, node, nnode, oi)) { for (ALL_LIST_ELEMENTS(ospf->oiflist, node, nnode, oi)) {
for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) for (rn = route_top(oi->nbrs); rn; rn = route_next(rn))
if ((nbr = rn->info) != NULL if ((nbr = rn->info) != NULL && nbr != oi->nbr_self
&& nbr != oi->nbr_self
/* If EXACT match is needed, provide ALL entry found /* If EXACT match is needed, provide ALL entry found
&& nbr->state != NSM_Down && nbr->state != NSM_Down
*/ */

View File

@ -290,9 +290,8 @@ static void ospf_passive_interface_default(struct ospf *ospf, u_char newval)
ospf->passive_interface_default = newval; ospf->passive_interface_default = newval;
for (ALL_LIST_ELEMENTS_RO(om->iflist, ln, ifp)) { for (ALL_LIST_ELEMENTS_RO(om->iflist, ln, ifp)) {
if (ifp if (ifp && OSPF_IF_PARAM_CONFIGURED(IF_DEF_PARAMS(ifp),
&& OSPF_IF_PARAM_CONFIGURED(IF_DEF_PARAMS(ifp), passive_interface))
passive_interface))
UNSET_IF_PARAM(IF_DEF_PARAMS(ifp), passive_interface); UNSET_IF_PARAM(IF_DEF_PARAMS(ifp), passive_interface);
} }
for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, ln, oi)) { for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, ln, oi)) {
@ -395,9 +394,8 @@ DEFUN (ospf_passive_interface,
for (rn = route_top(IF_OIFS(ifp)); rn; rn = route_next(rn)) { for (rn = route_top(IF_OIFS(ifp)); rn; rn = route_next(rn)) {
struct ospf_interface *oi = rn->info; struct ospf_interface *oi = rn->info;
if (oi if (oi && (OSPF_IF_PARAM(oi, passive_interface)
&& (OSPF_IF_PARAM(oi, passive_interface) == OSPF_IF_PASSIVE))
== OSPF_IF_PASSIVE))
ospf_if_set_multicast(oi); ospf_if_set_multicast(oi);
} }
/* /*
@ -2127,8 +2125,7 @@ ALIAS(ospf_compatible_rfc1583, ospf_rfc1583_flag_cmd,
"Enable the RFC1583Compatibility flag\n") "Enable the RFC1583Compatibility flag\n")
ALIAS(no_ospf_compatible_rfc1583, no_ospf_rfc1583_flag_cmd, ALIAS(no_ospf_compatible_rfc1583, no_ospf_rfc1583_flag_cmd,
"no ospf rfc1583compatibility", "no ospf rfc1583compatibility", NO_STR
NO_STR
"OSPF specific commands\n" "OSPF specific commands\n"
"Disable the RFC1583Compatibility flag\n") "Disable the RFC1583Compatibility flag\n")
@ -2582,8 +2579,7 @@ DEFUN (no_ospf_write_multiplier,
} }
ALIAS(no_ospf_write_multiplier, no_write_multiplier_cmd, ALIAS(no_ospf_write_multiplier, no_write_multiplier_cmd,
"no write-multiplier (1-100)", "no write-multiplier (1-100)", NO_STR
NO_STR
"Write multiplier\n" "Write multiplier\n"
"Maximum number of interface serviced per write\n") "Maximum number of interface serviced per write\n")
@ -3181,9 +3177,8 @@ static int show_ip_ospf_common(struct vty *vty, struct ospf *ospf,
if (use_json) { if (use_json) {
json_object_object_add(json, "areas", json_areas); json_object_object_add(json, "areas", json_areas);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -3327,10 +3322,10 @@ static void show_ip_ospf_interface_sub(struct vty *vty, struct ospf *ospf,
dstr = "Broadcast"; dstr = "Broadcast";
/* For Vlinks, showing the peer address is /* For Vlinks, showing the peer address is
* probably more * probably more
* * * * * informative than * * * * * informative than the local
* the local interface that is being used * interface that is being used
* * * * */ * * * * */
if (oi->type == OSPF_IFTYPE_VIRTUALLINK) if (oi->type == OSPF_IFTYPE_VIRTUALLINK)
dest = &oi->vl_data->peer_addr; dest = &oi->vl_data->peer_addr;
else else
@ -3611,9 +3606,8 @@ static int show_ip_ospf_interface_common(struct vty *vty, struct ospf *ospf,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -3823,9 +3817,8 @@ static int show_ip_ospf_neighbor_common(struct vty *vty, struct ospf *ospf,
show_ip_ospf_neighbor_sub(vty, oi, json, use_json); show_ip_ospf_neighbor_sub(vty, oi, json, use_json);
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -3944,9 +3937,8 @@ static int show_ip_ospf_neighbor_all_common(struct vty *vty, struct ospf *ospf,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -4038,9 +4030,8 @@ static int show_ip_ospf_neighbor_int_common(struct vty *vty, struct ospf *ospf,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -4422,9 +4413,8 @@ static int show_ip_ospf_neighbor_id_common(struct vty *vty, struct ospf *ospf,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -4512,9 +4502,8 @@ static int show_ip_ospf_neighbor_detail_common(struct vty *vty,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -4611,9 +4600,8 @@ static int show_ip_ospf_neighbor_detail_all_common(struct vty *vty,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -4714,9 +4702,8 @@ static int show_ip_ospf_neighbor_int_detail_common(struct vty *vty,
} }
if (use_json) { if (use_json) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "\n"); vty_out(vty, "\n");

View File

@ -404,9 +404,9 @@ int pim_assert_build_msg(uint8_t *pim_msg, int buf_size, struct interface *ifp,
} }
/* Metric preference */ /* Metric preference */
pim_write_uint32(pim_msg_curr, rpt_bit_flag pim_write_uint32(pim_msg_curr,
? metric_preference | 0x80000000 rpt_bit_flag ? metric_preference | 0x80000000
: metric_preference); : metric_preference);
pim_msg_curr += 4; pim_msg_curr += 4;
/* Route metric */ /* Route metric */

View File

@ -423,9 +423,8 @@ static void pim_show_membership(struct vty *vty, u_char uj)
} /* scan interface channels */ } /* scan interface channels */
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
} else { } else {
vty_out(vty, vty_out(vty,
"Interface Address Source Group Membership\n"); "Interface Address Source Group Membership\n");
@ -589,9 +588,8 @@ static void igmp_show_interfaces(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -786,9 +784,8 @@ static void igmp_show_interfaces_single(struct vty *vty, const char *ifname,
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (!found_ifname) if (!found_ifname)
@ -1168,8 +1165,9 @@ static void pim_show_interfaces_single(struct vty *vty, const char *ifname,
print_header = 1; print_header = 1;
for (ALL_LIST_ELEMENTS_RO(pim_upstream_list, upnode, for (ALL_LIST_ELEMENTS_RO(pim_upstream_list, upnode,
up)) { up)) {
if (strcmp(ifp->name, up->rpf.source_nexthop if (strcmp(ifp->name,
.interface->name) up->rpf.source_nexthop
.interface->name)
== 0) { == 0) {
if (up->flags if (up->flags
& PIM_UPSTREAM_FLAG_MASK_FHR) { & PIM_UPSTREAM_FLAG_MASK_FHR) {
@ -1256,9 +1254,8 @@ static void pim_show_interfaces_single(struct vty *vty, const char *ifname,
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (!found_ifname) if (!found_ifname)
@ -1317,9 +1314,8 @@ static void pim_show_interfaces(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
} else { } else {
vty_out(vty, vty_out(vty,
"Interface State Address PIM Nbrs PIM DR FHR IfChannels\n"); "Interface State Address PIM Nbrs PIM DR FHR IfChannels\n");
@ -1436,9 +1432,8 @@ static void pim_show_interface_traffic(struct vty *vty, u_char uj)
} }
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -1523,9 +1518,8 @@ static void pim_show_interface_traffic_single(struct vty *vty,
} }
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
if (!found_ifname) if (!found_ifname)
@ -1628,9 +1622,8 @@ static void pim_show_join(struct vty *vty, u_char uj)
} /* scan interface channels */ } /* scan interface channels */
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -1833,9 +1826,8 @@ static void pim_show_neighbors_single(struct vty *vty, const char *neighbor,
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
{ {
@ -2039,9 +2031,8 @@ static void pim_show_state(struct vty *vty, const char *src_or_group,
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else { } else {
vty_out(vty, "\n"); vty_out(vty, "\n");
@ -2124,9 +2115,8 @@ static void pim_show_neighbors(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -2356,9 +2346,8 @@ static void pim_show_upstream(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -2442,9 +2431,8 @@ static void pim_show_join_desired(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -2481,10 +2469,7 @@ static void pim_show_upstream_rpf(struct vty *vty, u_char uj)
pim_addr_dump("<rpf?>", &rpf->rpf_addr, rpf_addr_str, pim_addr_dump("<rpf?>", &rpf->rpf_addr, rpf_addr_str,
sizeof(rpf_addr_str)); sizeof(rpf_addr_str));
rpf_ifname = rpf_ifname = rpf->source_nexthop.interface ? rpf->source_nexthop.interface->name : "<ifname?>";
rpf->source_nexthop.interface ? rpf->source_nexthop
.interface->name
: "<ifname?>";
if (uj) { if (uj) {
json_object_object_get_ex(json, grp_str, &json_group); json_object_object_get_ex(json, grp_str, &json_group);
@ -2514,9 +2499,8 @@ static void pim_show_upstream_rpf(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -2620,10 +2604,7 @@ static void pim_show_rpf(struct vty *vty, u_char uj)
&rpf->source_nexthop.mrib_nexthop_addr, &rpf->source_nexthop.mrib_nexthop_addr,
rib_nexthop_str, sizeof(rib_nexthop_str)); rib_nexthop_str, sizeof(rib_nexthop_str));
rpf_ifname = rpf_ifname = rpf->source_nexthop.interface ? rpf->source_nexthop.interface->name : "<ifname?>";
rpf->source_nexthop.interface ? rpf->source_nexthop
.interface->name
: "<ifname?>";
if (uj) { if (uj) {
json_object_object_get_ex(json, grp_str, &json_group); json_object_object_get_ex(json, grp_str, &json_group);
@ -2661,9 +2642,8 @@ static void pim_show_rpf(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -2822,9 +2802,8 @@ static void igmp_show_groups(struct vty *vty, u_char uj)
} /* scan interfaces */ } /* scan interfaces */
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -4060,9 +4039,8 @@ static void show_mroute(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -4655,9 +4633,8 @@ static void ip_pim_ssm_show_group_range(struct vty *vty, u_char uj)
json_object *json; json_object *json;
json = json_object_new_object(); json = json_object_new_object();
json_object_string_add(json, "ssmGroups", range_str); json_object_string_add(json, "ssmGroups", range_str);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "SSM group range : %s\n", range_str); vty_out(vty, "SSM group range : %s\n", range_str);
@ -4699,9 +4676,8 @@ static void ip_pim_ssm_show_group_type(struct vty *vty, u_char uj,
json_object *json; json_object *json;
json = json_object_new_object(); json = json_object_new_object();
json_object_string_add(json, "groupType", type_str); json_object_string_add(json, "groupType", type_str);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} else } else
vty_out(vty, "Group type : %s\n", type_str); vty_out(vty, "Group type : %s\n", type_str);
@ -6453,8 +6429,7 @@ DEFUN (ip_pim_bfd_param,
} }
ALIAS(no_ip_pim_bfd, no_ip_pim_bfd_param_cmd, ALIAS(no_ip_pim_bfd, no_ip_pim_bfd_param_cmd,
"no ip pim bfd (2-255) (50-60000) (50-60000)", "no ip pim bfd (2-255) (50-60000) (50-60000)", NO_STR IP_STR PIM_STR
NO_STR IP_STR PIM_STR
"Enables BFD support\n" "Enables BFD support\n"
"Detect Multiplier\n" "Detect Multiplier\n"
"Required min receive interval\n" "Required min receive interval\n"
@ -6815,9 +6790,8 @@ static void ip_msdp_show_mesh_group(struct vty *vty, u_char uj)
if (uj) { if (uj) {
json_object_object_add(json, mg->mesh_group_name, json_mg_row); json_object_object_add(json, mg->mesh_group_name, json_mg_row);
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -6884,9 +6858,8 @@ static void ip_msdp_show_peers(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -6990,9 +6963,8 @@ static void ip_msdp_show_peers_detail(struct vty *vty, const char *peer,
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -7089,9 +7061,8 @@ static void ip_msdp_show_sa(struct vty *vty, u_char uj)
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -7182,9 +7153,8 @@ static void ip_msdp_show_sa_detail(struct vty *vty, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -7227,9 +7197,8 @@ static void ip_msdp_show_sa_addr(struct vty *vty, const char *addr, u_char uj)
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }
@ -7257,9 +7226,8 @@ static void ip_msdp_show_sa_sg(struct vty *vty, const char *src,
} }
if (uj) { if (uj) {
vty_out(vty, "%s\n", vty_out(vty, "%s\n", json_object_to_json_string_ext(
json_object_to_json_string_ext( json, JSON_C_TO_STRING_PRETTY));
json, JSON_C_TO_STRING_PRETTY));
json_object_free(json); json_object_free(json);
} }
} }

View File

@ -78,9 +78,10 @@ struct pim_interface {
struct in_addr update_source; /* user can statically set the primary struct in_addr update_source; /* user can statically set the primary
* address of the interface */ * address of the interface */
int igmp_version; /* IGMP version */ int igmp_version; /* IGMP version */
int igmp_default_robustness_variable; /* IGMPv3 QRV */ int igmp_default_robustness_variable; /* IGMPv3 QRV */
int igmp_default_query_interval; /* IGMPv3 secs between general int
igmp_default_query_interval; /* IGMPv3 secs between general
queries */ queries */
int igmp_query_max_response_time_dsec; /* IGMPv3 Max Response Time in int igmp_query_max_response_time_dsec; /* IGMPv3 Max Response Time in
dsecs for general queries */ dsecs for general queries */

View File

@ -814,9 +814,8 @@ void pim_ifchannel_join_add(struct interface *ifp, struct in_addr neigh_addr,
/* /*
* If we are going to be a LHR, we need to note it * If we are going to be a LHR, we need to note it
*/ */
if (ch->upstream->parent if (ch->upstream->parent && (ch->upstream->parent->flags
&& (ch->upstream->parent->flags & PIM_UPSTREAM_FLAG_MASK_SRC_IGMP)
& PIM_UPSTREAM_FLAG_MASK_SRC_IGMP)
&& !(ch->upstream->flags && !(ch->upstream->flags
& PIM_UPSTREAM_FLAG_MASK_SRC_LHR)) { & PIM_UPSTREAM_FLAG_MASK_SRC_LHR)) {
pim_upstream_ref(ch->upstream, pim_upstream_ref(ch->upstream,

View File

@ -53,10 +53,7 @@ struct option longopts[] = {{0}};
/* pimd privileges */ /* pimd privileges */
zebra_capabilities_t _caps_p[] = { zebra_capabilities_t _caps_p[] = {
ZCAP_NET_ADMIN, ZCAP_NET_ADMIN, ZCAP_SYS_ADMIN, ZCAP_NET_RAW, ZCAP_BIND,
ZCAP_SYS_ADMIN,
ZCAP_NET_RAW,
ZCAP_BIND,
}; };
/* pimd privileges to run with */ /* pimd privileges to run with */

Some files were not shown because too many files have changed in this diff Show More