Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

bgpd: vpn - vrf route leaking #1739

Merged

Conversation

paulzlabn
Copy link
Contributor

bgpd: vpn-vrf route leaking (includes default instance unicast as special case of vrf)

@LabN-CI
Copy link
Collaborator

LabN-CI commented Feb 10, 2018

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1739 480cef0
Date 02/10/2018
Start 01:35:11
Finish 01:58:17
Run-Time 23:06
Total 1805
Pass 1805
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-02-10-01:35:11.txt
Log autoscript-2018-02-10-01:35:48.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2547/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.


CLANG Static Analyzer Summary

  • Github Pull Request 1739, comparing to Git base SHA 5651675

New warnings:

Static Analysis warning summary compared to base:

  • Fixed warnings: 0
  • New warnings: 1

21 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2547/artifact/shared/static_analysis/index.html

@paulzlabn
Copy link
Contributor Author

The "new" static analysis issue at ripd/ripd.c line 2325 seems to have already been addressed in commit aea175a

@LabN-CI
Copy link
Collaborator

LabN-CI commented Feb 12, 2018

🚧 Basic BGPD CI results: Partial FAILURE, 1 tests failed

Results table
_ _
Result SUCCESS git merge/1739 3cf2192
Date 02/12/2018
Start 16:20:13
Finish 16:44:37
Run-Time 24:24
Total 1808
Pass 1807
Fail 1
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-02-12-16:20:13.txt
Log autoscript-2018-02-12-16:20:49.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2552/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.


CLANG Static Analyzer Summary

  • Github Pull Request 1739, comparing to Git base SHA 5651675

New warnings:

Static Analysis warning summary compared to base:

  • Fixed warnings: 0
  • New warnings: 1

21 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2552/artifact/shared/static_analysis/index.html

Copy link
Member

@pguibert6WIND pguibert6WIND left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

first walk through the changes.
I guess there will be some more zebra changes ?

bgpd/bgp_zebra.c Outdated
}
#endif
zlog_debug("%s: withdraw vpn->vrf", __func__); /* TBD delete me */
/* vpn -> vrf (happend within bgp but we hijack redist bits */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this trace will be cleaned I suppose.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes commit 480cef0

ECOMMUNITY_FORMAT_ROUTE_MAP,
ECOMMUNITY_ROUTE_TARGET);
vty_out(vty, " rt fromvpn %s\n", b);
XFREE(MTYPE_ECOMMUNITY_STR, b);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was there an agreement on the vty naming convention ?
rt from vpn <=> rt export
rt to vpn <=> rt import
?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not think we achieved consensus. This is placeholder CLI so we can exercise code until we finalize syntax.

info_vrf->type);

