{"action":"created","issue":{"url":"https://api.github.com/repos/FRRouting/frr/issues/1739","repository_url":"https://api.github.com/repos/FRRouting/frr","labels_url":"https://api.github.com/repos/FRRouting/frr/issues/1739/labels{/name}","comments_url":"https://api.github.com/repos/FRRouting/frr/issues/1739/comments","events_url":"https://api.github.com/repos/FRRouting/frr/issues/1739/events","html_url":"https://github.com/FRRouting/frr/pull/1739","id":296077319,"number":1739,"title":"bgpd: vpn - vrf route leaking","user":{"login":"paulzlabn","id":23104938,"avatar_url":"https://avatars2.githubusercontent.com/u/23104938?v=4","gravatar_id":"","url":"https://api.github.com/users/paulzlabn","html_url":"https://github.com/paulzlabn","followers_url":"https://api.github.com/users/paulzlabn/followers","following_url":"https://api.github.com/users/paulzlabn/following{/other_user}","gists_url":"https://api.github.com/users/paulzlabn/gists{/gist_id}","starred_url":"https://api.github.com/users/paulzlabn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulzlabn/subscriptions","organizations_url":"https://api.github.com/users/paulzlabn/orgs","repos_url":"https://api.github.com/users/paulzlabn/repos","events_url":"https://api.github.com/users/paulzlabn/events{/privacy}","received_events_url":"https://api.github.com/users/paulzlabn/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":56,"created_at":"2018-02-10T06:06:51Z","updated_at":"2018-03-09T06:29:33Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/FRRouting/frr/pulls/1739","html_url":"https://github.com/FRRouting/frr/pull/1739","diff_url":"https://github.com/FRRouting/frr/pull/1739.diff","patch_url":"https://github.com/FRRouting/frr/pull/1739.patch"},"body":"bgpd: vpn-vrf route leaking (includes default instance unicast as special case of vrf)"},"comment":{"url":"https://api.github.com/repos/FRRouting/frr/issues/comments/371725805","html_url":"https://github.com/FRRouting/frr/pull/1739#issuecomment-371725805","issue_url":"https://api.github.com/repos/FRRouting/frr/issues/1739","id":371725805,"user":{"login":"NetDEF-CI","id":19297776,"avatar_url":"https://avatars3.githubusercontent.com/u/19297776?v=4","gravatar_id":"","url":"https://api.github.com/users/NetDEF-CI","html_url":"https://github.com/NetDEF-CI","followers_url":"https://api.github.com/users/NetDEF-CI/followers","following_url":"https://api.github.com/users/NetDEF-CI/following{/other_user}","gists_url":"https://api.github.com/users/NetDEF-CI/gists{/gist_id}","starred_url":"https://api.github.com/users/NetDEF-CI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NetDEF-CI/subscriptions","organizations_url":"https://api.github.com/users/NetDEF-CI/orgs","repos_url":"https://api.github.com/users/NetDEF-CI/repos","events_url":"https://api.github.com/users/NetDEF-CI/events{/privacy}","received_events_url":"https://api.github.com/users/NetDEF-CI/received_events","type":"User","site_admin":false},"created_at":"2018-03-09T06:29:33Z","updated_at":"2018-03-09T06:29:33Z","author_association":"COLLABORATOR","body":"# Continuous Integration Result: SUCCESSFUL\n\nCongratulations, this patch passed basic tests\n\nTested-by: NetDEF / OpenSourceRouting.org CI System\n\nCI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2820/\n\nThis is a comment from an EXPERIMENTAL automated CI system.\nFor questions and feedback in regards to this CI system, please feel free to email\nMartin Winter - mwinter (at) opensourcerouting.org.\n\n\n-----------------------------\n## Warnings Generated during build:\n\n\n### Checkout code: Successful with additional warnings:\n\n    <stdin>:619: trailing whitespace.\n    \t\tconst char *s = \"\"; \n    <stdin>:2119: trailing whitespace.\n    \tif (!sockunion2hostprefix(nexthop, &p)) \n    <stdin>:2707: trailing whitespace.\n    \t\t/* \n    <stdin>:2732: trailing whitespace.\n    \t\t\t\t\t__func__, buf_prefix, \n    <stdin>:2817: trailing whitespace.\n    \t\t/* \n    warning: 5 lines add whitespace errors.\n    Report for bgpd.h\n    ===============================================\n    < WARNING: do not add new typedefs\n    < #162: FILE: /tmp/f1/bgpd.h:162:\n    < +typedef enum {\n    < \n    Report for bgp_mplsvpn.c\n    ===============================================\n    < WARNING: braces {} are not necessary for single statement blocks\n    < #266: FILE: /tmp/f1/bgp_mplsvpn.c:266:\n    < +\tif (debug && (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT)) {\n    < +\t\tname = bgp->name;\n    --\n    < WARNING: quoted string split across lines\n    < #274: FILE: /tmp/f1/bgp_mplsvpn.c:274:\n    < +\t\t\t    \"%s: vrf %s: afi %s: vrf_id not set, \"\n    < +\t\t\t    \"can't set zebra vrf label\",\n    --\n    < WARNING: braces {} are not necessary for single statement blocks\n    < #280: FILE: /tmp/f1/bgp_mplsvpn.c:280:\n    < +\tif (vpn_leak_to_vpn_active(bgp, afi, NULL)) {\n    < +\t\tlabel = bgp->vpn_policy[afi].tovpn_label;\n    --\n    < ERROR: spaces required around that '?' (ctx:VxW)\n    < #313: FILE: /tmp/f1/bgp_mplsvpn.c:313:\n    < +\t\t    __func__, (bgp->name? bgp->name: \"default\"), bgp->vrf_id);\n    <  \t\t                        ^\n    --\n    < ERROR: spaces required around that ':' (ctx:VxW)\n    < #313: FILE: /tmp/f1/bgp_mplsvpn.c:313:\n    < +\t\t    __func__, (bgp->name? bgp->name: \"default\"), bgp->vrf_id);\n    <  \t\t                                   ^\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #516: FILE: /tmp/f1/bgp_mplsvpn.c:516:\n    < +\t\tif (RMAP_DENYMATCH == ret) {\n    < \n    < ERROR: trailing whitespace\n    < #561: FILE: /tmp/f1/bgp_mplsvpn.c:561:\n    < +^I^Iconst char *s = \"\"; $\n    < \n    < WARNING: braces {} are not necessary for single statement blocks\n    < #719: FILE: /tmp/f1/bgp_mplsvpn.c:719:\n    < +\t\tif (bi->extra && bi->extra->parent == info_vrf) {\n    < +\t\t\tbreak;\n    --\n    < WARNING: Missing a blank line after declarations\n    < #797: FILE: /tmp/f1/bgp_mplsvpn.c:797:\n    < +\t\t\t\t  struct bgp *bgp_vrf, /* from */\n    < +\t\t\t\t  afi_t afi)\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #911: FILE: /tmp/f1/bgp_mplsvpn.c:911:\n    < +\t\tif (RMAP_DENYMATCH == ret) {\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #931: FILE: /tmp/f1/bgp_mplsvpn.c:931:\n    < +\t\tif (RMAP_DENYMATCH == ret) {\n    < \n    < WARNING: line over 80 characters\n    < #938: FILE: /tmp/f1/bgp_mplsvpn.c:938:\n    < +\t\t\t\t\t\t.rmap[BGP_VPN_POLICY_DIR_FROMVPN]\n    < \n    < WARNING: Missing a blank line after declarations\n    < #960: FILE: /tmp/f1/bgp_mplsvpn.c:960:\n    < +\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\tprefix2str(p, buf_prefix, sizeof(buf_prefix));\n    --\n    < WARNING: Missing a blank line after declarations\n    < #1085: FILE: /tmp/f1/bgp_mplsvpn.c:1085:\n    < +\t\t\t\tstruct bgp *bgp_vpn, /* from */\n    < +\t\t\t\tafi_t afi)\n    --\n    < WARNING: quoted string split across lines\n    < #1190: FILE: /tmp/f1/bgp_mplsvpn.c:1190:\n    < +\t\t\t\t\t\"%s: rmap \\\"%s\\\" matches vrf-policy fromvpn\"\n    < +\t\t\t\t\t\" for as %d afi %s\",\n    --\n    < WARNING: Missing a blank line after declarations\n    < #1239: FILE: /tmp/f1/bgp_mplsvpn.c:1239:\n    ---\n    > #251: FILE: /tmp/f2/bgp_mplsvpn.c:251:\n    Report for bgp_mplsvpn.h\n    ===============================================\n    < WARNING: line over 80 characters\n    < #119: FILE: /tmp/f1/bgp_mplsvpn.h:119:\n    < +\t\t\t*pmsg = \"destination bgp instance neither vrf nor default\";\n    < \n    < WARNING: line over 80 characters\n    < #160: FILE: /tmp/f1/bgp_mplsvpn.h:160:\n    < +\t\t\tbgp_vrf->vpn_policy[afi].tovpn_zebra_vrf_label_last_sent) {\n    < \n    Report for bgp_route.c\n    ===============================================\n    < ERROR: space prohibited after that open parenthesis '('\n    < #1367: FILE: /tmp/f1/bgp_route.c:1367:\n    < +\tif (   ((afi == AFI_IP) || (afi == AFI_IP6))\n    < \n    --\n    < WARNING: suspect code indent for conditional statements (24, 28)\n    < #1865: FILE: /tmp/f1/bgp_route.c:1865:\n    < +\t\t\tif (debug)\n    < +\t\t\t    zlog_debug(\"%s: ri %p in holddown\", __func__, ri);\n    --\n    < WARNING: suspect code indent for conditional statements (24, 24)\n    < #1873: FILE: /tmp/f1/bgp_route.c:1873:\n    < +\t\t\tif (ri->peer->status != Established) {\n    < [...]\n    --\n    < WARNING: suspect code indent for conditional statements (24, 28)\n    < #1875: FILE: /tmp/f1/bgp_route.c:1875:\n    < +\t\t\tif (debug)\n    < +\t\t\t    zlog_debug(\n    --\n    < WARNING: suspect code indent for conditional statements (24, 28)\n    < #1886: FILE: /tmp/f1/bgp_route.c:1886:\n    < +\t\t\tif (debug)\n    < +\t\t\t    zlog_debug(\"%s: ri %p dmed\", __func__, ri);\n    --\n    < WARNING: Missing a blank line after declarations\n    < #1993: FILE: /tmp/f1/bgp_route.c:1993:\n    < +\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\tprefix2str(p, buf_prefix, sizeof(buf_prefix));\n    --\n    < WARNING: suspect code indent for conditional statements (24, 28)\n    < #2175: FILE: /tmp/f1/bgp_route.c:2175:\n    < +\t\t\tif (bgp_fibupd_safi(safi)\n    < [...]\n    --\n    < WARNING: Statements should start on a tabstop\n    < #2178: FILE: /tmp/f1/bgp_route.c:2178:\n    < +\t\t\t    if (new_select->type == ZEBRA_ROUTE_BGP\n    < \n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3187: FILE: /tmp/f1/bgp_route.c:3187:\n    < +\t\tif ((SAFI_MPLS_VPN == safi)\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3194: FILE: /tmp/f1/bgp_route.c:3194:\n    ---\n    > #3125: FILE: /tmp/f2/bgp_route.c:3125:\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3314: FILE: /tmp/f1/bgp_route.c:3314:\n    < +\tif ((SAFI_MPLS_VPN == safi)\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3320: FILE: /tmp/f1/bgp_route.c:3320:\n    ---\n    > #3241: FILE: /tmp/f2/bgp_route.c:3241:\n    --\n    < WARNING: suspect code indent for conditional statements (16, 20)\n    < #3363: FILE: /tmp/f1/bgp_route.c:3363:\n    < +\t\tif ((SAFI_MPLS_VPN == safi)\n    < [...]\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3363: FILE: /tmp/f1/bgp_route.c:3363:\n    < +\t\tif ((SAFI_MPLS_VPN == safi)\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3380: FILE: /tmp/f1/bgp_route.c:3380:\n    ---\n    > #3289: FILE: /tmp/f2/bgp_route.c:3289:\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3457: FILE: /tmp/f1/bgp_route.c:3457:\n    < +\t\tif (SAFI_UNICAST == safi\n    < \n    < WARNING: suspect code indent for conditional statements (16, 20)\n    < #3462: FILE: /tmp/f1/bgp_route.c:3462:\n    < +\t\tif ((SAFI_MPLS_VPN == safi)\n    < [...]\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #3462: FILE: /tmp/f1/bgp_route.c:3462:\n    < +\t\tif ((SAFI_MPLS_VPN == safi)\n    < \n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4355: FILE: /tmp/f1/bgp_route.c:4355:\n    < +\t\t\tif (SAFI_UNICAST == safi\n    < \n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4410: FILE: /tmp/f1/bgp_route.c:4410:\n    < +\tif (SAFI_UNICAST == safi\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4436: FILE: /tmp/f1/bgp_route.c:4436:\n    < +\t\tif (SAFI_UNICAST == safi\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4476: FILE: /tmp/f1/bgp_route.c:4476:\n    < +\t\tif (SAFI_MPLS_VPN == safi\n    < \n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4609: FILE: /tmp/f1/bgp_route.c:4609:\n    < +\t\t\tif (SAFI_MPLS_VPN == safi\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #4649: FILE: /tmp/f1/bgp_route.c:4649:\n    < +\tif (SAFI_MPLS_VPN == safi\n    < \n    --\n    < WARNING: suspect code indent for conditional statements (32, 36)\n    < #6118: FILE: /tmp/f1/bgp_route.c:6118:\n    < +\t\t\t\tif ((bgp->inst_type == BGP_INSTANCE_TYPE_VRF)\n    < [...]\n    --\n    < WARNING: line over 80 characters\n    < #6119: FILE: /tmp/f1/bgp_route.c:6119:\n    < +\t\t\t\t    || (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT)) {\n    < \n    < WARNING: line over 80 characters\n    < #6121: FILE: /tmp/f1/bgp_route.c:6121:\n    < +\t\t\t\t    vpn_leak_from_vrf_update(bgp_get_default(), bgp, bi);\n    < \n    < WARNING: line over 80 characters\n    < #6170: FILE: /tmp/f1/bgp_route.c:6170:\n    < +\t\t\t\tvpn_leak_from_vrf_withdraw(bgp_get_default(), bgp, ri);\n    < \n    < WARNING: line over 80 characters\n    < #6200: FILE: /tmp/f1/bgp_route.c:6200:\n    < +\t\t\t\tvpn_leak_from_vrf_withdraw(bgp_get_default(), bgp, ri);\n    < \n    Report for bgp_updgrp_adv.c\n    ===============================================\n    < WARNING: Missing a blank line after declarations\n    < #118: FILE: /tmp/f1/bgp_updgrp_adv.c:118:\n    < +\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\tprefix2str(&ctx->rn->p, buf_prefix, sizeof(buf_prefix));\n    Report for bgp_vty.c\n    ===============================================\n    < WARNING: please, no spaces at the start of a line\n    < #6162: FILE: /tmp/f1/bgp_vty.c:6162:\n    < +    struct cmd_token **argv, int argc, int *idx, int *dodir)$\n    < \n    < ERROR: trailing whitespace\n    < #6342: FILE: /tmp/f1/bgp_vty.c:6342:\n    < +^Iif (!sockunion2hostprefix(nexthop, &p)) $\n    < \n    < WARNING: braces {} are not necessary for single statement blocks\n    < #6431: FILE: /tmp/f1/bgp_vty.c:6431:\n    < +\tif (*list) {\n    < +\t\tecommunity_free(&*list);\n    --\n    < WARNING: braces {} are not necessary for single statement blocks\n    < #6466: FILE: /tmp/f1/bgp_vty.c:6466:\n    < +\tif (ret != CMD_SUCCESS) {\n    < +\t\treturn ret;\n    --\n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #11673: FILE: /tmp/f1/bgp_vty.c:11673:\n    < +\tif (BGP_INSTANCE_TYPE_VRF != bgp->inst_type\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #11681: FILE: /tmp/f1/bgp_vty.c:11681:\n    < +\tif ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #11713: FILE: /tmp/f1/bgp_vty.c:11713:\n    < +\tif (BGP_INSTANCE_TYPE_VRF != bgp->inst_type\n    < \n    < WARNING: Comparisons should place the constant on the right side of the test\n    < #11721: FILE: /tmp/f1/bgp_vty.c:11721:\n    < +\tif ((SAFI_UNICAST != safi) || ((AFI_IP != afi) && (AFI_IP6 != afi))) {\n    < \n    < WARNING: Missing a blank line after declarations\n    < #11753: FILE: /tmp/f1/bgp_vty.c:11753:\n    < +\t\tchar buf[RD_ADDRSTRLEN];\n    < +\t\tvty_out(vty, \"    rd %s\\n\",\n    --\n    < WARNING: Missing a blank line after declarations\n    < #11761: FILE: /tmp/f1/bgp_vty.c:11761:\n    < +\t\tchar buf[PREFIX_STRLEN];\n    < +\t\tif (inet_ntop(bgp->vpn_policy[afi].tovpn_nexthop.family,\n    Report for bgp_zebra.c\n    ===============================================\n    < ERROR: trailing whitespace\n    < #1024: FILE: /tmp/f1/bgp_zebra.c:1024:\n    < +^I^I/* $\n    < \n    --\n    < WARNING: Missing a blank line after declarations\n    < #1088: FILE: /tmp/f1/bgp_zebra.c:1088:\n    < +\t\t\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\t\t\tprefix2str(&api.prefix, buf_prefix,\n    --\n    < WARNING: suspect code indent for conditional statements (32, 36)\n    < #1090: FILE: /tmp/f1/bgp_zebra.c:1090:\n    < +\t\t\t\tif (mpinfo->extra) {\n    < +\t\t\t\t    zlog_debug(\n    --\n    < ERROR: trailing whitespace\n    < #1093: FILE: /tmp/f1/bgp_zebra.c:1093:\n    < +^I^I^I^I^I__func__, buf_prefix, $\n    < \n    < WARNING: line over 80 characters\n    < #1094: FILE: /tmp/f1/bgp_zebra.c:1094:\n    < +\t\t\t\t\tbgp_is_valid_label(&mpinfo->extra->label[0]));\n    < \n    < WARNING: suspect code indent for conditional statements (32, 36)\n    < #1095: FILE: /tmp/f1/bgp_zebra.c:1095:\n    < +\t\t\t\t} else {\n    < +\t\t\t\t    zlog_debug(\"%s: p=%s, extra is NULL, no label\",\n    --\n    < WARNING: line over 80 characters\n    < #1108: FILE: /tmp/f1/bgp_zebra.c:1108:\n    < +\t\t\t\t\tlocal_attr.nexthop = info->extra->nexthop_orig.u.prefix4;\n    < \n    --\n    < ERROR: spaces required around that '?' (ctx:VxE)\n    < #1129: FILE: /tmp/f1/bgp_zebra.c:1129:\n    < +\t\t\tapi_nh->vrf_id = nh_othervrf?\n    <  \t\t\t                            ^\n    --\n    < ERROR: spaces required around that ':' (ctx:VxW)\n    < #1130: FILE: /tmp/f1/bgp_zebra.c:1130:\n    < +\t\t\t\tinfo->extra->bgp_orig->vrf_id: bgp->vrf_id;\n    <  \t\t\t\t                             ^\n    --\n    < WARNING: line over 80 characters\n    < #1151: FILE: /tmp/f1/bgp_zebra.c:1151:\n    < +\t\t\t\t\tlocal_attr.mp_nexthop_global = info->extra->nexthop_orig.u.prefix6;\n    < \n    < WARNING: line over 80 characters\n    < #1152: FILE: /tmp/f1/bgp_zebra.c:1152:\n    < +\t\t\t\t\tlocal_attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV6_GLOBAL;\n    < \n    < WARNING: Block comments use * on subsequent lines\n    < #1158: FILE: /tmp/f1/bgp_zebra.c:1158:\n    < +\t\t\t\t/* Copy info and attributes, so the route-map\n    ---\n    --\n    < WARNING: Block comments use a trailing */ on a separate line\n    < #1168: FILE: /tmp/f1/bgp_zebra.c:1168:\n    ---\n    > #1110: FILE: /tmp/f2/bgp_zebra.c:1110:\n    --\n    < ERROR: space prohibited before that close parenthesis ')'\n    < #1298: FILE: /tmp/f1/bgp_zebra.c:1298:\n    < +\t\t\t    || ri->sub_type == BGP_ROUTE_IMPORTED)) )\n    < \n    < ERROR: trailing whitespace\n    < #1317: FILE: /tmp/f1/bgp_zebra.c:1317:\n    < +^I^I/* $\n    < \n    Report for command.c\n    ===============================================\n    < ERROR: code indent should use tabs where possible\n    < #89: FILE: /tmp/f1/command.c:89:\n    < +        \"bgp vpn policy ipv4\",      // BGP_VPNPOLICY_IPV4_NODE$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #89: FILE: /tmp/f1/command.c:89:\n    < +        \"bgp vpn policy ipv4\",      // BGP_VPNPOLICY_IPV4_NODE$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #90: FILE: /tmp/f1/command.c:90:\n    < +        \"bgp vpn policy ipv6\",      // BGP_VPNPOLICY_IPV6_NODE$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #90: FILE: /tmp/f1/command.c:90:\n    < +        \"bgp vpn policy ipv6\",      // BGP_VPNPOLICY_IPV6_NODE$\n    < \n    --\n    < ERROR: code indent should use tabs where possible\n    < #953: FILE: /tmp/f1/command.c:953:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #953: FILE: /tmp/f1/command.c:953:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #954: FILE: /tmp/f1/command.c:954:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #954: FILE: /tmp/f1/command.c:954:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    --\n    < ERROR: code indent should use tabs where possible\n    < #1324: FILE: /tmp/f1/command.c:1324:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1324: FILE: /tmp/f1/command.c:1324:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1325: FILE: /tmp/f1/command.c:1325:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1325: FILE: /tmp/f1/command.c:1325:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1395: FILE: /tmp/f1/command.c:1395:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1395: FILE: /tmp/f1/command.c:1395:\n    < +        case BGP_VPNPOLICY_IPV4_NODE:$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1396: FILE: /tmp/f1/command.c:1396:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1396: FILE: /tmp/f1/command.c:1396:\n    < +        case BGP_VPNPOLICY_IPV6_NODE:$\n    < \n    Report for command.h\n    ===============================================\n    < ERROR: code indent should use tabs where possible\n    < #112: FILE: /tmp/f1/command.h:112:\n    < +        BGP_VPNPOLICY_IPV4_NODE,$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #112: FILE: /tmp/f1/command.h:112:\n    < +        BGP_VPNPOLICY_IPV4_NODE,$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #113: FILE: /tmp/f1/command.h:113:\n    < +        BGP_VPNPOLICY_IPV6_NODE,$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #113: FILE: /tmp/f1/command.h:113:\n    < +        BGP_VPNPOLICY_IPV6_NODE,$\n    < \n    Report for ospf_zebra.c\n    ===============================================\n    < WARNING: Missing a blank line after declarations\n    < #954: FILE: /tmp/f1/ospf_zebra.c:954:\n    < +\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\tprefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));\n    Report for redistribute.c\n    ===============================================\n    < ERROR: code indent should use tabs where possible\n    < #262: FILE: /tmp/f1/redistribute.c:262:\n    < +                    zebra_route_string(type), zvrf_id(zvrf),$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #262: FILE: /tmp/f1/redistribute.c:262:\n    < +                    zebra_route_string(type), zvrf_id(zvrf),$\n    < \n    Report for zserv.c\n    ===============================================\n    < WARNING: suspect code indent for conditional statements (8, 12)\n    < #666: FILE: /tmp/f1/zserv.c:666:\n    < +\tif (IS_ZEBRA_DEBUG_SEND) {\n    < +\t    char buf_prefix[PREFIX_STRLEN];\n    --\n    < WARNING: Missing a blank line after declarations\n    < #668: FILE: /tmp/f1/zserv.c:668:\n    < +\t    char buf_prefix[PREFIX_STRLEN];\n    < +\t    prefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));\n    --\n    < WARNING: Missing a blank line after declarations\n    < #1171: FILE: /tmp/f1/zserv.c:1171:\n    < +\t\tchar buf_prefix[PREFIX_STRLEN];\n    < +\t\tprefix2str(&api.prefix, buf_prefix, sizeof(buf_prefix));\n    --\n    < ERROR: spaces required around that '?' (ctx:VxW)\n    < #1174: FILE: /tmp/f1/zserv.c:1174:\n    < +\t\t    (CHECK_FLAG(api.message, ZAPI_MESSAGE_LABEL)? \"\": \"un\"),\n    <  \t\t                                                ^\n    --\n    < ERROR: spaces required around that ':' (ctx:VxW)\n    < #1174: FILE: /tmp/f1/zserv.c:1174:\n    < +\t\t    (CHECK_FLAG(api.message, ZAPI_MESSAGE_LABEL)? \"\": \"un\"),\n    <  \t\t                                                    ^\n    --\n    < ERROR: space prohibited before that close parenthesis ')'\n    < #1175: FILE: /tmp/f1/zserv.c:1175:\n    < +\t\t    api.flags );\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1198: FILE: /tmp/f1/zserv.c:1198:\n    < +                       if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1198: FILE: /tmp/f1/zserv.c:1198:\n    < +                       if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: suspect code indent for conditional statements (23, 27)\n    < #1198: FILE: /tmp/f1/zserv.c:1198:\n    < +                       if (IS_ZEBRA_DEBUG_RECV) {\n    < +                           zlog_debug(\"nh type %d\", api_nh->type);\n    --\n    < WARNING: braces {} are not necessary for single statement blocks\n    < #1198: FILE: /tmp/f1/zserv.c:1198:\n    < +                       if (IS_ZEBRA_DEBUG_RECV) {\n    < +                           zlog_debug(\"nh type %d\", api_nh->type);\n    --\n    < ERROR: code indent should use tabs where possible\n    < #1199: FILE: /tmp/f1/zserv.c:1199:\n    < +                           zlog_debug(\"nh type %d\", api_nh->type);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1199: FILE: /tmp/f1/zserv.c:1199:\n    < +                           zlog_debug(\"nh type %d\", api_nh->type);$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1200: FILE: /tmp/f1/zserv.c:1200:\n    < +                       }$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1200: FILE: /tmp/f1/zserv.c:1200:\n    < +                       }$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1208: FILE: /tmp/f1/zserv.c:1208:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1208: FILE: /tmp/f1/zserv.c:1208:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: suspect code indent for conditional statements (31, 35)\n    < #1208: FILE: /tmp/f1/zserv.c:1208:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};\n    --\n    < ERROR: code indent should use tabs where possible\n    < #1209: FILE: /tmp/f1/zserv.c:1209:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1209: FILE: /tmp/f1/zserv.c:1209:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1210: FILE: /tmp/f1/zserv.c:1210:\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,$\n    < \n    < WARNING: Missing a blank line after declarations\n    < #1210: FILE: /tmp/f1/zserv.c:1210:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,\n    --\n    < WARNING: please, no spaces at the start of a line\n    < #1210: FILE: /tmp/f1/zserv.c:1210:\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1211: FILE: /tmp/f1/zserv.c:1211:\n    < +                                       nhbuf, INET6_ADDRSTRLEN);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1211: FILE: /tmp/f1/zserv.c:1211:\n    < +                                       nhbuf, INET6_ADDRSTRLEN);$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1212: FILE: /tmp/f1/zserv.c:1212:\n    < +                                   zlog_debug(\"%s: nh=%s, vrf_id=%d\",$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1212: FILE: /tmp/f1/zserv.c:1212:\n    < +                                   zlog_debug(\"%s: nh=%s, vrf_id=%d\",$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1213: FILE: /tmp/f1/zserv.c:1213:\n    < +                                       __func__, nhbuf, api_nh->vrf_id);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1213: FILE: /tmp/f1/zserv.c:1213:\n    < +                                       __func__, nhbuf, api_nh->vrf_id);$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1214: FILE: /tmp/f1/zserv.c:1214:\n    < +                               }$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1214: FILE: /tmp/f1/zserv.c:1214:\n    < +                               }$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1231: FILE: /tmp/f1/zserv.c:1231:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1231: FILE: /tmp/f1/zserv.c:1231:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {$\n    < \n    < WARNING: suspect code indent for conditional statements (31, 35)\n    < #1231: FILE: /tmp/f1/zserv.c:1231:\n    < +                               if (IS_ZEBRA_DEBUG_RECV) {\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};\n    --\n    < ERROR: code indent should use tabs where possible\n    < #1232: FILE: /tmp/f1/zserv.c:1232:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1232: FILE: /tmp/f1/zserv.c:1232:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1233: FILE: /tmp/f1/zserv.c:1233:\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,$\n    < \n    < WARNING: Missing a blank line after declarations\n    < #1233: FILE: /tmp/f1/zserv.c:1233:\n    < +                                   char nhbuf[INET6_ADDRSTRLEN] = {0};\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,\n    --\n    < WARNING: please, no spaces at the start of a line\n    < #1233: FILE: /tmp/f1/zserv.c:1233:\n    < +                                   inet_ntop(AF_INET, &api_nh->gate.ipv4,$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1234: FILE: /tmp/f1/zserv.c:1234:\n    < +                                       nhbuf, INET6_ADDRSTRLEN);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1234: FILE: /tmp/f1/zserv.c:1234:\n    < +                                       nhbuf, INET6_ADDRSTRLEN);$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1235: FILE: /tmp/f1/zserv.c:1235:\n    < +                                   zlog_debug(\"%s: nh=%s, vrf_id=%d (re->vrf_id=%d), ifindex=%d\",$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1235: FILE: /tmp/f1/zserv.c:1235:\n    < +                                   zlog_debug(\"%s: nh=%s, vrf_id=%d (re->vrf_id=%d), ifindex=%d\",$\n    < \n    < WARNING: line over 80 characters\n    < #1236: FILE: /tmp/f1/zserv.c:1236:\n    < +                                       __func__, nhbuf, api_nh->vrf_id, re->vrf_id, ifindex);\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1236: FILE: /tmp/f1/zserv.c:1236:\n    < +                                       __func__, nhbuf, api_nh->vrf_id, re->vrf_id, ifindex);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1236: FILE: /tmp/f1/zserv.c:1236:\n    < +                                       __func__, nhbuf, api_nh->vrf_id, re->vrf_id, ifindex);$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1237: FILE: /tmp/f1/zserv.c:1237:\n    < +                               }$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1237: FILE: /tmp/f1/zserv.c:1237:\n    < +                               }$\n    < \n    --\n    < WARNING: suspect code indent for conditional statements (32, 36)\n    < #1291: FILE: /tmp/f1/zserv.c:1291:\n    < +\t\t\t\tif (IS_ZEBRA_DEBUG_RECV) {\n    < +\t\t\t\t    zlog_debug(\n    --\n    < ERROR: code indent should use tabs where possible\n    < #1293: FILE: /tmp/f1/zserv.c:1293:\n    < +                                       \"%s: adding %d labels of type %d (1st=%u)\",$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1293: FILE: /tmp/f1/zserv.c:1293:\n    < +                                       \"%s: adding %d labels of type %d (1st=%u)\",$\n    < \n    < ERROR: code indent should use tabs where possible\n    < #1295: FILE: /tmp/f1/zserv.c:1295:\n    < +                                       label_type, api_nh->labels[0]);$\n    < \n    < WARNING: please, no spaces at the start of a line\n    < #1295: FILE: /tmp/f1/zserv.c:1295:\n    < +                                       label_type, api_nh->labels[0]);$\n    < \n\n\n-----------------------------\n### CLANG Static Analyzer Summary\n- Github Pull Request 1739, comparing to Git base SHA 1708ca5\n#### No Changes in Static Analysis warnings compared to base\n#### 19 Static Analyzer issues remaining.\nSee details at\nhttps://ci1.netdef.org/browse/FRR-FRRPULLREQ-2820/artifact/shared/static_analysis/index.html\n"}}
{"actor":{"display_login":"NetDEF-CI"}}