if (info_vrf->type == ZEBRA_ROUTE_BGP_VPN) {
/* loop check! */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useless braces.
you can simplify

@FRRouting FRRouting deleted a comment from NetDEF-CI Feb 13, 2018
@FRRouting FRRouting deleted a comment from LabN-CI Feb 13, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Feb 13, 2018
@FRRouting FRRouting deleted a comment from LabN-CI Feb 13, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Feb 13, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Feb 13, 2018
@@ -233,6 +236,762 @@ int bgp_nlri_parse_vpn(struct peer *peer, struct attr *attr,
#undef VPN_PREFIXLEN_MIN_BYTES
}

static int ecom_intersect(struct ecommunity *e1, struct ecommunity *e2)
Copy link
Contributor

@mkanjari mkanjari Feb 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be moved to bgp_ecommunity.c and Could we please add a little description of what the API is suppose to do ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using ecom_intersect() is fine but as a second step, we should do some optimization. In EVPN, we have built a hash of VRFs that are interested in a particular RT and so there is just a hash lookup (per RT in route) followed by getting the interested VRFs. @mkanjari or I could help do the optimization too after initial commit of this code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that optimization in this way is a good idea. After this round is committed, let's revisit.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds fine to me


bgp_attr_unintern(&new_attr);
if (debug)
zlog_debug("%s: Found route, no change",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have a more specific debug statement ? This is pretty generic and won't give any information while debugging. Or if this is not necessary, can we please remove it ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It gives an indication of which code branch was taken. What additional information would you like to see?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some additional information like the prefix at the least ? generally we will grep for a specific prefix or some attr while debugging. It will be helpful if we print that information too in the same line.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sounds like a good idea. Let me look at these more closely...

bgp_unlock_node(bn);

if (debug)
zlog_debug("%s: Found route, changed attr", __func__);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, we need a more spefic debug statement here.

bgp_unlock_node(bn);
bgp_process(bgp, bn, afi, safi);

if (debug)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above.

@vivek-cumulus
Copy link
Contributor

@paulzlabn - I have gone over the code flow pretty completely. The code is pretty easy to follow! Well done!

I will refrain from comments on the CLI since we're discussing that internally - except for one point below. I have a few general comments below and a few specific comments which I'll include inline.

  1. I do not agree with a new route type "BGP VPN". These are just fundamentally BGP routes from zebra and the forwarding plane (kernel)'s perspective. The distinction only matters to BGP - the loop check itself clearly needs to be done (i.e., "imported" route cannot be "exported" back etc.). We had done this a particular way for EVPN, but wanted to change it and I was going to use an additional sub-type in BGP - BGP_ROUTE_IMPORTED or so. I'd very much recommend this.

  2. When routes get exported from a VRF to the VPN table, the subtype should really correspond to the source route - so a BGP learnt route should have ROUTE_NORMAL while a network should have ROUTE_STATIC etc.

  3. The code attempts to export all routes (i.e., route entry/info) from VRF table to VPN table and vice versa (based on configs). This is debatable, it may be ok to just export the selected path. The more important issue is that the parent reference is wrong because it points to the "source VRF" not the "source route info". This means that we'll end up treating different paths in one table as a single one in the other table leading to all kinds of problems. (I know this from experience, my initial EVPN code on private tree had a similar problem).

  4. I think it is wrong to rely on "redistribute" mechanism and corresponding settings for import from VPN table to VRF table. Redistribute is really between protocol and zebra. If we want to have a parallel control to "export vpn", let us have an "import vpn".

  5. There are no calls to export/unexport from VPN table to VRF table(s) in bgp_update() and bgp_withdraw() i.e., no calls to vpn_leak_to_vrf_update/withdraw() when the safi is SAFI_MPLS_VPN.

@@ -4478,6 +4523,11 @@ static void bgp_static_update_safi(struct bgp *bgp, struct prefix *p,
/* Process change. */
bgp_aggregate_increment(bgp, p, ri, afi, safi);
bgp_process(bgp, rn, afi, safi);

if (SAFI_UNICAST == safi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This check seems wrong, the safi should be SAFI_MPLS_VPN here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, fixed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What safi is supposed to be here? @paulzlabn I see agreement but I don't see the change here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@donaldsharp In bgp_static_withdraw_safi() and bgp_static_update_safi(), it should be SAFI_MPLS_VPN because it applies to routes originating in ipv4|ipv6 vpn and leaking to a unicast vrf. In bgp_static_update() and bgp_static_withdraw(), it should be SAFI_UNICAST because it applies to routes that originate in a unicast vrf and leaking to ipv4|ipv6 vpn.


for (bi = bn->info; bi; bi = bi->next) {

if (bi->type == ZEBRA_ROUTE_BGP_VPN)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mentioned in my general comment too, but in addition, this won't work for VRF-route-leaking because the route exported from (one) VRF to the VPN table is of type ZEBRA_ROUTE_BGP_VPN and this check will prevent it being imported into another VRF - unless I misunderstood.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. For now I have added a check also between the source and destination vrf, which should permit vrf1->vpn->vrf2.

bgpd/bgp_vty.c Outdated
if (nhself) {
UNSET_FLAG(bgp->vpn_policy[afi].flags,
BGP_VPN_POLICY_TOVPN_NEXTHOP_SET);
continue;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This "continue" seems incorrect. Don't we have to do the vpn_leak_postchange() even if the nexthop is set to "self"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Fixed.

}

/* Set originator ID to "me" */
SET_FLAG(static_attr.flag, ATTR_FLAG_BIT(BGP_ATTR_ORIGINATOR_ID));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought the use/need of the Originator ID is only for Route Reflection. Why is it being set here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that the originator id is only included in the outgoing update when bgpd is acting as a RR:

 bgp_attr.c:
 3078         /* Route Reflector. */
 3079         if (peer->sort == BGP_PEER_IBGP && from
 3080             && from->sort == BGP_PEER_IBGP) {
 3081                 /* Originator ID. */
 3082                 stream_putc(s, BGP_ATTR_FLAG_OPTIONAL);
 3083                 stream_putc(s, BGP_ATTR_ORIGINATOR_ID);
 3084                 stream_putc(s, 4);
 3085
 3086                 if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ORIGINATOR_ID))
 3087                         stream_put_in_addr(s, &attr->originator_id);
 3088                 else
 3089                         stream_put_in_addr(s, &from->remote_id);

imported/exported routes still have their original peer value, which can lead to the wrong originator id when we act as RR (problem we encountered some years ago in the vnc/rfapi code). Always setting it seems to do the right thing. Does this approach break anything?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems okay to always set the originator id -- it is generally ignored except in the case of an RR. Might be worth having @dwalton76 comment here, however, to be certain.

@vivek-cumulus
Copy link
Contributor

One more general comment. The calls to vpn_leak_from_vrf_update()/withdraw() is missing in the route redistribute code path (say, when 'static' or 'ospf' route in a VRF is redistributed into BGP).

@paulzlabn
Copy link
Contributor Author

paulzlabn commented Feb 16, 2018

Vivek, thank you for the detailed comments. I will follow up to your comments on specific code blocks individually, but here are responses to your numbered items:

  1. ZEBRA_ROUTE_BGP_VPN: I agree, a BGP sub_type would work instead. My main consideration was to make it efficient for the code to find and delete a) all routes in the VPN RIB that came from a particular VRF; and b) all routes in a VRF that came from the VPN.

In case (a), the current code tests bi->extra->parent against (struct bgp *)bgp_vrf, so the type check is not critical. However, we should be able to flag VPN RIB routes that came from a vrf in the "show route" output somehow. Also, if I stop abusing bi->extra->parent (per your comment 3), there needs to be some way for the code to identify VPN RIB routes that were imported from a specific vrf. Maybe a new vrf field in struct bgp_info_extra?

In case (b), if we have a BGP_ROUTE_VPN sub_type, that would suffice (see vpn_leak_to_vrf_withdraw_all())

  1. This would be OK as long as there is some other efficient way to identify routes in the VPN RIB that came from a particular VPN, for deletion efficiency and for user display.

  2. a) exporting all routes vs. selected path: I am not sure which is better, but I'd like to ask lberger to offer an opinion here.

b) bi->extra->parent: Although I don't see a conflict with the existing code (maybe there is one I don't see), I agree that putting the source bgp_vrf pointer there is not the original purpose. If nobody minds the extra memory usage, I could add a new field to struct bgp_info_extra.

  1. redistribute vs. "import vpn": I am OK with using "export vpn" instead. I anticipate some CLI changes as we reach consensus, so I'd like to wait for that discussion and make changes afterward.

  2. Oops. I'll fix this anon.

@louberger
Copy link
Member

louberger commented Feb 16, 2018 via email

@paulzlabn
Copy link
Contributor Author

calls to vpn_leak_from_vrf_update()/withdraw() is missing in the route redistribute code path

Thank you for catching that, fixing now...

@paulzlabn
Copy link
Contributor Author

@vivek-cumulus Here is a proposal to do away with ZEBRA_ROUTE_BGP_VPN and parent = bgp_vrf

1. remove route type ZEBRA_ROUTE_BGP_VPN
2. add route sub_type BGP_ROUTE_IMPORTED
3. add field to struct bgp_info_extra: "struct bgp *imported_from;"
4. vrf->vpn leak sets bi->extra->parent to vrf bi

5. User route display has the option of doing:

    if (bi->sub_type == BGP_ROUTE_IMPORTED)
            char *source = bi->extra->imported_from->name;

6. Loop check vpn->vrf will look like:

    if (!  (bi->sub_type == BGP_ROUTE_IMPORTED &&
            bi->extra->imported_from == bgp_vrf)) {

            vpn_leak_to_vrf(...);
    }

7. Loop check vrf->vpn will look like:

    if (bi->sub_type != BGP_ROUTE_IMPORTED) {

        /* maybe also check bi->extra->imported_from for future-proofing */

        vpn_leak_from_vrf(...);
    }

8. withdraw all vpn routes that were imported from a specific vrf:

    if (bi->sub_type == BGP_ROUTE_IMPORTED &&
        bi->extra->imported_from == bgp_vrf) {

        withdraw...
    }

9. withdraw all vrf routes that were imported from vpn:

    if (bi->sub_type == BGP_ROUTE_IMPORTED) {

        /* maybe also check bi->extra->imported_from for future-proofing */

        withdraw...
    }

@LabN-CI
Copy link
Collaborator

LabN-CI commented Feb 16, 2018

🚧 Basic BGPD CI results: Partial FAILURE, 1 tests failed

Results table
_ _
Result SUCCESS git merge/1739 4d2fb62
Date 02/16/2018
Start 14:27:53
Finish 14:52:12
Run-Time 24:19
Total 1805
Pass 1804
Fail 1
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-02-16-14:27:53.txt
Log autoscript-2018-02-16-14:28:28.log.bz2

For details, please contact louberger

@mwinter-osr mwinter-osr self-requested a review March 14, 2018 00:29
@donaldsharp
Copy link
Member

@pguibert6WIND @qlyoung where are we on the review?

@paulzlabn can you update to get rid of the conflict?

@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@FRRouting FRRouting deleted a comment from NetDEF-CI Mar 14, 2018
@paulzlabn
Copy link
Contributor Author

I just realized there were some more comments from last week which I hadn't addressed. Changeset incoming...

@LabN-CI
Copy link
Collaborator

LabN-CI commented Mar 14, 2018

🛑 Basic BGPD CI results: FAILURE

Results table
_ _
Result FAILURE git merge/1739 3f1224c frr.github Build
Date 03/14/2018
Start 16:37:17
Finish 16:37:38
Run-Time 00:21
Total
Pass
Fail
Valgrind-Errors
Valgrind-Loss
Details vncregress-2018-03-14-16:37:17.txt
Log make-2018-03-14-16:37:17.out.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

Fedora24 amd64 build: Failed

Make failed for Fedora24 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI015BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

Fedora24 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI015BUILD/config.status/config.status

FreeBSD11 amd64 build: Failed

Make failed for FreeBSD11 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI009BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:9: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

FreeBSD11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI009BUILD/config.status/config.status

NetBSD7 amd64 build: Failed

Make failed for NetBSD7 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI012BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:2: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

NetBSD7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI012BUILD/config.status/config.status

Ubuntu1604 amd64 build: Failed

Make failed for Ubuntu1604 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI014BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu1604 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI014BUILD/config.status/config.status

Ubuntu 16.04 i386: Failed

Make failed for Ubuntu 16.04 i386:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/U1604I386/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu 16.04 i386: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/U1604I386/config.status/config.status

NetBSD6 amd64 build: Failed

Make failed for NetBSD6 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI007BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:2: error: too few arguments to function 'zebra_server_send_message'
zebra/zserv.c:75:5: note: declared here
zebra/zserv.c: At top level:
zebra/zserv.c:614:12: warning: 'zsend_write_nexthop' defined but not used
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:612:1: warning: control reaches end of non-void function
gmake[2]: *** [Makefile:3653: zebra/zserv.o] Error 1

NetBSD6 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI007BUILD/config.status/config.status

CentOS7 amd64 build: Failed

Make failed for CentOS7 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI005BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

CentOS7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI005BUILD/config.status/config.status

Debian8 amd64 build: Failed

Make failed for Debian8 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI008BLD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Debian8 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI008BLD/config.status/config.status

CentOS6 amd64 build: Failed

Make failed for CentOS6 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI006BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611: error: too few arguments to function zebra_server_send_message
At top level:
cc1: warning: unrecognized command line option "-Wno-unused-result"
make[2]: Leaving directory `/home/ci/cibuild.2903/frr-source'
make[2]: *** [zebra/zserv.o] Error 1
make[1]: Leaving directory `/home/ci/cibuild.2903/frr-source'
make[1]: *** [all-recursive] Error 1

CentOS6 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI006BUILD/config.status/config.status

FreeBSD10 amd64 build: Failed

Make failed for FreeBSD10 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI003BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:9: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

FreeBSD10 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI003BUILD/config.status/config.status

FreeBSD9 amd64 build: Failed

Make failed for FreeBSD9 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI004BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611: error: too few arguments to function 'zebra_server_send_message'
gmake[2]: *** [Makefile:3653: zebra/zserv.o] Error 1
gmake[2]: Leaving directory '/usr/home/ci/cibuild.2903/frr-source'
gmake[1]: *** [Makefile:4319: all-recursive] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.2903/frr-source'
gmake: *** [Makefile:1908: all] Error 2

FreeBSD9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI004BUILD/config.status/config.status

Debian9 amd64 build: Failed

Debian9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI021BUILD/config.status/config.status
Make failed for Debian9 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI021BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

OmniOS amd64 build: Failed

Make failed for OmniOS amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI010BUILD/ErrorLog/log_make.txt)

checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether gcc supports -diag-error 10006... no
checking whether gcc supports -std=gnu11... yes
checking whether gcc -std=gnu11 supports -g... yes
checking whether gcc -std=gnu11 supports -Os... yes
checking whether gcc -std=gnu11 supports -fno-omit-frame-pointer... yes
checking whether gcc -std=gnu11 supports -funwind-tables... yes
checking whether gcc -std=gnu11 supports -Wall... yes

OmniOS amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI010BUILD/config.status/config.status

Ubuntu1404 amd64 build: Failed

Make failed for Ubuntu1404 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI001BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu1404 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI001BUILD/config.status/config.status

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611: error: too few arguments to function 'zebra_server_send_message'
gmake[2]: *** [Makefile:3652: zebra/zserv.o] Error 1
gmake[2]: Leaving directory '/home/ci/cibuild.2903/frr-source'
gmake[1]: *** [Makefile:4318: all-recursive] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.2903/frr-source'
gmake: *** [Makefile:1907: all] Error 2

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI011BUILD/config.status/config.status

Ubuntu1204 amd64 build: Failed

Make failed for Ubuntu1204 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI002BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
zebra/zserv.c:75:5: note: declared here
zebra/zserv.c: At top level:
zebra/zserv.c:614:12: warning: zsend_write_nexthop defined but not used [-Wunused-function]
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]
make[2]: Leaving directory `/home/ci/cibuild.2903/frr-source'

Ubuntu1204 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI002BUILD/config.status/config.status


Warnings Generated during build:

Checkout code: Successful with additional warnings:

Fedora24 amd64 build: Failed

Make failed for Fedora24 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI015BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

Fedora24 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI015BUILD/config.status/config.status

FreeBSD11 amd64 build: Failed

Make failed for FreeBSD11 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI009BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:9: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

FreeBSD11 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI009BUILD/config.status/config.status

NetBSD7 amd64 build: Failed

Make failed for NetBSD7 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI012BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:2: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

NetBSD7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI012BUILD/config.status/config.status

Ubuntu1604 amd64 build: Failed

Make failed for Ubuntu1604 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI014BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu1604 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI014BUILD/config.status/config.status

Ubuntu 16.04 i386: Failed

Make failed for Ubuntu 16.04 i386:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/U1604I386/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu 16.04 i386: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/U1604I386/config.status/config.status

NetBSD6 amd64 build: Failed

Make failed for NetBSD6 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI007BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:2: error: too few arguments to function 'zebra_server_send_message'
zebra/zserv.c:75:5: note: declared here
zebra/zserv.c: At top level:
zebra/zserv.c:614:12: warning: 'zsend_write_nexthop' defined but not used
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:612:1: warning: control reaches end of non-void function
gmake[2]: *** [Makefile:3653: zebra/zserv.o] Error 1

NetBSD6 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI007BUILD/config.status/config.status

CentOS7 amd64 build: Failed

Make failed for CentOS7 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI005BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

CentOS7 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI005BUILD/config.status/config.status

Debian8 amd64 build: Failed

Make failed for Debian8 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI008BLD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Debian8 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI008BLD/config.status/config.status

CentOS6 amd64 build: Failed

Make failed for CentOS6 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI006BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611: error: too few arguments to function zebra_server_send_message
At top level:
cc1: warning: unrecognized command line option "-Wno-unused-result"
make[2]: Leaving directory `/home/ci/cibuild.2903/frr-source'
make[2]: *** [zebra/zserv.o] Error 1
make[1]: Leaving directory `/home/ci/cibuild.2903/frr-source'
make[1]: *** [all-recursive] Error 1

CentOS6 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI006BUILD/config.status/config.status

FreeBSD10 amd64 build: Failed

Make failed for FreeBSD10 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI003BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611:9: error: too few arguments to function 'zebra_server_send_message'
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

FreeBSD10 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI003BUILD/config.status/config.status

FreeBSD9 amd64 build: Failed

Make failed for FreeBSD9 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI004BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611: error: too few arguments to function 'zebra_server_send_message'
gmake[2]: *** [Makefile:3653: zebra/zserv.o] Error 1
gmake[2]: Leaving directory '/usr/home/ci/cibuild.2903/frr-source'
gmake[1]: *** [Makefile:4319: all-recursive] Error 1
gmake[1]: Leaving directory '/usr/home/ci/cibuild.2903/frr-source'
gmake: *** [Makefile:1908: all] Error 2

FreeBSD9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI004BUILD/config.status/config.status

Debian9 amd64 build: Failed

Debian9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI021BUILD/config.status/config.status
Make failed for Debian9 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI021BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:9: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]

OmniOS amd64 build: Failed

Make failed for OmniOS amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI010BUILD/ErrorLog/log_make.txt)

checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether gcc supports -diag-error 10006... no
checking whether gcc supports -std=gnu11... yes
checking whether gcc -std=gnu11 supports -g... yes
checking whether gcc -std=gnu11 supports -Os... yes
checking whether gcc -std=gnu11 supports -fno-omit-frame-pointer... yes
checking whether gcc -std=gnu11 supports -funwind-tables... yes
checking whether gcc -std=gnu11 supports -Wall... yes

OmniOS amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI010BUILD/config.status/config.status

Ubuntu1404 amd64 build: Failed

Make failed for Ubuntu1404 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI001BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
  return zebra_server_send_message(client);
  ^
zebra/zserv.c:75:5: note: declared here
 int zebra_server_send_message(struct zserv *client, struct stream *msg)
     ^
zebra/zserv.c: At top level:

Ubuntu1404 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI001BUILD/config.status/config.status

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function 'zsend_redistribute_route':
zebra/zserv.c:611: error: too few arguments to function 'zebra_server_send_message'
gmake[2]: *** [Makefile:3652: zebra/zserv.o] Error 1
gmake[2]: Leaving directory '/home/ci/cibuild.2903/frr-source'
gmake[1]: *** [Makefile:4318: all-recursive] Error 1
gmake[1]: Leaving directory '/home/ci/cibuild.2903/frr-source'
gmake: *** [Makefile:1907: all] Error 2

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI011BUILD/config.status/config.status

Ubuntu1204 amd64 build: Failed

Make failed for Ubuntu1204 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI002BUILD/ErrorLog/log_make.txt)

  CC       zebra/zserv.o
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:611:2: error: too few arguments to function zebra_server_send_message
zebra/zserv.c:75:5: note: declared here
zebra/zserv.c: At top level:
zebra/zserv.c:614:12: warning: zsend_write_nexthop defined but not used [-Wunused-function]
zebra/zserv.c: In function zsend_redistribute_route:
zebra/zserv.c:612:1: warning: control reaches end of non-void function [-Wreturn-type]
make[2]: Leaving directory `/home/ci/cibuild.2903/frr-source'

Ubuntu1204 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2903/artifact/CI002BUILD/config.status/config.status

Report for bgpd.h
===============================================
< WARNING: do not add new typedefs
< #162: FILE: /tmp/f1/bgpd.h:162:
< +typedef enum {
< 
Report for bgp_mplsvpn.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #266: FILE: /tmp/f1/bgp_mplsvpn.c:266:
< +	if (debug && (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT)) {
< +		name = bgp->name;
--
< WARNING: quoted string split across lines
< #274: FILE: /tmp/f1/bgp_mplsvpn.c:274:
< +				"%s: vrf %s: afi %s: vrf_id not set, "
< +				"can't set zebra vrf label",
--
< WARNING: braces {} are not necessary for single statement blocks
< #280: FILE: /tmp/f1/bgp_mplsvpn.c:280:
< +	if (vpn_leak_to_vpn_active(bgp, afi, NULL)) {
< +		label = bgp->vpn_policy[afi].tovpn_label;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #511: FILE: /tmp/f1/bgp_mplsvpn.c:511:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: braces {} are not necessary for single statement blocks
< #716: FILE: /tmp/f1/bgp_mplsvpn.c:716:
< +		if (bi->extra && bi->extra->parent == info_vrf) {
< +			break;
--
< WARNING: Missing a blank line after declarations
< #734: FILE: /tmp/f1/bgp_mplsvpn.c:734:
< +				    struct bgp *bgp_vrf, /* from */
< +				    afi_t afi)
--
< WARNING: Missing a blank line after declarations
< #794: FILE: /tmp/f1/bgp_mplsvpn.c:794:
< +				  struct bgp *bgp_vrf, /* from */
< +				  afi_t afi)
--
< WARNING: Comparisons should place the constant on the right side of the test
< #908: FILE: /tmp/f1/bgp_mplsvpn.c:908:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #928: FILE: /tmp/f1/bgp_mplsvpn.c:928:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: line over 80 characters
< #935: FILE: /tmp/f1/bgp_mplsvpn.c:935:
< +						.rmap[BGP_VPN_POLICY_DIR_FROMVPN]
< 
< WARNING: Missing a blank line after declarations
< #957: FILE: /tmp/f1/bgp_mplsvpn.c:957:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1081: FILE: /tmp/f1/bgp_mplsvpn.c:1081:
< +				struct bgp *bgp_vpn, /* from */
< +				afi_t afi)
--
< WARNING: quoted string split across lines
< #1186: FILE: /tmp/f1/bgp_mplsvpn.c:1186:
< +					"%s: rmap \"%s\" matches vrf-policy fromvpn"
< +					" for as %d afi %s",
Report for bgp_mplsvpn.h
===============================================
< WARNING: line over 80 characters
< #119: FILE: /tmp/f1/bgp_mplsvpn.h:119:
< +			*pmsg = "destination bgp instance neither vrf nor default";
< 
Report for bgp_route.c
===============================================
< WARNING: Missing a blank line after declarations
< #2009: FILE: /tmp/f1/bgp_route.c:2009:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3204: FILE: /tmp/f1/bgp_route.c:3204:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3211: FILE: /tmp/f1/bgp_route.c:3211:
---
> #3141: FILE: /tmp/f2/bgp_route.c:3141:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3331: FILE: /tmp/f1/bgp_route.c:3331:
< +	if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3337: FILE: /tmp/f1/bgp_route.c:3337:
---
> #3257: FILE: /tmp/f2/bgp_route.c:3257:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3380: FILE: /tmp/f1/bgp_route.c:3380:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3397: FILE: /tmp/f1/bgp_route.c:3397:
---
> #3305: FILE: /tmp/f2/bgp_route.c:3305:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3474: FILE: /tmp/f1/bgp_route.c:3474:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3479: FILE: /tmp/f1/bgp_route.c:3479:
< +		if ((SAFI_MPLS_VPN == safi)
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4372: FILE: /tmp/f1/bgp_route.c:4372:
< +			if (SAFI_UNICAST == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4427: FILE: /tmp/f1/bgp_route.c:4427:
< +	if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4453: FILE: /tmp/f1/bgp_route.c:4453:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4493: FILE: /tmp/f1/bgp_route.c:4493:
< +		if (SAFI_MPLS_VPN == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4626: FILE: /tmp/f1/bgp_route.c:4626:
< +			if (SAFI_MPLS_VPN == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4666: FILE: /tmp/f1/bgp_route.c:4666:
< +	if (SAFI_MPLS_VPN == safi
< 
Report for bgp_updgrp_adv.c
===============================================
< WARNING: Missing a blank line after declarations
< #118: FILE: /tmp/f1/bgp_updgrp_adv.c:118:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&ctx->rn->p, buf_prefix, sizeof(buf_prefix));
Report for bgp_vty.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #6432: FILE: /tmp/f1/bgp_vty.c:6432:
< +	if (*list) {
< +		ecommunity_free(&*list);
--
< WARNING: braces {} are not necessary for single statement blocks
< #6467: FILE: /tmp/f1/bgp_vty.c:6467:
< +	if (ret != CMD_SUCCESS) {
< +		return ret;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #11674: FILE: /tmp/f1/bgp_vty.c:11674:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11682: FILE: /tmp/f1/bgp_vty.c:11682:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11714: FILE: /tmp/f1/bgp_vty.c:11714:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11722: FILE: /tmp/f1/bgp_vty.c:11722:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Missing a blank line after declarations
< #11754: FILE: /tmp/f1/bgp_vty.c:11754:
< +		char buf[RD_ADDRSTRLEN];
< +		vty_out(vty, "    rd %s\n",
--
< WARNING: Missing a blank line after declarations
< #11762: FILE: /tmp/f1/bgp_vty.c:11762:
< +		char buf[PREFIX_STRLEN];
< +		if (inet_ntop(bgp->vpn_policy[afi].tovpn_nexthop.family,
Report for bgp_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #1088: FILE: /tmp/f1/bgp_zebra.c:1088:
< +				char buf_prefix[PREFIX_STRLEN];
< +				prefix2str(&api.prefix, buf_prefix,
--
< WARNING: Block comments use a trailing */ on a separate line
< #1152: FILE: /tmp/f1/bgp_zebra.c:1152:
< +				   apply doesn't modify the BGP route info. */
< 
< WARNING: Block comments use * on subsequent lines
< #1167: FILE: /tmp/f1/bgp_zebra.c:1167:
---
> #1100: FILE: /tmp/f2/bgp_zebra.c:1100:
Report for ospf_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #954: FILE: /tmp/f1/ospf_zebra.c:954:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
Report for zserv.c
===============================================
< WARNING: Missing a blank line after declarations
< #603: FILE: /tmp/f1/zserv.c:603:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1191: FILE: /tmp/f1/zserv.c:1191:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: braces {} are not necessary for single statement blocks
< #1222: FILE: /tmp/f1/zserv.c:1222:
< +			if (IS_ZEBRA_DEBUG_RECV) {
< +				zlog_debug("nh type %d", api_nh->type);
--
< WARNING: Missing a blank line after declarations
< #1234: FILE: /tmp/f1/zserv.c:1234:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,
--
< WARNING: Missing a blank line after declarations
< #1256: FILE: /tmp/f1/zserv.c:1256:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,

Copy link
Member

@mwinter-osr mwinter-osr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Executed full RFC compliance for OSPFv2, OSPFv3, ISIS IPv4 & IPv6, BGP4 IPv4 & IPv6, LDP and all good (same as master & 4.0)

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

FreeBSD11 amd64 build: Successful
OpenBSD60 amd64 build: Successful
NetBSD6 amd64 build: Successful
CentOS7 amd64 build: Successful
Fedora24 amd64 build: Successful
OmniOS amd64 build: Successful
NetBSD7 amd64 build: Successful
CentOS6 amd64 build: Successful
FreeBSD10 amd64 build: Successful
FreeBSD9 amd64 build: Successful
Ubuntu1404 amd64 build: Successful
Ubuntu1204 amd64 build: Successful

Debian9 amd64 build: Failed

Debian9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI021BUILD/config.status/config.status
Package building failed for Debian9 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI021BUILD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu 16.04 i386: Failed

Package building failed for Ubuntu 16.04 i386:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/U1604I386/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu 16.04 i386: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/U1604I386/config.status/config.status

Ubuntu1604 amd64 build: Failed

Package building failed for Ubuntu1604 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI014BUILD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu1604 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI014BUILD/config.status/config.status

Debian8 amd64 build: Failed

Package building failed for Debian8 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI008BLD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Debian8 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI008BLD/config.status/config.status


Warnings Generated during build:

Checkout code: Successful with additional warnings:

Debian9 amd64 build: Failed

Debian9 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI021BUILD/config.status/config.status
Package building failed for Debian9 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI021BUILD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu 16.04 i386: Failed

Package building failed for Ubuntu 16.04 i386:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/U1604I386/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu 16.04 i386: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/U1604I386/config.status/config.status

Ubuntu1604 amd64 build: Failed

Package building failed for Ubuntu1604 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI014BUILD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Ubuntu1604 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI014BUILD/config.status/config.status

Debian8 amd64 build: Failed

Package building failed for Debian8 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI008BLD/ErrorLog/log_package_build.txt)

dh: Unknown sequence debian/backports/rules (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
# Frr needs /proc to check some BSD vs Linux specific stuff.
# Else it fails with an obscure error message pointing out that
# IPCTL_FORWARDING is an undefined symbol which is not very helpful.
if ! [ -e config.status ]; then \
dh_auto_configure -- \
	--enable-exampledir=/usr/share/doc/frr/examples/ \
	--localstatedir=/var/run/frr \
	--sbindir=/usr/lib/frr \

Debian8 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2907/artifact/CI008BLD/config.status/config.status

Report for bgpd.h
===============================================
< WARNING: do not add new typedefs
< #162: FILE: /tmp/f1/bgpd.h:162:
< +typedef enum {
< 
Report for bgp_mplsvpn.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #266: FILE: /tmp/f1/bgp_mplsvpn.c:266:
< +	if (debug && (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT)) {
< +		name = bgp->name;
--
< WARNING: quoted string split across lines
< #274: FILE: /tmp/f1/bgp_mplsvpn.c:274:
< +				"%s: vrf %s: afi %s: vrf_id not set, "
< +				"can't set zebra vrf label",
--
< WARNING: braces {} are not necessary for single statement blocks
< #280: FILE: /tmp/f1/bgp_mplsvpn.c:280:
< +	if (vpn_leak_to_vpn_active(bgp, afi, NULL)) {
< +		label = bgp->vpn_policy[afi].tovpn_label;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #511: FILE: /tmp/f1/bgp_mplsvpn.c:511:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: braces {} are not necessary for single statement blocks
< #716: FILE: /tmp/f1/bgp_mplsvpn.c:716:
< +		if (bi->extra && bi->extra->parent == info_vrf) {
< +			break;
--
< WARNING: Missing a blank line after declarations
< #734: FILE: /tmp/f1/bgp_mplsvpn.c:734:
< +				    struct bgp *bgp_vrf, /* from */
< +				    afi_t afi)
--
< WARNING: Missing a blank line after declarations
< #794: FILE: /tmp/f1/bgp_mplsvpn.c:794:
< +				  struct bgp *bgp_vrf, /* from */
< +				  afi_t afi)
--
< WARNING: Comparisons should place the constant on the right side of the test
< #908: FILE: /tmp/f1/bgp_mplsvpn.c:908:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #928: FILE: /tmp/f1/bgp_mplsvpn.c:928:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: line over 80 characters
< #935: FILE: /tmp/f1/bgp_mplsvpn.c:935:
< +						.rmap[BGP_VPN_POLICY_DIR_FROMVPN]
< 
< WARNING: Missing a blank line after declarations
< #957: FILE: /tmp/f1/bgp_mplsvpn.c:957:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1081: FILE: /tmp/f1/bgp_mplsvpn.c:1081:
< +				struct bgp *bgp_vpn, /* from */
< +				afi_t afi)
--
< WARNING: quoted string split across lines
< #1186: FILE: /tmp/f1/bgp_mplsvpn.c:1186:
< +					"%s: rmap \"%s\" matches vrf-policy fromvpn"
< +					" for as %d afi %s",
Report for bgp_mplsvpn.h
===============================================
< WARNING: line over 80 characters
< #119: FILE: /tmp/f1/bgp_mplsvpn.h:119:
< +			*pmsg = "destination bgp instance neither vrf nor default";
< 
Report for bgp_route.c
===============================================
< WARNING: Missing a blank line after declarations
< #2009: FILE: /tmp/f1/bgp_route.c:2009:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3204: FILE: /tmp/f1/bgp_route.c:3204:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3211: FILE: /tmp/f1/bgp_route.c:3211:
---
> #3141: FILE: /tmp/f2/bgp_route.c:3141:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3331: FILE: /tmp/f1/bgp_route.c:3331:
< +	if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3337: FILE: /tmp/f1/bgp_route.c:3337:
---
> #3257: FILE: /tmp/f2/bgp_route.c:3257:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3380: FILE: /tmp/f1/bgp_route.c:3380:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3397: FILE: /tmp/f1/bgp_route.c:3397:
---
> #3305: FILE: /tmp/f2/bgp_route.c:3305:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3474: FILE: /tmp/f1/bgp_route.c:3474:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3479: FILE: /tmp/f1/bgp_route.c:3479:
< +		if ((SAFI_MPLS_VPN == safi)
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4372: FILE: /tmp/f1/bgp_route.c:4372:
< +			if (SAFI_UNICAST == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4427: FILE: /tmp/f1/bgp_route.c:4427:
< +	if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4453: FILE: /tmp/f1/bgp_route.c:4453:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4493: FILE: /tmp/f1/bgp_route.c:4493:
< +		if (SAFI_MPLS_VPN == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4626: FILE: /tmp/f1/bgp_route.c:4626:
< +			if (SAFI_MPLS_VPN == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4666: FILE: /tmp/f1/bgp_route.c:4666:
< +	if (SAFI_MPLS_VPN == safi
< 
Report for bgp_updgrp_adv.c
===============================================
< WARNING: Missing a blank line after declarations
< #118: FILE: /tmp/f1/bgp_updgrp_adv.c:118:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&ctx->rn->p, buf_prefix, sizeof(buf_prefix));
Report for bgp_vty.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #6432: FILE: /tmp/f1/bgp_vty.c:6432:
< +	if (*list) {
< +		ecommunity_free(&*list);
--
< WARNING: braces {} are not necessary for single statement blocks
< #6467: FILE: /tmp/f1/bgp_vty.c:6467:
< +	if (ret != CMD_SUCCESS) {
< +		return ret;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #11674: FILE: /tmp/f1/bgp_vty.c:11674:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11682: FILE: /tmp/f1/bgp_vty.c:11682:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11714: FILE: /tmp/f1/bgp_vty.c:11714:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11722: FILE: /tmp/f1/bgp_vty.c:11722:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Missing a blank line after declarations
< #11754: FILE: /tmp/f1/bgp_vty.c:11754:
< +		char buf[RD_ADDRSTRLEN];
< +		vty_out(vty, "    rd %s\n",
--
< WARNING: Missing a blank line after declarations
< #11762: FILE: /tmp/f1/bgp_vty.c:11762:
< +		char buf[PREFIX_STRLEN];
< +		if (inet_ntop(bgp->vpn_policy[afi].tovpn_nexthop.family,
Report for bgp_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #1088: FILE: /tmp/f1/bgp_zebra.c:1088:
< +				char buf_prefix[PREFIX_STRLEN];
< +				prefix2str(&api.prefix, buf_prefix,
--
< WARNING: Block comments use a trailing */ on a separate line
< #1152: FILE: /tmp/f1/bgp_zebra.c:1152:
< +				   apply doesn't modify the BGP route info. */
< 
< WARNING: Block comments use * on subsequent lines
< #1167: FILE: /tmp/f1/bgp_zebra.c:1167:
---
> #1100: FILE: /tmp/f2/bgp_zebra.c:1100:
Report for ospf_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #954: FILE: /tmp/f1/ospf_zebra.c:954:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
Report for zserv.c
===============================================
< WARNING: Missing a blank line after declarations
< #603: FILE: /tmp/f1/zserv.c:603:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1191: FILE: /tmp/f1/zserv.c:1191:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: braces {} are not necessary for single statement blocks
< #1222: FILE: /tmp/f1/zserv.c:1222:
< +			if (IS_ZEBRA_DEBUG_RECV) {
< +				zlog_debug("nh type %d", api_nh->type);
--
< WARNING: Missing a blank line after declarations
< #1234: FILE: /tmp/f1/zserv.c:1234:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,
--
< WARNING: Missing a blank line after declarations
< #1256: FILE: /tmp/f1/zserv.c:1256:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,

@LabN-CI
Copy link
Collaborator

LabN-CI commented Mar 15, 2018

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1739 4ea6c38
Date 03/15/2018
Start 00:47:16
Finish 01:11:03
Run-Time 23:47
Total 1816
Pass 1816
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-03-15-00:47:16.txt
Log autoscript-2018-03-15-00:48:09.log.bz2

For details, please contact louberger

@LabN-CI
Copy link
Collaborator

LabN-CI commented Mar 15, 2018

🚧 Basic BGPD CI results: Partial FAILURE, 1 tests failed

Results table
_ _
Result SUCCESS git merge/1739 9891fa4
Date 03/15/2018
Start 01:22:21
Finish 01:46:25
Run-Time 24:04
Total 1816
Pass 1815
Fail 1
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-03-15-01:22:21.txt
Log autoscript-2018-03-15-01:23:29.log.bz2

For details, please contact louberger

@qlyoung qlyoung dismissed their stale review March 15, 2018 06:12

Filing issue against myself to fix issues at later time

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2908/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.


Warnings Generated during build:

Checkout code: Successful with additional warnings:

Report for bgpd.h
===============================================
< WARNING: do not add new typedefs
< #162: FILE: /tmp/f1/bgpd.h:162:
< +typedef enum {
< 
Report for bgp_mplsvpn.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #266: FILE: /tmp/f1/bgp_mplsvpn.c:266:
< +	if (debug && (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT)) {
< +		name = bgp->name;
--
< WARNING: quoted string split across lines
< #274: FILE: /tmp/f1/bgp_mplsvpn.c:274:
< +				"%s: vrf %s: afi %s: vrf_id not set, "
< +				"can't set zebra vrf label",
--
< WARNING: braces {} are not necessary for single statement blocks
< #280: FILE: /tmp/f1/bgp_mplsvpn.c:280:
< +	if (vpn_leak_to_vpn_active(bgp, afi, NULL)) {
< +		label = bgp->vpn_policy[afi].tovpn_label;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #511: FILE: /tmp/f1/bgp_mplsvpn.c:511:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: braces {} are not necessary for single statement blocks
< #716: FILE: /tmp/f1/bgp_mplsvpn.c:716:
< +		if (bi->extra && bi->extra->parent == info_vrf) {
< +			break;
--
< WARNING: Missing a blank line after declarations
< #734: FILE: /tmp/f1/bgp_mplsvpn.c:734:
< +				    struct bgp *bgp_vrf, /* from */
< +				    afi_t afi)
--
< WARNING: Missing a blank line after declarations
< #794: FILE: /tmp/f1/bgp_mplsvpn.c:794:
< +				  struct bgp *bgp_vrf, /* from */
< +				  afi_t afi)
--
< WARNING: Comparisons should place the constant on the right side of the test
< #908: FILE: /tmp/f1/bgp_mplsvpn.c:908:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #928: FILE: /tmp/f1/bgp_mplsvpn.c:928:
< +		if (RMAP_DENYMATCH == ret) {
< 
< WARNING: line over 80 characters
< #935: FILE: /tmp/f1/bgp_mplsvpn.c:935:
< +						.rmap[BGP_VPN_POLICY_DIR_FROMVPN]
< 
< WARNING: Missing a blank line after declarations
< #957: FILE: /tmp/f1/bgp_mplsvpn.c:957:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1081: FILE: /tmp/f1/bgp_mplsvpn.c:1081:
< +				struct bgp *bgp_vpn, /* from */
< +				afi_t afi)
--
< WARNING: quoted string split across lines
< #1186: FILE: /tmp/f1/bgp_mplsvpn.c:1186:
< +					"%s: rmap \"%s\" matches vrf-policy fromvpn"
< +					" for as %d afi %s",
Report for bgp_mplsvpn.h
===============================================
< WARNING: line over 80 characters
< #119: FILE: /tmp/f1/bgp_mplsvpn.h:119:
< +			*pmsg = "destination bgp instance neither vrf nor default";
< 
Report for bgp_route.c
===============================================
< WARNING: Missing a blank line after declarations
< #2009: FILE: /tmp/f1/bgp_route.c:2009:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(p, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3204: FILE: /tmp/f1/bgp_route.c:3204:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3211: FILE: /tmp/f1/bgp_route.c:3211:
---
> #3141: FILE: /tmp/f2/bgp_route.c:3141:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3331: FILE: /tmp/f1/bgp_route.c:3331:
< +	if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3337: FILE: /tmp/f1/bgp_route.c:3337:
---
> #3257: FILE: /tmp/f2/bgp_route.c:3257:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3380: FILE: /tmp/f1/bgp_route.c:3380:
< +		if ((SAFI_MPLS_VPN == safi)
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3397: FILE: /tmp/f1/bgp_route.c:3397:
---
> #3305: FILE: /tmp/f2/bgp_route.c:3305:
--
< WARNING: Comparisons should place the constant on the right side of the test
< #3474: FILE: /tmp/f1/bgp_route.c:3474:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #3479: FILE: /tmp/f1/bgp_route.c:3479:
< +		if ((SAFI_MPLS_VPN == safi)
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4372: FILE: /tmp/f1/bgp_route.c:4372:
< +			if (SAFI_UNICAST == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4427: FILE: /tmp/f1/bgp_route.c:4427:
< +	if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4453: FILE: /tmp/f1/bgp_route.c:4453:
< +		if (SAFI_UNICAST == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4493: FILE: /tmp/f1/bgp_route.c:4493:
< +		if (SAFI_MPLS_VPN == safi
< 
--
< WARNING: Comparisons should place the constant on the right side of the test
< #4626: FILE: /tmp/f1/bgp_route.c:4626:
< +			if (SAFI_MPLS_VPN == safi
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #4666: FILE: /tmp/f1/bgp_route.c:4666:
< +	if (SAFI_MPLS_VPN == safi
< 
Report for bgp_updgrp_adv.c
===============================================
< WARNING: Missing a blank line after declarations
< #118: FILE: /tmp/f1/bgp_updgrp_adv.c:118:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&ctx->rn->p, buf_prefix, sizeof(buf_prefix));
Report for bgp_vty.c
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #6432: FILE: /tmp/f1/bgp_vty.c:6432:
< +	if (*list) {
< +		ecommunity_free(&*list);
--
< WARNING: braces {} are not necessary for single statement blocks
< #6467: FILE: /tmp/f1/bgp_vty.c:6467:
< +	if (ret != CMD_SUCCESS) {
< +		return ret;
--
< WARNING: Comparisons should place the constant on the right side of the test
< #11674: FILE: /tmp/f1/bgp_vty.c:11674:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11682: FILE: /tmp/f1/bgp_vty.c:11682:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11714: FILE: /tmp/f1/bgp_vty.c:11714:
< +	if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type
< 
< WARNING: Comparisons should place the constant on the right side of the test
< #11722: FILE: /tmp/f1/bgp_vty.c:11722:
< +	if ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {
< 
< WARNING: Missing a blank line after declarations
< #11754: FILE: /tmp/f1/bgp_vty.c:11754:
< +		char buf[RD_ADDRSTRLEN];
< +		vty_out(vty, "    rd %s\n",
--
< WARNING: Missing a blank line after declarations
< #11762: FILE: /tmp/f1/bgp_vty.c:11762:
< +		char buf[PREFIX_STRLEN];
< +		if (inet_ntop(bgp->vpn_policy[afi].tovpn_nexthop.family,
Report for bgp_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #1088: FILE: /tmp/f1/bgp_zebra.c:1088:
< +				char buf_prefix[PREFIX_STRLEN];
< +				prefix2str(&api.prefix, buf_prefix,
--
< WARNING: Block comments use a trailing */ on a separate line
< #1152: FILE: /tmp/f1/bgp_zebra.c:1152:
< +				   apply doesn't modify the BGP route info. */
< 
< WARNING: Block comments use * on subsequent lines
< #1167: FILE: /tmp/f1/bgp_zebra.c:1167:
---
> #1100: FILE: /tmp/f2/bgp_zebra.c:1100:
Report for ospf_zebra.c
===============================================
< WARNING: Missing a blank line after declarations
< #954: FILE: /tmp/f1/ospf_zebra.c:954:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
Report for zserv.c
===============================================
< WARNING: Missing a blank line after declarations
< #603: FILE: /tmp/f1/zserv.c:603:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: Missing a blank line after declarations
< #1165: FILE: /tmp/f1/zserv.c:1165:
< +		char buf_prefix[PREFIX_STRLEN];
< +		prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));
--
< WARNING: braces {} are not necessary for single statement blocks
< #1196: FILE: /tmp/f1/zserv.c:1196:
< +			if (IS_ZEBRA_DEBUG_RECV) {
< +				zlog_debug("nh type %d", api_nh->type);
--
< WARNING: Missing a blank line after declarations
< #1208: FILE: /tmp/f1/zserv.c:1208:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,
--
< WARNING: Missing a blank line after declarations
< #1230: FILE: /tmp/f1/zserv.c:1230:
< +					char nhbuf[INET6_ADDRSTRLEN] = {0};
< +					inet_ntop(AF_INET, &api_nh->gate.ipv4,

CLANG Static Analyzer Summary

  • Github Pull Request 1739, comparing to Git base SHA 6ca96cc

No Changes in Static Analysis warnings compared to base

19 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2908/artifact/shared/static_analysis/index.html

@LabN-CI
Copy link
Collaborator

LabN-CI commented Mar 15, 2018

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1739 9891fa4
Date 03/15/2018
Start 07:07:15
Finish 07:30:40
Run-Time 23:25
Total 1816
Pass 1816
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-03-15-07:07:15.txt
Log autoscript-2018-03-15-07:08:05.log.bz2

For details, please contact louberger

@donaldsharp
Copy link
Member

I spoke with @vivek-cumulus and he indicated it would be good to merge this as well.

@pguibert6WIND
Copy link
Member

ok to merge.

@donaldsharp donaldsharp merged commit 010c5ef into FRRouting:master Mar 15, 2018
paulzlabn added a commit to LabNConsulting/frr that referenced this pull request Mar 20, 2018
PR FRRouting#1739 added code to leak routes between (default VRF) VPN safi and unicast RIBs in any VRF. That set of changes included temporary CLI including vpn-policy blocks to specify RD/RT/label/&c. After considerable discussion, we arrived at a consensus CLI shown below.

The code of this PR implements the vpn-specific parts of this syntax:

router bgp <as> [vrf <FOO>]
    address-family <afi> unicast
        rd (vpn|evpn) export (AS:NN | IP:nn)
        label (vpn|evpn) export (0..1048575)
        rt (vpn|evpn) (import|export|both) RTLIST...
        nexthop vpn (import|export) (A.B.C.D | X:X::X:X)
        route-map (vpn|evpn|vrf NAME) (import|export) MAP

        [no] import|export [vpn|evpn|evpn8]
        [no] import|export vrf NAME

User documentation of the vpn-specific parts of the above syntax is in PR FRRouting#1937

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
qlyoung pushed a commit to qlyoung/frr that referenced this pull request Mar 22, 2018
PR FRRouting#1739 added code to leak routes between (default VRF) VPN safi and unicast RIBs in any VRF. That set of changes included temporary CLI including vpn-policy blocks to specify RD/RT/label/&c. After considerable discussion, we arrived at a consensus CLI shown below.

The code of this PR implements the vpn-specific parts of this syntax:

router bgp <as> [vrf <FOO>]
    address-family <afi> unicast
        rd (vpn|evpn) export (AS:NN | IP:nn)
        label (vpn|evpn) export (0..1048575)
        rt (vpn|evpn) (import|export|both) RTLIST...
        nexthop vpn (import|export) (A.B.C.D | X:X::X:X)
        route-map (vpn|evpn|vrf NAME) (import|export) MAP

        [no] import|export [vpn|evpn|evpn8]
        [no] import|export vrf NAME

User documentation of the vpn-specific parts of the above syntax is in PR FRRouting#1937

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
@louberger louberger deleted the working/master/bgp-vpn-vrf-leaking branch March 17, 2020 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.