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

lib: FRR next-hop yang data model. #5578

Merged
merged 1 commit into from Feb 12, 2020

Conversation

Spantik
Copy link
Member

@Spantik Spantik commented Dec 20, 2019

A common nexthop and group nexthop yang data model
for all protocols in FRR.

Co-authored-by: Santosh P K sapk@vmware.com
Co-authored-by: Vishaldhingra vdhingra@vmware.com
Signed-off-by: Santosh P K sapk@vmware.com

@Spantik
Copy link
Member Author

Spantik commented Dec 20, 2019

Modified common next-hop and next-hop group for other protocols and zebra to use.

For next-hop would look like below with an example if used as leafref
Route -> 1.1.1.1 with nexthop 10.10.10.10, 20.20.20.20, 30.30.30.30
Route -> 2.2.2.2 with nexthop 20.20.20.20, 30.30.30.30, 40.40.40.40

Nexthop table:
id Entry

1 10.10.10.10
2 20.20.20.20
3 30.30.30.30
4 40.40.40.40

Nexthop Group table:
id Entry

10 1, 2, 3
20 2,3 ,4

Route with Nexthop will look like
1.1.1.1/32 nexthop 1,2,3
2.2.2.2/32 nexthop 2,3,4

Route with Nexthop group would look like

1.1.1.1/32 nexthop 10
2.2.2.2/32 nexthop 20

Nexthop tree:

Screenshot 2019-12-17 at 8 00 54 PM

@Spantik
Copy link
Member Author

Spantik commented Dec 20, 2019

@qlyoung and @mjstapp I had to pulldown #5547 as i had issues with rebase. I have raised this new PR after addressing both of your comments.

Comments that are not addressed are as below.

  1. why is the default true here - why is this attribute different from others?
  2. The description text here doesn't seem right - it seems to be talking about a single nexthop, rather than a group. Also, the id value in a 'real' group does have some meaning - at least, it can be used when interacting with the newer linux kernels.

Both of these points I need a discussion. On group nexthop I wanted to understand how do we want to keep grouping? Right now it is pointing to list of nexthop_ids.

@Spantik
Copy link
Member Author

Spantik commented Dec 20, 2019

@qlyoung @mjstapp Can you please also let me know if this looks right here?

container gateway-interface {
when "../nh-type = 'ip4-ifindex' or"
+ "../nh-type = 'ip6-ifindex'";
leaf gateway {
type frr-nexthop:gateway-address;
description
"The nexthop gateway address.";
}
leaf interface {
type frr-interface:interface-ref;
description
"The nexthop egress interface.";
}

We are saying nexthop type is ipv4-ifindex but we are having leafref which is pointing to interface and not ifindex. I kept it this way as old frr-nexthop was also doing the same.

@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-10190/

This is a comment from an 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 5578, comparing to Git base SHA 7d75ef8

No Changes in Static Analysis warnings compared to base

1 Static Analyzer issues remaining.

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

@mjstapp mjstapp self-requested a review December 20, 2019 12:49
@mjstapp
Copy link
Contributor

mjstapp commented Dec 20, 2019

Comments that are not addressed are as below.

1. why is the default true here - why is this attribute different from others?

so ... these flags get set as a result of some processing - in zebra's mind, a nexthop is only "valid" if it meets certain requirements that are part of zebra's RIB processing. it seems confusing for the absence of a flag to mean "enabled".

2. The description text here doesn't seem right - it seems to be talking about a single nexthop, rather than a group. Also, the id value in a 'real' group does have some meaning - at least, it can be used when interacting with the newer linux kernels.

ok, so maybe we need to disentangle a few cases: there are (a) nexthops that are learned as a result of routing protocol messaging; there are (b) nexthops that are configured explicitly; and there are (c) nexthops that are learned by zebra on some linux/netlink OSes. Some of the attributes of nexthops can be configured in the (b) and (c) paths; some attributes can never be configured and are always "read-only" to admins. the (b) objects are not widely used - but there would be value in having more ability to share those configurations and there's work ongoing to implement that. Further, zebra has recently begun managing (a) objects and (c) objects in the same way - it canonicalizes (a) information that it receives, and uses nexthop-group objects that routes share. those group objects have ids that are unique and stable. and it's likely that in the future we'd like to extend the nexthop-group concept to other daemons, to improve memory footprint, and communication efficiency with zebra.

@Spantik
Copy link
Member Author

Spantik commented Dec 20, 2019

Comments that are not addressed are as below.

1. why is the default true here - why is this attribute different from others?

so ... these flags get set as a result of some processing - in zebra's mind, a nexthop is only "valid" if it meets certain requirements that are part of zebra's RIB processing. it seems confusing for the absence of a flag to mean "enabled".

2. The description text here doesn't seem right - it seems to be talking about a single nexthop, rather than a group. Also, the id value in a 'real' group does have some meaning - at least, it can be used when interacting with the newer linux kernels.

ok, so maybe we need to disentangle a few cases: there are (a) nexthops that are learned as a result of routing protocol messaging; there are (b) nexthops that are configured explicitly; and there are (c) nexthops that are learned by zebra on some linux/netlink OSes. Some of the attributes of nexthops can be configured in the (b) and (c) paths; some attributes can never be configured and are always "read-only" to admins. the (b) objects are not widely used - but there would be value in having more ability to share those configurations and there's work ongoing to implement that. Further, zebra has recently begun managing (a) objects and (c) objects in the same way - it canonicalizes (a) information that it receives, and uses nexthop-group objects that routes share. those group objects have ids that are unique and stable. and it's likely that in the future we'd like to extend the nexthop-group concept to other daemons, to improve memory footprint, and communication efficiency with zebra.

@Spantik Spantik closed this Dec 20, 2019
@Spantik Spantik reopened this Dec 20, 2019
@Spantik
Copy link
Member Author

Spantik commented Dec 20, 2019

Comments that are not addressed are as below.

1. why is the default true here - why is this attribute different from others?

so ... these flags get set as a result of some processing - in zebra's mind, a nexthop is only "valid" if it meets certain requirements that are part of zebra's RIB processing. it seems confusing for the absence of a flag to mean "enabled".

You are right since this internal flag. We can keep this flag by default as false but thinking aloud @mjstapp should we remove it as it is internal flag and can be augmented in zebra as this zebra only property?

2. The description text here doesn't seem right - it seems to be talking about a single nexthop, rather than a group. Also, the id value in a 'real' group does have some meaning - at least, it can be used when interacting with the newer linux kernels.

ok, so maybe we need to disentangle a few cases: there are (a) nexthops that are learned as a result of routing protocol messaging; there are (b) nexthops that are configured explicitly; and there are (c) nexthops that are learned by zebra on some linux/netlink OSes. Some of the attributes of nexthops can be configured in the (b) and (c) paths; some attributes can never be configured and are always "read-only" to admins. the (b) objects are not widely used - but there would be value in having more ability to share those configurations and there's work ongoing to implement that. Further, zebra has recently begun managing (a) objects and (c) objects in the same way - it canonicalizes (a) information that it receives, and uses nexthop-group objects that routes share. those group objects have ids that are unique and stable. and it's likely that in the future we'd like to extend the nexthop-group concept to other daemons, to improve memory footprint, and communication efficiency with zebra.

@mjstapp thanks. So in that case how would nexthop group would looks like in tree format? Would it be as I have shown in example of nexthops in previous comment? Since nexthop is a leafref we have ID for each nexthop. For group nexthop we thought of id pointing to multiple Ids in the nexthop table.

@riw777
Copy link
Member

riw777 commented Jan 7, 2020

You are right since this internal flag. We can keep this flag by default as false but thinking aloud @mjstapp should we remove it as it is internal flag and can be augmented in zebra as this zebra only property?

This seems like the right thing to do here, to me...

@qlyoung qlyoung added the yang label Jan 14, 2020
leaf group-id {
type uint32;
description
"Identifies a set of nexthops in a group."
Copy link
Member

Choose a reason for hiding this comment

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

Needs a semicolon

Copy link
Member

@sworleys sworleys left a comment

Choose a reason for hiding this comment

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

A few things:

  • duplicate, active, recursive and flags are operational state and need to be readonly
  • active should be false by default. That is not set true until it goes through zebra nexthop resolution.
  • I'm not sure the flags bitfield should be present in model, flags need to be split out
    into their own leaves for ones we care about.
  • I think the mpls-label-stack needs to be defined elsewhere and used as a type for a leaf in a nexthop. I assume other things will need the label stack in their tree?
  • @mjstapp what was your reasoning for including mtu in the nexthop definition? I'm not aware that's something we track internally with nexthops in frr. Is it not more of a per route thing?
  • See my naming comments

yang/frr-nexthop.yang Outdated Show resolved Hide resolved
description
"The nexthop-group name.";
}
list group-nexthop {
Copy link
Member

Choose a reason for hiding this comment

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

rename, do we need the group- prefix? could it just be nexthop?

Copy link
Member

Choose a reason for hiding this comment

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

+1

key "group-id";
description
"A group of nexthops.";
leaf group-id {
Copy link
Member

Choose a reason for hiding this comment

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

if we change the name above, this should be renamed similarly right?

"A nexthop-group, represented as a list of nexthop objects.";

list group-entry {
key "group-id";
Copy link
Member

Choose a reason for hiding this comment

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

rename, maybe nexthop-group-id ?

description
"A nexthop-group, represented as a list of nexthop objects.";

list group-entry {
Copy link
Member

Choose a reason for hiding this comment

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

So this is where the actual definition of a group begins right?
Could we call this something else besides group-entry. Maybe even just nexthop-group will work?

Copy link
Member

Choose a reason for hiding this comment

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

+1, this is the global list of nexthop groups, group-entry isn't descriptive

type empty;
leaf active {
type boolean;
default true;
Copy link
Member

Choose a reason for hiding this comment

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

This should default to false

Copy link
Member

Choose a reason for hiding this comment

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

+1, and again Zebra determines this value, so again config false

@sworleys
Copy link
Member

Another thing probably worth noting here: nexthop-groups and nexthops share ID space internally.

What i mean to say is that a single nexthop is ALWAYS inside of a group and has an ID set there. You can't lookup and individual nexthop by its ID internally. You look it up by its group ID and it may just be a single nexthop or it could be a group of nexthops.

Im not sure how to translate that requirement into a yang model but if someone specifies a nexthop with id 9 and puts it into a group specified with id 9 that will break is what I am saying. Zebra does not allow this and the linux kernel does not either.

I think going forward we need to make the requirement in our yang models that a nexthop cannot be referenced individual. A route should always reference a nexthop group and that references the nexthops; whether its a single nexthop or not.

@mjstapp
Copy link
Contributor

mjstapp commented Jan 15, 2020

you're quite right @sworleys : mtu shouldn't be in the per-nexthop model. I don't know what I was thinking there!

* @mjstapp what was your reasoning for including `mtu` in the nexthop definition? I'm not aware that's something we track internally with nexthops in frr. Is it not more of a `per route` thing?

yang/frr-nexthop.yang Show resolved Hide resolved
yang/frr-nexthop.yang Show resolved Hide resolved
type empty;
leaf active {
type boolean;
default true;
Copy link
Member

Choose a reason for hiding this comment

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

+1, and again Zebra determines this value, so again config false

yang/frr-nexthop.yang Show resolved Hide resolved
description
"The nexthop-group name.";
}
list group-nexthop {
Copy link
Member

Choose a reason for hiding this comment

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

+1

yang/frr-nexthop.yang Outdated Show resolved Hide resolved
description
"A nexthop-group, represented as a list of nexthop objects.";

list group-entry {
Copy link
Member

Choose a reason for hiding this comment

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

+1, this is the global list of nexthop groups, group-entry isn't descriptive

Copy link
Member

@qlyoung qlyoung left a comment

Choose a reason for hiding this comment

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

see previous review comments

type blackhole-type;
description
"A blackhole sub-type, if the nexthop is a blackhole type.";
}

leaf flags {
Copy link
Member

Choose a reason for hiding this comment

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

I know this wasn't touched in the PR, but it should be readonly as well; and maybe not even be a bitfield, it might make more sense to just split the flag values out into booleans

yang/frr-nexthop.yang Show resolved Hide resolved
@Spantik
Copy link
Member Author

Spantik commented Jan 17, 2020

@qlyoung @mjstapp @sworleys Thanks a lot for review. I think most of the operational things in yang is present as we kept them untouched from previous data model. I completely agree that operational attributes are not required here. About Ids for nexthop is something required as yang does not support optional keys. As request last week I am coming up with draft which explains the same. We can discuss in today's call.

@Spantik
Copy link
Member Author

Spantik commented Jan 17, 2020

@qlyoung @mjstapp @sworleys I have tried to represent ID management and also how staticd will be consuming nexthop. Please refer to attached PDF.

nexthops.pdf

@Spantik
Copy link
Member Author

Spantik commented Jan 17, 2020

New nexthop yang tree.

Screenshot 2020-01-17 at 5 24 19 PM

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

This is a comment from an 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 / Pull Request: Successful

Building Stage: Failed

FreeBSD 11 amd64 build: Failed (click for details)

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

  CC       lib/json.lo
  CC       lib/keychain.lo
  CC       lib/lib_errors.lo
  CC       lib/libfrr.lo
  CC       lib/linklist.lo
  CC       lib/log.lo
  CLIPPY   lib/log_vty_clippy.c
  CC       lib/log_vty.lo
  CC       lib/md5.lo

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

Successful on other platforms
  • Ubuntu 18.04 ppc64le build
  • NetBSD 8 amd64 build
  • Debian 9 amd64 build
  • Ubuntu 14.04 amd64 build
  • Ubuntu 12.04 amd64 build
  • Fedora 29 amd64 build
  • Ubuntu 16.04 i386 build
  • Debian 8 amd64 build
  • Debian 10 amd64 build
  • NetBSD 6 amd64 build
  • CentOS 7 amd64 build
  • OpenBSD 6 amd64 build
  • Ubuntu 16.04 amd64 build
  • Ubuntu 18.04 amd64 build
  • FreeBSD 12 amd64 build

@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-10478/

This is a comment from an 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:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10478/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200117-00-g7d1f1fb31-0 (missing) -> 7.3-dev-20200117-00-g7d1f1fb31-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200117-00-g7d1f1fb31-0 (missing) -> 7.3-dev-20200117-00-g7d1f1fb31-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200117-00-g7d1f1fb31-0 (missing) -> 7.3-dev-20200117-00-g7d1f1fb31-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200117-00-g7d1f1fb31-0 (missing) -> 7.3-dev-20200117-00-g7d1f1fb31-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200117-00-g7d1f1fb31-0 (missing) -> 7.3-dev-20200117-00-g7d1f1fb31-0~deb10u1
W: frr: spelling-error-in-readme-debian explecitly explicitly

CLANG Static Analyzer Summary

  • Github Pull Request 5578, comparing to Git base SHA 7d75ef8

No Changes in Static Analysis warnings compared to base

1 Static Analyzer issues remaining.

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

@Spantik
Copy link
Member Author

Spantik commented Jan 20, 2020

New FRR yang tree.

static_yang

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

This is a comment from an 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 / Pull Request: Successful

Building Stage: Failed

FreeBSD 11 amd64 build: Failed (click for details)

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

  CC       lib/json.lo
  CC       lib/keychain.lo
  CC       lib/lib_errors.lo
  CC       lib/libfrr.lo
  CC       lib/linklist.lo
  CC       lib/log.lo
  CLIPPY   lib/log_vty_clippy.c
  CC       lib/log_vty.lo
  CC       lib/md5.lo

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

Successful on other platforms
  • NetBSD 6 amd64 build
  • CentOS 7 amd64 build
  • Debian 8 amd64 build
  • Debian 10 amd64 build
  • Ubuntu 14.04 amd64 build
  • FreeBSD 12 amd64 build
  • OpenBSD 6 amd64 build
  • NetBSD 8 amd64 build
  • Ubuntu 16.04 amd64 build
  • Ubuntu 18.04 amd64 build
  • Debian 9 amd64 build
  • Ubuntu 12.04 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Ubuntu 16.04 i386 build
  • Fedora 29 amd64 build

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10496/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-04-g182399619-0 (missing) -> 7.3-dev-20200120-04-g182399619-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-04-g182399619-0 (missing) -> 7.3-dev-20200120-04-g182399619-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-04-g182399619-0 (missing) -> 7.3-dev-20200120-04-g182399619-0~deb10u1
W: frr: spelling-error-in-readme-debian explecitly explicitly
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-04-g182399619-0 (missing) -> 7.3-dev-20200120-04-g182399619-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-04-g182399619-0 (missing) -> 7.3-dev-20200120-04-g182399619-0~deb10u1

@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-10492/

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

<TITLE>clang_check</TITLE>

clang_check

@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-10493/

This is a comment from an 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
<stdin>:421: trailing whitespace.
static void _clear_peer_counter(struct bfd_session *bs) 
<stdin>:536: trailing whitespace.
    
<stdin>:9965: trailing whitespace.
  the new feature within our existing CI infrastructure.  Also the 
<stdin>:10249: trailing whitespace.
   frr# show bfd peers brief 
<stdin>:28675: trailing whitespace.
            
warning: squelched 3 whitespace errors
warning: 8 lines add whitespace errors.
cp: cannot stat './defaults.h': No such file or directory
cp: cannot stat './lib/memory_vty.c': No such file or directory
cp: cannot stat './lib/memory_vty.h': No such file or directory
Report for bfdd_vty.c | 22 issues
===============================================
< WARNING: line over 80 characters
< #425: FILE: /tmp/f1-10878/bfdd_vty.c:425:
< ERROR: trailing whitespace
< #446: FILE: /tmp/f1-10878/bfdd_vty.c:446:
< WARNING: Block comments use * on subsequent lines
< #449: FILE: /tmp/f1-10878/bfdd_vty.c:449:
< WARNING: Block comments use a trailing */ on a separate line
< #449: FILE: /tmp/f1-10878/bfdd_vty.c:449:
< WARNING: line over 80 characters
< #462: FILE: /tmp/f1-10878/bfdd_vty.c:462:
< WARNING: line over 80 characters
< #464: FILE: /tmp/f1-10878/bfdd_vty.c:464:
< WARNING: suspect code indent for conditional statements (16, 16)
< #488: FILE: /tmp/f1-10878/bfdd_vty.c:488:
< WARNING: line over 80 characters
< #496: FILE: /tmp/f1-10878/bfdd_vty.c:496:
< ERROR: trailing whitespace
< #715: FILE: /tmp/f1-10878/bfdd_vty.c:715:
< WARNING: please, no spaces at the start of a line
< #715: FILE: /tmp/f1-10878/bfdd_vty.c:715:
< WARNING: line over 80 characters
< #831: FILE: /tmp/f1-10878/bfdd_vty.c:831:
Report for bgp_attr.c | 8 issues
===============================================
< WARNING: line over 80 characters
< #2239: FILE: /tmp/f1-10878/bgp_attr.c:2239:
< WARNING: line over 80 characters
< #2256: FILE: /tmp/f1-10878/bgp_attr.c:2256:
< WARNING: line over 80 characters
< #2335: FILE: /tmp/f1-10878/bgp_attr.c:2335:
< WARNING: line over 80 characters
< #2339: FILE: /tmp/f1-10878/bgp_attr.c:2339:
Report for bgp_bmp.c | 2 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #2140: FILE: /tmp/f1-10878/bgp_bmp.c:2140:
Report for bgp_ecommunity.c | 8 issues
===============================================
< WARNING: Missing a blank line after declarations
< #95: FILE: /tmp/f1-10878/bgp_ecommunity.c:95:
< WARNING: Missing a blank line after declarations
< #701: FILE: /tmp/f1-10878/bgp_ecommunity.c:701:
< WARNING: Missing a blank line after declarations
< #767: FILE: /tmp/f1-10878/bgp_ecommunity.c:767:
< WARNING: Missing a blank line after declarations
< #834: FILE: /tmp/f1-10878/bgp_ecommunity.c:834:
Report for bgp_evpn.c | 14 issues
===============================================
< ERROR: code indent should use tabs where possible
< #1924: FILE: /tmp/f1-10878/bgp_evpn.c:1924:
< ERROR: code indent should use tabs where possible
< #1925: FILE: /tmp/f1-10878/bgp_evpn.c:1925:
< ERROR: code indent should use tabs where possible
< #1926: FILE: /tmp/f1-10878/bgp_evpn.c:1926:
< ERROR: code indent should use tabs where possible
< #1927: FILE: /tmp/f1-10878/bgp_evpn.c:1927:
< ERROR: code indent should use tabs where possible
< #1928: FILE: /tmp/f1-10878/bgp_evpn.c:1928:
< ERROR: code indent should use tabs where possible
< #1929: FILE: /tmp/f1-10878/bgp_evpn.c:1929:
< WARNING: line over 80 characters
< #2241: FILE: /tmp/f1-10878/bgp_evpn.c:2241:
Report for bgp_lcommunity.c | 2 issues
===============================================
< WARNING: Missing a blank line after declarations
< #212: FILE: /tmp/f1-10878/bgp_lcommunity.c:212:
Report for bgp_packet.c | 20 issues
===============================================
< ERROR: code indent should use tabs where possible
< #1661: FILE: /tmp/f1-10878/bgp_packet.c:1661:
< WARNING: please, no spaces at the start of a line
< #1661: FILE: /tmp/f1-10878/bgp_packet.c:1661:
< ERROR: code indent should use tabs where possible
< #1662: FILE: /tmp/f1-10878/bgp_packet.c:1662:
< WARNING: please, no spaces at the start of a line
< #1662: FILE: /tmp/f1-10878/bgp_packet.c:1662:
< ERROR: code indent should use tabs where possible
< #1663: FILE: /tmp/f1-10878/bgp_packet.c:1663:
< WARNING: please, no spaces at the start of a line
< #1663: FILE: /tmp/f1-10878/bgp_packet.c:1663:
< ERROR: code indent should use tabs where possible
< #1664: FILE: /tmp/f1-10878/bgp_packet.c:1664:
< WARNING: please, no spaces at the start of a line
< #1664: FILE: /tmp/f1-10878/bgp_packet.c:1664:
< ERROR: code indent should use tabs where possible
< #1665: FILE: /tmp/f1-10878/bgp_packet.c:1665:
< WARNING: please, no spaces at the start of a line
< #1665: FILE: /tmp/f1-10878/bgp_packet.c:1665:
Report for bgp_route.c | 10 issues
===============================================
< WARNING: line over 80 characters
< #3177: FILE: /tmp/f1-10878/bgp_route.c:3177:
< WARNING: line over 80 characters
< #7981: FILE: /tmp/f1-10878/bgp_route.c:7981:
< WARNING: line over 80 characters
< #8045: FILE: /tmp/f1-10878/bgp_route.c:8045:
< WARNING: line over 80 characters
< #9398: FILE: /tmp/f1-10878/bgp_route.c:9398:
< WARNING: line over 80 characters
< #9402: FILE: /tmp/f1-10878/bgp_route.c:9402:
Report for bgp_vty.c | 30 issues
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #13205: FILE: /tmp/f1-10878/bgp_vty.c:13205:
< WARNING: braces {} are not necessary for single statement blocks
< #13237: FILE: /tmp/f1-10878/bgp_vty.c:13237:
< WARNING: braces {} are not necessary for single statement blocks
< #13252: FILE: /tmp/f1-10878/bgp_vty.c:13252:
< WARNING: braces {} are not necessary for single statement blocks
< #13264: FILE: /tmp/f1-10878/bgp_vty.c:13264:
< WARNING: braces {} are not necessary for single statement blocks
< #13270: FILE: /tmp/f1-10878/bgp_vty.c:13270:
< WARNING: braces {} are not necessary for single statement blocks
< #13275: FILE: /tmp/f1-10878/bgp_vty.c:13275:
< WARNING: Block comments use a trailing */ on a separate line
< #13404: FILE: /tmp/f1-10878/bgp_vty.c:13404:
< WARNING: braces {} are not necessary for single statement blocks
< #13405: FILE: /tmp/f1-10878/bgp_vty.c:13405:
< WARNING: Block comments use * on subsequent lines
< #13410: FILE: /tmp/f1-10878/bgp_vty.c:13410:
< WARNING: Block comments use a trailing */ on a separate line
< #13410: FILE: /tmp/f1-10878/bgp_vty.c:13410:
< WARNING: braces {} are not necessary for single statement blocks
< #13411: FILE: /tmp/f1-10878/bgp_vty.c:13411:
< WARNING: braces {} are not necessary for single statement blocks
< #13491: FILE: /tmp/f1-10878/bgp_vty.c:13491:
< WARNING: braces {} are not necessary for single statement blocks
< #13519: FILE: /tmp/f1-10878/bgp_vty.c:13519:
< WARNING: braces {} are not necessary for single statement blocks
< #13962: FILE: /tmp/f1-10878/bgp_vty.c:13962:
< WARNING: Block comments use a trailing */ on a separate line
< #14096: FILE: /tmp/f1-10878/bgp_vty.c:14096:
Report for command.h | 4 issues
===============================================
< WARNING: function definition argument 'const struct cmd_element *' should also have an identifier name
< #424: FILE: /tmp/f1-10878/command.h:424:
< WARNING: function definition argument 'const struct cmd_element *' should also have an identifier name
< #428: FILE: /tmp/f1-10878/command.h:428:
Report for defaults.c | 9 issues
===============================================
WARNING: Block comments use a trailing */ on a separate line
#58: FILE: /tmp/f1-10878/defaults.c:58:
+	 * doesn't compare equal to anything else */

WARNING: Missing a blank line after declarations
#103: FILE: /tmp/f1-10878/defaults.c:103:
+	int cmp;
+	static struct spec {
Report for if.c | 7 issues
===============================================
< WARNING: strncat() is error-prone; please use strlcat() if possible#942: FILE: /tmp/f1-10878/if.c:942:
---
> WARNING: strncat() is error-prone; please use strlcat() if possible#935: FILE: /tmp/f2-10878/if.c:935:
305c309
< #1033: FILE: /tmp/f1-10878/if.c:1033:
< WARNING: line over 80 characters
< #1682: FILE: /tmp/f1-10878/if.c:1682:
Report for ipaddr.h | 4 issues
===============================================
< WARNING: Missing a blank line after declarations
< #125: FILE: /tmp/f1-10878/ipaddr.h:125:
< WARNING: Comparisons should place the constant on the right side of the test
< #125: FILE: /tmp/f1-10878/ipaddr.h:125:
Report for lib_vty.c | 28 issues
===============================================
WARNING: Missing a blank line after declarations
#79: FILE: /tmp/f1-10878/lib_vty.c:79:
+	struct vty *vty = arg;
+	if (!mt) {

WARNING: Missing a blank line after declarations
#98: FILE: /tmp/f1-10878/lib_vty.c:98:
+			char size[32];
+			snprintf(size, sizeof(size), "%6zu", mt->size);

WARNING: Missing a blank line after declarations
#156: FILE: /tmp/f1-10878/lib_vty.c:156:
+			char origin[MAXPATHLEN] = "";
+			dlinfo(plug->dl_handle, RTLD_DI_ORIGIN, &origin);

WARNING: Missing a blank line after declarations
#160: FILE: /tmp/f1-10878/lib_vty.c:160:
+			struct link_map *lm = NULL;
+			dlinfo(plug->dl_handle, RTLD_DI_LINKMAP, &lm);

WARNING: unnecessary whitespace before a quoted newline
#167: FILE: /tmp/f1-10878/lib_vty.c:167:
+			vty_out(vty, "\tfrom: %s \n", origin, plug->load_name);

WARNING: line over 80 characters
#192: FILE: /tmp/f1-10878/lib_vty.c:192:
+		vty_out(vty, "%% WARNING: profile %s is not known in this version\n",
Report for memory.h | 2 issues
===============================================
< WARNING: line over 80 characters
< #124: FILE: /tmp/f1-10878/memory.h:124:
Report for ospf_api.c | 2 issues
===============================================
< WARNING: void function return statements are not generally useful
< #257: FILE: /tmp/f1-10878/ospf_api.c:257:
Report for ospf_flood.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #380: FILE: /tmp/f1-10878/ospf_flood.c:380:
Report for ospf_lsa.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #293: FILE: /tmp/f1-10878/ospf_lsa.c:293:
Report for ospf_packet.c | 2 issues
===============================================
< WARNING: break is not useful after a goto or return
< #3216: FILE: /tmp/f1-10878/ospf_packet.c:3216:
Report for ospf_vty.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #9663: FILE: /tmp/f1-10878/ospf_vty.c:9663:
Report for pim_bsm.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #1155: FILE: /tmp/f1-10878/pim_bsm.c:1155:
Report for pim_cmd.c | 128 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #1054: FILE: /tmp/f1-10878/pim_cmd.c:1054:
< WARNING: space prohibited between function name and open parenthesis '('
< #1216: FILE: /tmp/f1-10878/pim_cmd.c:1216:
< WARNING: space prohibited between function name and open parenthesis '('
< #1407: FILE: /tmp/f1-10878/pim_cmd.c:1407:
< WARNING: space prohibited between function name and open parenthesis '('
< #1992: FILE: /tmp/f1-10878/pim_cmd.c:1992:
< WARNING: space prohibited between function name and open parenthesis '('
< #2441: FILE: /tmp/f1-10878/pim_cmd.c:2441:
< WARNING: space prohibited between function name and open parenthesis '('
< #2723: FILE: /tmp/f1-10878/pim_cmd.c:2723:
< WARNING: space prohibited between function name and open parenthesis '('
< #2750: FILE: /tmp/f1-10878/pim_cmd.c:2750:
< WARNING: space prohibited between function name and open parenthesis '('
< #2887: FILE: /tmp/f1-10878/pim_cmd.c:2887:
< WARNING: braces {} are not necessary for single statement blocks
< #3927: FILE: /tmp/f1-10878/pim_cmd.c:3927:
< WARNING: space prohibited between function name and open parenthesis '('
< #5411: FILE: /tmp/f1-10878/pim_cmd.c:5411:
< WARNING: space prohibited between function name and open parenthesis '('
< #5854: FILE: /tmp/f1-10878/pim_cmd.c:5854:
< WARNING: space prohibited between function name and open parenthesis '('
< #5959: FILE: /tmp/f1-10878/pim_cmd.c:5959:
< ERROR: code indent should use tabs where possible
< #7902: FILE: /tmp/f1-10878/pim_cmd.c:7902:
< WARNING: please, no spaces at the start of a line
< #7902: FILE: /tmp/f1-10878/pim_cmd.c:7902:
< ERROR: code indent should use tabs where possible
< #7903: FILE: /tmp/f1-10878/pim_cmd.c:7903:
< WARNING: please, no spaces at the start of a line
< #7903: FILE: /tmp/f1-10878/pim_cmd.c:7903:
< ERROR: code indent should use tabs where possible
< #7904: FILE: /tmp/f1-10878/pim_cmd.c:7904:
< WARNING: please, no spaces at the start of a line
< #7904: FILE: /tmp/f1-10878/pim_cmd.c:7904:
< ERROR: code indent should use tabs where possible
< #7905: FILE: /tmp/f1-10878/pim_cmd.c:7905:
< WARNING: please, no spaces at the start of a line
< #7905: FILE: /tmp/f1-10878/pim_cmd.c:7905:
< ERROR: else should follow close brace '}'
< #7905: FILE: /tmp/f1-10878/pim_cmd.c:7905:
< ERROR: code indent should use tabs where possible
< #7906: FILE: /tmp/f1-10878/pim_cmd.c:7906:
< WARNING: please, no spaces at the start of a line
< #7906: FILE: /tmp/f1-10878/pim_cmd.c:7906:
< ERROR: code indent should use tabs where possible
< #7907: FILE: /tmp/f1-10878/pim_cmd.c:7907:
< WARNING: please, no spaces at the start of a line
< #7907: FILE: /tmp/f1-10878/pim_cmd.c:7907:
< ERROR: code indent should use tabs where possible
< #7908: FILE: /tmp/f1-10878/pim_cmd.c:7908:
< WARNING: please, no spaces at the start of a line
< #7908: FILE: /tmp/f1-10878/pim_cmd.c:7908:
< WARNING: line over 80 characters
< #7909: FILE: /tmp/f1-10878/pim_cmd.c:7909:
< ERROR: code indent should use tabs where possible
< #7909: FILE: /tmp/f1-10878/pim_cmd.c:7909:
< WARNING: please, no spaces at the start of a line
< #7909: FILE: /tmp/f1-10878/pim_cmd.c:7909:
< ERROR: code indent should use tabs where possible
< #7910: FILE: /tmp/f1-10878/pim_cmd.c:7910:
< WARNING: please, no spaces at the start of a line
< #7910: FILE: /tmp/f1-10878/pim_cmd.c:7910:
< ERROR: code indent should use tabs where possible
< #7911: FILE: /tmp/f1-10878/pim_cmd.c:7911:
< WARNING: please, no spaces at the start of a line
< #7911: FILE: /tmp/f1-10878/pim_cmd.c:7911:
< ERROR: code indent should use tabs where possible
< #7912: FILE: /tmp/f1-10878/pim_cmd.c:7912:
< WARNING: please, no spaces at the start of a line
< #7912: FILE: /tmp/f1-10878/pim_cmd.c:7912:
< ERROR: code indent should use tabs where possible
< #7913: FILE: /tmp/f1-10878/pim_cmd.c:7913:
< WARNING: please, no spaces at the start of a line
< #7913: FILE: /tmp/f1-10878/pim_cmd.c:7913:
< ERROR: code indent should use tabs where possible
< #7964: FILE: /tmp/f1-10878/pim_cmd.c:7964:
< WARNING: please, no spaces at the start of a line
< #7964: FILE: /tmp/f1-10878/pim_cmd.c:7964:
< ERROR: code indent should use tabs where possible
< #7965: FILE: /tmp/f1-10878/pim_cmd.c:7965:
< WARNING: please, no spaces at the start of a line
< #7965: FILE: /tmp/f1-10878/pim_cmd.c:7965:
< ERROR: code indent should use tabs where possible
< #7966: FILE: /tmp/f1-10878/pim_cmd.c:7966:
< WARNING: please, no spaces at the start of a line
< #7966: FILE: /tmp/f1-10878/pim_cmd.c:7966:
< ERROR: code indent should use tabs where possible
< #7967: FILE: /tmp/f1-10878/pim_cmd.c:7967:
< WARNING: please, no spaces at the start of a line
< #7967: FILE: /tmp/f1-10878/pim_cmd.c:7967:
< ERROR: else should follow close brace '}'
< #7967: FILE: /tmp/f1-10878/pim_cmd.c:7967:
< ERROR: code indent should use tabs where possible
< #7968: FILE: /tmp/f1-10878/pim_cmd.c:7968:
< WARNING: please, no spaces at the start of a line
< #7968: FILE: /tmp/f1-10878/pim_cmd.c:7968:
< ERROR: code indent should use tabs where possible
< #7969: FILE: /tmp/f1-10878/pim_cmd.c:7969:
< WARNING: please, no spaces at the start of a line
< #7969: FILE: /tmp/f1-10878/pim_cmd.c:7969:
< ERROR: code indent should use tabs where possible
< #7970: FILE: /tmp/f1-10878/pim_cmd.c:7970:
< WARNING: please, no spaces at the start of a line
< #7970: FILE: /tmp/f1-10878/pim_cmd.c:7970:
< WARNING: line over 80 characters
< #7971: FILE: /tmp/f1-10878/pim_cmd.c:7971:
< ERROR: code indent should use tabs where possible
< #7971: FILE: /tmp/f1-10878/pim_cmd.c:7971:
< WARNING: please, no spaces at the start of a line
< #7971: FILE: /tmp/f1-10878/pim_cmd.c:7971:
< ERROR: code indent should use tabs where possible
< #7972: FILE: /tmp/f1-10878/pim_cmd.c:7972:
< WARNING: please, no spaces at the start of a line
< #7972: FILE: /tmp/f1-10878/pim_cmd.c:7972:
< ERROR: code indent should use tabs where possible
< #7973: FILE: /tmp/f1-10878/pim_cmd.c:7973:
< WARNING: please, no spaces at the start of a line
< #7973: FILE: /tmp/f1-10878/pim_cmd.c:7973:
< ERROR: code indent should use tabs where possible
< #7974: FILE: /tmp/f1-10878/pim_cmd.c:7974:
< WARNING: please, no spaces at the start of a line
< #7974: FILE: /tmp/f1-10878/pim_cmd.c:7974:
< ERROR: code indent should use tabs where possible
< #7975: FILE: /tmp/f1-10878/pim_cmd.c:7975:
< WARNING: please, no spaces at the start of a line
< #7975: FILE: /tmp/f1-10878/pim_cmd.c:7975:
Report for pim_ifchannel.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #1191: FILE: /tmp/f1-10878/pim_ifchannel.c:1191:
Report for pim_igmp.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #502: FILE: /tmp/f1-10878/pim_igmp.c:502:
Report for pim_igmp_mtrace.c | 2 issues
===============================================
< WARNING: quoted string split across lines
< #889: FILE: /tmp/f1-10878/pim_igmp_mtrace.c:889:
Report for pim_mroute.c | 2 issues
===============================================
< WARNING: braces {} are not necessary for single statement blocks
< #977: FILE: /tmp/f1-10878/pim_mroute.c:977:
Report for pim_msdp.c | 2 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #569: FILE: /tmp/f1-10878/pim_msdp.c:569:
Report for pim_msg.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #172: FILE: /tmp/f1-10878/pim_msg.c:172:
Report for pim_nht.c | 2 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #192: FILE: /tmp/f1-10878/pim_nht.c:192:
Report for pim_oil.c | 2 issues
===============================================
< WARNING: Block comments use a trailing */ on a separate line
< #598: FILE: /tmp/f1-10878/pim_oil.c:598:
Report for pim_oil.h | 4 issues
===============================================
< ERROR: code indent should use tabs where possible
< #115: FILE: /tmp/f1-10878/pim_oil.h:115:
< WARNING: please, no spaces at the start of a line
< #115: FILE: /tmp/f1-10878/pim_oil.h:115:
Report for pim_rp.c | 23 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #556: FILE: /tmp/f1-10878/pim_rp.c:556:
< WARNING: space prohibited between function name and open parenthesis '('
< #651: FILE: /tmp/f1-10878/pim_rp.c:651:
< WARNING: space prohibited between function name and open parenthesis '('
< #800: FILE: /tmp/f1-10878/pim_rp.c:800:
< WARNING: space prohibited between function name and open parenthesis '('
< #852: FILE: /tmp/f1-10878/pim_rp.c:852:
< WARNING: space prohibited between function name and open parenthesis '('
< #941: FILE: /tmp/f1-10878/pim_rp.c:941:
< ERROR: strcpy() is error-prone; please use strlcpy()#1263: FILE: /tmp/f1-10878/pim_rp.c:1263:
---
> ERROR: strcpy() is error-prone; please use strlcpy()#1270: FILE: /tmp/f2-10878/pim_rp.c:1270:
114c106
< ERROR: strcpy() is error-prone; please use strlcpy()#1265: FILE: /tmp/f1-10878/pim_rp.c:1265:
---
> ERROR: strcpy() is error-prone; please use strlcpy()#1272: FILE: /tmp/f2-10878/pim_rp.c:1272:
117c109
< ERROR: strcpy() is error-prone; please use strlcpy()#1267: FILE: /tmp/f1-10878/pim_rp.c:1267:
---
> ERROR: strcpy() is error-prone; please use strlcpy()#1274: FILE: /tmp/f2-10878/pim_rp.c:1274:
121c113
< #1391: FILE: /tmp/f1-10878/pim_rp.c:1391:
Report for pim_upstream.c | 16 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #110: FILE: /tmp/f1-10878/pim_upstream.c:110:
< WARNING: space prohibited between function name and open parenthesis '('
< #535: FILE: /tmp/f1-10878/pim_upstream.c:535:
< WARNING: space prohibited between function name and open parenthesis '('
< #639: FILE: /tmp/f1-10878/pim_upstream.c:639:
< WARNING: space prohibited between function name and open parenthesis '('
< #1168: FILE: /tmp/f1-10878/pim_upstream.c:1168:
< WARNING: space prohibited between function name and open parenthesis '('
< #1787: FILE: /tmp/f1-10878/pim_upstream.c:1787:
< WARNING: braces {} are not necessary for single statement blocks
< #1827: FILE: /tmp/f1-10878/pim_upstream.c:1827:
< WARNING: space prohibited between function name and open parenthesis '('
< #1975: FILE: /tmp/f1-10878/pim_upstream.c:1975:
< WARNING: space prohibited between function name and open parenthesis '('
< #2022: FILE: /tmp/f1-10878/pim_upstream.c:2022:
Report for pim_upstream.h | 8 issues
===============================================
< WARNING: line over 80 characters
< #114: FILE: /tmp/f1-10878/pim_upstream.h:114:
< WARNING: line over 80 characters
< #134: FILE: /tmp/f1-10878/pim_upstream.h:134:
< WARNING: line over 80 characters
< #153: FILE: /tmp/f1-10878/pim_upstream.h:153:
< WARNING: line over 80 characters
< #299: FILE: /tmp/f1-10878/pim_upstream.h:299:
Report for pim_vty.c | 12 issues
===============================================
< WARNING: line over 80 characters
< #382: FILE: /tmp/f1-10878/pim_vty.c:382:
< WARNING: Too many leading tabs - consider code refactoring
< #382: FILE: /tmp/f1-10878/pim_vty.c:382:
< WARNING: Too many leading tabs - consider code refactoring
< #386: FILE: /tmp/f1-10878/pim_vty.c:386:
< WARNING: line over 80 characters
< #388: FILE: /tmp/f1-10878/pim_vty.c:388:
< WARNING: line over 80 characters
< #390: FILE: /tmp/f1-10878/pim_vty.c:390:
< WARNING: line over 80 characters
< #393: FILE: /tmp/f1-10878/pim_vty.c:393:
Report for pim_zebra.c | 2 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #400: FILE: /tmp/f1-10878/pim_zebra.c:400:
Report for resolver.c | 10 issues
===============================================
< WARNING: function definition argument 'const char *' should also have an identifier name
< #148: FILE: /tmp/f1-10878/resolver.c:148:
< WARNING: function definition argument 'int' should also have an identifier name
< #148: FILE: /tmp/f1-10878/resolver.c:148:
< WARNING: function definition argument 'union sockunion *' should also have an identifier name
< #148: FILE: /tmp/f1-10878/resolver.c:148:
< WARNING: function definition argument 'struct resolver_query *' should also have an identifier name
< #188: FILE: /tmp/f1-10878/resolver.c:188:
< WARNING: function definition argument 'const char *' should also have an identifier name
< #188: FILE: /tmp/f1-10878/resolver.c:188:
Report for routemap.c | 2 issues
===============================================
< ERROR: do not initialise statics to NULL
< #626: FILE: /tmp/f1-10878/routemap.c:626:
Report for router-id.c | 68 issues
===============================================
< ERROR: code indent should use tabs where possible
< #263: FILE: /tmp/f1-10878/router-id.c:263:
< WARNING: please, no spaces at the start of a line
< #263: FILE: /tmp/f1-10878/router-id.c:263:
< ERROR: code indent should use tabs where possible
< #265: FILE: /tmp/f1-10878/router-id.c:265:
< WARNING: please, no spaces at the start of a line
< #265: FILE: /tmp/f1-10878/router-id.c:265:
< ERROR: code indent should use tabs where possible
< #266: FILE: /tmp/f1-10878/router-id.c:266:
< WARNING: please, no spaces at the start of a line
< #266: FILE: /tmp/f1-10878/router-id.c:266:
< ERROR: code indent should use tabs where possible
< #268: FILE: /tmp/f1-10878/router-id.c:268:
< WARNING: please, no spaces at the start of a line
< #268: FILE: /tmp/f1-10878/router-id.c:268:
< ERROR: code indent should use tabs where possible
< #269: FILE: /tmp/f1-10878/router-id.c:269:
< WARNING: please, no spaces at the start of a line
< #269: FILE: /tmp/f1-10878/router-id.c:269:
< ERROR: code indent should use tabs where possible
< #271: FILE: /tmp/f1-10878/router-id.c:271:
< WARNING: please, no spaces at the start of a line
< #271: FILE: /tmp/f1-10878/router-id.c:271:
< ERROR: code indent should use tabs where possible
< #273: FILE: /tmp/f1-10878/router-id.c:273:
< WARNING: please, no spaces at the start of a line
< #273: FILE: /tmp/f1-10878/router-id.c:273:
< ERROR: code indent should use tabs where possible
< #274: FILE: /tmp/f1-10878/router-id.c:274:
< WARNING: please, no spaces at the start of a line
< #274: FILE: /tmp/f1-10878/router-id.c:274:
< ERROR: code indent should use tabs where possible
< #275: FILE: /tmp/f1-10878/router-id.c:275:
< WARNING: please, no spaces at the start of a line
< #275: FILE: /tmp/f1-10878/router-id.c:275:
< ERROR: code indent should use tabs where possible
< #276: FILE: /tmp/f1-10878/router-id.c:276:
< WARNING: please, no spaces at the start of a line
< #276: FILE: /tmp/f1-10878/router-id.c:276:
< ERROR: code indent should use tabs where possible
< #277: FILE: /tmp/f1-10878/router-id.c:277:
< WARNING: please, no spaces at the start of a line
< #277: FILE: /tmp/f1-10878/router-id.c:277:
< ERROR: code indent should use tabs where possible
< #278: FILE: /tmp/f1-10878/router-id.c:278:
< WARNING: please, no spaces at the start of a line
< #278: FILE: /tmp/f1-10878/router-id.c:278:
< ERROR: code indent should use tabs where possible
< #279: FILE: /tmp/f1-10878/router-id.c:279:
< WARNING: please, no spaces at the start of a line
< #279: FILE: /tmp/f1-10878/router-id.c:279:
< ERROR: code indent should use tabs where possible
< #280: FILE: /tmp/f1-10878/router-id.c:280:
< WARNING: please, no spaces at the start of a line
< #280: FILE: /tmp/f1-10878/router-id.c:280:
< ERROR: code indent should use tabs where possible
< #281: FILE: /tmp/f1-10878/router-id.c:281:
< WARNING: please, no spaces at the start of a line
< #281: FILE: /tmp/f1-10878/router-id.c:281:
< ERROR: code indent should use tabs where possible
< #282: FILE: /tmp/f1-10878/router-id.c:282:
< WARNING: please, no spaces at the start of a line
< #282: FILE: /tmp/f1-10878/router-id.c:282:
< ERROR: code indent should use tabs where possible
< #284: FILE: /tmp/f1-10878/router-id.c:284:
< WARNING: please, no spaces at the start of a line
< #284: FILE: /tmp/f1-10878/router-id.c:284:
Report for rtadv.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #1013: FILE: /tmp/f1-10878/rtadv.c:1013:
Report for systemd.c | 4 issues
===============================================
< ERROR: do not initialise statics to 0
< #96: FILE: /tmp/f1-10878/systemd.c:96:
< ERROR: do not initialise statics to NULL
< #97: FILE: /tmp/f1-10878/systemd.c:97:
Report for vrrp.c | 2 issues
===============================================
< WARNING: space prohibited between function name and open parenthesis '('
< #1113: FILE: /tmp/f1-10878/vrrp.c:1113:
Report for vrrp_northbound.c | 36 issues
===============================================
WARNING: line over 80 characters
#260: FILE: /tmp/f1-10878/vrrp_northbound.c:260:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/master-advertisement-interval

WARNING: line over 80 characters
#285: FILE: /tmp/f1-10878/vrrp_northbound.c:285:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/state-transition

WARNING: line over 80 characters
#298: FILE: /tmp/f1-10878/vrrp_northbound.c:298:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/tx/advertisement

WARNING: line over 80 characters
#311: FILE: /tmp/f1-10878/vrrp_northbound.c:311:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/tx/gratuitous-arp

WARNING: line over 80 characters
#324: FILE: /tmp/f1-10878/vrrp_northbound.c:324:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/rx/advertisement

WARNING: line over 80 characters
#423: FILE: /tmp/f1-10878/vrrp_northbound.c:423:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/master-advertisement-interval

WARNING: line over 80 characters
#448: FILE: /tmp/f1-10878/vrrp_northbound.c:448:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/state-transition

WARNING: line over 80 characters
#461: FILE: /tmp/f1-10878/vrrp_northbound.c:461:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/tx/advertisement

WARNING: line over 80 characters
#474: FILE: /tmp/f1-10878/vrrp_northbound.c:474:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/tx/neighbor-advertisement

WARNING: line over 80 characters
#486: FILE: /tmp/f1-10878/vrrp_northbound.c:486:
+ * /frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/rx/advertisement

WARNING: line over 80 characters
#614: FILE: /tmp/f1-10878/vrrp_northbound.c:614:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group",

WARNING: line over 80 characters
#617: FILE: /tmp/f1-10878/vrrp_northbound.c:617:
+				.destroy = lib_interface_vrrp_vrrp_group_destroy,

WARNING: line over 80 characters
#618: FILE: /tmp/f1-10878/vrrp_northbound.c:618:
+				.get_next = lib_interface_vrrp_vrrp_group_get_next,

WARNING: line over 80 characters
#619: FILE: /tmp/f1-10878/vrrp_northbound.c:619:
+				.get_keys = lib_interface_vrrp_vrrp_group_get_keys,

WARNING: line over 80 characters
#620: FILE: /tmp/f1-10878/vrrp_northbound.c:620:
+				.lookup_entry = lib_interface_vrrp_vrrp_group_lookup_entry,

WARNING: line over 80 characters
#625: FILE: /tmp/f1-10878/vrrp_northbound.c:625:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/version",

WARNING: line over 80 characters
#627: FILE: /tmp/f1-10878/vrrp_northbound.c:627:
+				.modify = lib_interface_vrrp_vrrp_group_version_modify,

WARNING: line over 80 characters
#631: FILE: /tmp/f1-10878/vrrp_northbound.c:631:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/priority",

WARNING: line over 80 characters
#633: FILE: /tmp/f1-10878/vrrp_northbound.c:633:
+				.modify = lib_interface_vrrp_vrrp_group_priority_modify,

WARNING: line over 80 characters
#638: FILE: /tmp/f1-10878/vrrp_northbound.c:638:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/preempt",

WARNING: line over 80 characters
#640: FILE: /tmp/f1-10878/vrrp_northbound.c:640:
+				.modify = lib_interface_vrrp_vrrp_group_preempt_modify,

WARNING: line over 80 characters
#645: FILE: /tmp/f1-10878/vrrp_northbound.c:645:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/accept-mode",

WARNING: line over 80 characters
#647: FILE: /tmp/f1-10878/vrrp_northbound.c:647:
+				.modify = lib_interface_vrrp_vrrp_group_accept_mode_modify,

WARNING: line over 80 characters
#651: FILE: /tmp/f1-10878/vrrp_northbound.c:651:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/advertisement-interval",

WARNING: line over 80 characters
#653: FILE: /tmp/f1-10878/vrrp_northbound.c:653:
+				.modify = lib_interface_vrrp_vrrp_group_advertisement_interval_modify,

WARNING: line over 80 characters
#658: FILE: /tmp/f1-10878/vrrp_northbound.c:658:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/shutdown",

WARNING: line over 80 characters
#660: FILE: /tmp/f1-10878/vrrp_northbound.c:660:
+				.modify = lib_interface_vrrp_vrrp_group_shutdown_modify,

WARNING: line over 80 characters
#665: FILE: /tmp/f1-10878/vrrp_northbound.c:665:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/virtual-address",

WARNING: line over 80 characters
#667: FILE: /tmp/f1-10878/vrrp_northbound.c:667:
+				.create = lib_interface_vrrp_vrrp_group_v4_virtual_address_create,

WARNING: line over 80 characters
#668: FILE: /tmp/f1-10878/vrrp_northbound.c:668:
+				.destroy = lib_interface_vrrp_vrrp_group_v4_virtual_address_destroy,

WARNING: line over 80 characters
#673: FILE: /tmp/f1-10878/vrrp_northbound.c:673:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/current-priority",

WARNING: line over 80 characters
#675: FILE: /tmp/f1-10878/vrrp_northbound.c:675:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_current_priority_get_elem,

WARNING: line over 80 characters
#679: FILE: /tmp/f1-10878/vrrp_northbound.c:679:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/vrrp-interface",

WARNING: line over 80 characters
#681: FILE: /tmp/f1-10878/vrrp_northbound.c:681:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_vrrp_interface_get_elem,

WARNING: line over 80 characters
#685: FILE: /tmp/f1-10878/vrrp_northbound.c:685:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/source-address",

WARNING: line over 80 characters
#687: FILE: /tmp/f1-10878/vrrp_northbound.c:687:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_source_address_get_elem,

WARNING: line over 80 characters
#691: FILE: /tmp/f1-10878/vrrp_northbound.c:691:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/state",

WARNING: line over 80 characters
#693: FILE: /tmp/f1-10878/vrrp_northbound.c:693:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_state_get_elem,

WARNING: line over 80 characters
#697: FILE: /tmp/f1-10878/vrrp_northbound.c:697:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/master-advertisement-interval",

WARNING: line over 80 characters
#699: FILE: /tmp/f1-10878/vrrp_northbound.c:699:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_master_advertisement_interval_get_elem,

WARNING: line over 80 characters
#703: FILE: /tmp/f1-10878/vrrp_northbound.c:703:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/skew-time",

WARNING: line over 80 characters
#705: FILE: /tmp/f1-10878/vrrp_northbound.c:705:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_skew_time_get_elem,

WARNING: line over 80 characters
#709: FILE: /tmp/f1-10878/vrrp_northbound.c:709:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/state-transition",

WARNING: line over 80 characters
#711: FILE: /tmp/f1-10878/vrrp_northbound.c:711:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_counter_state_transition_get_elem,

WARNING: line over 80 characters
#715: FILE: /tmp/f1-10878/vrrp_northbound.c:715:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/tx/advertisement",

WARNING: line over 80 characters
#717: FILE: /tmp/f1-10878/vrrp_northbound.c:717:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_counter_tx_advertisement_get_elem,

WARNING: line over 80 characters
#721: FILE: /tmp/f1-10878/vrrp_northbound.c:721:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/tx/gratuitous-arp",

WARNING: line over 80 characters
#723: FILE: /tmp/f1-10878/vrrp_northbound.c:723:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_counter_tx_gratuitous_arp_get_elem,

WARNING: line over 80 characters
#727: FILE: /tmp/f1-10878/vrrp_northbound.c:727:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v4/counter/rx/advertisement",

WARNING: line over 80 characters
#729: FILE: /tmp/f1-10878/vrrp_northbound.c:729:
+				.get_elem = lib_interface_vrrp_vrrp_group_v4_counter_rx_advertisement_get_elem,

WARNING: line over 80 characters
#733: FILE: /tmp/f1-10878/vrrp_northbound.c:733:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/virtual-address",

WARNING: line over 80 characters
#735: FILE: /tmp/f1-10878/vrrp_northbound.c:735:
+				.create = lib_interface_vrrp_vrrp_group_v6_virtual_address_create,

WARNING: line over 80 characters
#736: FILE: /tmp/f1-10878/vrrp_northbound.c:736:
+				.destroy = lib_interface_vrrp_vrrp_group_v6_virtual_address_destroy,

WARNING: line over 80 characters
#741: FILE: /tmp/f1-10878/vrrp_northbound.c:741:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/current-priority",

WARNING: line over 80 characters
#743: FILE: /tmp/f1-10878/vrrp_northbound.c:743:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_current_priority_get_elem,

WARNING: line over 80 characters
#747: FILE: /tmp/f1-10878/vrrp_northbound.c:747:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/vrrp-interface",

WARNING: line over 80 characters
#749: FILE: /tmp/f1-10878/vrrp_northbound.c:749:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_vrrp_interface_get_elem,

WARNING: line over 80 characters
#753: FILE: /tmp/f1-10878/vrrp_northbound.c:753:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/source-address",

WARNING: line over 80 characters
#755: FILE: /tmp/f1-10878/vrrp_northbound.c:755:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_source_address_get_elem,

WARNING: line over 80 characters
#759: FILE: /tmp/f1-10878/vrrp_northbound.c:759:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/state",

WARNING: line over 80 characters
#761: FILE: /tmp/f1-10878/vrrp_northbound.c:761:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_state_get_elem,

WARNING: line over 80 characters
#765: FILE: /tmp/f1-10878/vrrp_northbound.c:765:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/master-advertisement-interval",

WARNING: line over 80 characters
#767: FILE: /tmp/f1-10878/vrrp_northbound.c:767:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_master_advertisement_interval_get_elem,

WARNING: line over 80 characters
#771: FILE: /tmp/f1-10878/vrrp_northbound.c:771:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/skew-time",

WARNING: line over 80 characters
#773: FILE: /tmp/f1-10878/vrrp_northbound.c:773:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_skew_time_get_elem,

WARNING: line over 80 characters
#777: FILE: /tmp/f1-10878/vrrp_northbound.c:777:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/state-transition",

WARNING: line over 80 characters
#779: FILE: /tmp/f1-10878/vrrp_northbound.c:779:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_counter_state_transition_get_elem,

WARNING: line over 80 characters
#783: FILE: /tmp/f1-10878/vrrp_northbound.c:783:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/tx/advertisement",

WARNING: line over 80 characters
#785: FILE: /tmp/f1-10878/vrrp_northbound.c:785:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_counter_tx_advertisement_get_elem,

WARNING: line over 80 characters
#789: FILE: /tmp/f1-10878/vrrp_northbound.c:789:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/tx/neighbor-advertisement",

WARNING: line over 80 characters
#791: FILE: /tmp/f1-10878/vrrp_northbound.c:791:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_counter_tx_neighbor_advertisement_get_elem,

WARNING: line over 80 characters
#795: FILE: /tmp/f1-10878/vrrp_northbound.c:795:
+			.xpath = "/frr-interface:lib/interface/frr-vrrpd:vrrp/vrrp-group/v6/counter/rx/advertisement",

WARNING: line over 80 characters
#797: FILE: /tmp/f1-10878/vrrp_northbound.c:797:
+				.get_elem = lib_interface_vrrp_vrrp_group_v6_counter_rx_advertisement_get_elem,
Report for vrrp_vty.c | 4 issues
===============================================
< WARNING: Missing a blank line after declarations
< #218: FILE: /tmp/f1-10878/vrrp_vty.c:218:
< WARNING: Missing a blank line after declarations
< #246: FILE: /tmp/f1-10878/vrrp_vty.c:246:
Report for vtysh_config.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #316: FILE: /tmp/f1-10878/vtysh_config.c:316:
Report for zapi_msg.c | 4 issues
===============================================
< WARNING: Missing a blank line after declarations
< #2314: FILE: /tmp/f1-10878/zapi_msg.c:2314:
< WARNING: void function return statements are not generally useful
< #2538: FILE: /tmp/f1-10878/zapi_msg.c:2538:
Report for zebra_errors.c | 4 issues
===============================================
< WARNING: line over 80 characters
< #323: FILE: /tmp/f1-10878/zebra_errors.c:323:
< WARNING: line over 80 characters
< #613: FILE: /tmp/f1-10878/zebra_errors.c:613:
Report for zebra_mlag.c | 10 issues
===============================================
< WARNING: line over 80 characters
< #960: FILE: /tmp/f1-10878/zebra_mlag.c:960:
< WARNING: line over 80 characters
< #979: FILE: /tmp/f1-10878/zebra_mlag.c:979:
< WARNING: line over 80 characters
< #1053: FILE: /tmp/f1-10878/zebra_mlag.c:1053:
< WARNING: line over 80 characters
< #1092: FILE: /tmp/f1-10878/zebra_mlag.c:1092:
< WARNING: line over 80 characters
< #1128: FILE: /tmp/f1-10878/zebra_mlag.c:1128:
Report for zebra_mlag.h | 6 issues
===============================================
< WARNING: function definition argument 'ZAPI_HANDLER_ARGS' should also have an identifier name
< #60: FILE: /tmp/f1-10878/zebra_mlag.h:60:
< WARNING: function definition argument 'ZAPI_HANDLER_ARGS' should also have an identifier name
< #61: FILE: /tmp/f1-10878/zebra_mlag.h:61:
< WARNING: function definition argument 'ZAPI_HANDLER_ARGS' should also have an identifier name
< #62: FILE: /tmp/f1-10878/zebra_mlag.h:62:
Report for zebra_vty.c | 8 issues
===============================================
< WARNING: unnecessary whitespace before a quoted newline
< #1839: FILE: /tmp/f1-10878/zebra_vty.c:1839:
< WARNING: line over 80 characters
< #1964: FILE: /tmp/f1-10878/zebra_vty.c:1964:
< WARNING: line over 80 characters
< #1968: FILE: /tmp/f1-10878/zebra_vty.c:1968:
< WARNING: line over 80 characters
< #1993: FILE: /tmp/f1-10878/zebra_vty.c:1993:

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10493/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-365-gb3c5aaad0-0 (missing) -> 7.3-dev-20200120-365-gb3c5aaad0-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-365-gb3c5aaad0-0 (missing) -> 7.3-dev-20200120-365-gb3c5aaad0-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-365-gb3c5aaad0-0 (missing) -> 7.3-dev-20200120-365-gb3c5aaad0-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-365-gb3c5aaad0-0 (missing) -> 7.3-dev-20200120-365-gb3c5aaad0-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.3-dev-20200120-365-gb3c5aaad0-0 (missing) -> 7.3-dev-20200120-365-gb3c5aaad0-0~deb10u1
<TITLE>clang_check</TITLE>

clang_check

@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-10495/

This is a comment from an 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 5578, comparing to Git base SHA 7d75ef8

No Changes in Static Analysis warnings compared to base

1 Static Analyzer issues remaining.

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

@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-10497/

This is a comment from an 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 5578, comparing to Git base SHA 7d75ef8

No Changes in Static Analysis warnings compared to base

1 Static Analyzer issues remaining.

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

@Spantik
Copy link
Member Author

Spantik commented Jan 30, 2020

Example of mandatory composite keys and xpath creation.

nexthop_key_exmaple.pdf

@chiragshah6
Copy link
Member

@qlyoung @mjstapp @sworleys Thanks a lot for review. I think most of the operational things in yang is present as we kept them untouched from previous data model. I completely agree that operational attributes are not required here. About Ids for nexthop is something required as yang does not support optional keys. As request last week I am coming up with draft which explains the same. We can discuss in today's call.

@Spantik zebra operational rib model PR 5533 uses frr-nexthop model to display operational state data. I think shell we keep some of the informative fields as config false?

Current zebra learned route json output. For yang state data let us decide which fields do we really want to display.

    {
      "prefix":"36.0.0.11\/32",
      "protocol":"bgp",
      "selected":true,
      "distance":20,
      "metric":0,
      "uptime":"00:01:53",
      "nexthops":[
        {
          "fib":true,
          "ip":"fe80::202:ff:fe00:1a",
          "afi":"ipv6",
          "interfaceIndex":132,
          "interfaceName":"uplink-1",
          "active":true
        },
        {
          "fib":true,
          "ip":"fe80::202:ff:fe00:26",
          "afi":"ipv6",
          "interfaceIndex":133,
          "interfaceName":"uplink-2",
          "active":true
        }
      ]
    }
  ],

@Spantik
Copy link
Member Author

Spantik commented Jan 31, 2020

@qlyoung @mjstapp @sworleys Thanks a lot for review. I think most of the operational things in yang is present as we kept them untouched from previous data model. I completely agree that operational attributes are not required here. About Ids for nexthop is something required as yang does not support optional keys. As request last week I am coming up with draft which explains the same. We can discuss in today's call.

@Spantik zebra operational rib model PR 5533 uses frr-nexthop model to display operational state data. I think shell we keep some of the informative fields as config false?

Current zebra learned route json output. For yang state data let us decide which fields do we really want to display.

    {
      "prefix":"36.0.0.11\/32",
      "protocol":"bgp",
      "selected":true,
      "distance":20,
      "metric":0,
      "uptime":"00:01:53",
      "nexthops":[
        {
          "fib":true,
          "ip":"fe80::202:ff:fe00:1a",
          "afi":"ipv6",
          "interfaceIndex":132,
          "interfaceName":"uplink-1",
          "active":true
        },
        {
          "fib":true,
          "ip":"fe80::202:ff:fe00:26",
          "afi":"ipv6",
          "interfaceIndex":133,
          "interfaceName":"uplink-2",
          "active":true
        }
      ]
    }
  ],

In last two meetings we decided to keep operational nexthop separate from that of configuration. We will soon come up with PR for operational.

@Spantik
Copy link
Member Author

Spantik commented Feb 5, 2020

After all comments addressed. Tree for nexthop group.

Screenshot 2020-02-05 at 6 32 35 PM

@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-10632/

This is a comment from an 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:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10632/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200205-01-gedd3cddf7-0 (missing) -> 7.4-dev-20200205-01-gedd3cddf7-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200205-01-gedd3cddf7-0 (missing) -> 7.4-dev-20200205-01-gedd3cddf7-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200205-01-gedd3cddf7-0 (missing) -> 7.4-dev-20200205-01-gedd3cddf7-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200205-01-gedd3cddf7-0 (missing) -> 7.4-dev-20200205-01-gedd3cddf7-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200205-01-gedd3cddf7-0 (missing) -> 7.4-dev-20200205-01-gedd3cddf7-0~deb10u1

@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-10658/

This is a comment from an 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:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10658/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200207-00-g331f976e3-0 (missing) -> 7.4-dev-20200207-00-g331f976e3-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200207-00-g331f976e3-0 (missing) -> 7.4-dev-20200207-00-g331f976e3-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200207-00-g331f976e3-0 (missing) -> 7.4-dev-20200207-00-g331f976e3-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200207-00-g331f976e3-0 (missing) -> 7.4-dev-20200207-00-g331f976e3-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200207-00-g331f976e3-0 (missing) -> 7.4-dev-20200207-00-g331f976e3-0~deb10u1

@Spantik
Copy link
Member Author

Spantik commented Feb 7, 2020

Updated Yang with operational grouping ( grouping frr-nexthop-operational) which will be used in zebra operational model. I have added only those flags which are available in nexthop structure today. Please let me know if we need more attributes under operational.

@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-10663/

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

type inet:ip-address;
type string {
pattern
' ';
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't this be completely empty?

Copy link
Member Author

Choose a reason for hiding this comment

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

were experimenting with pattern and kept one space. We can keep it empty and will update it.

Copy link
Member Author

Choose a reason for hiding this comment

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

@qlyoung done I have updated it.

A common nexthop and group nexthop yang data model
for all protocols in FRR.

Co-authored-by: Santosh P K <sapk@vmware.com>
Co-authored-by: Vishaldhingra <vdhingra@vmware.com>
Signed-off-by: Santosh P K <sapk@vmware.com>
@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-10672/

This is a comment from an 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:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-10672/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: pkg-js-tools-test-is-missing
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200210-00-ga530bfe11-0 (missing) -> 7.4-dev-20200210-00-ga530bfe11-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200210-00-ga530bfe11-0 (missing) -> 7.4-dev-20200210-00-ga530bfe11-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200210-00-ga530bfe11-0 (missing) -> 7.4-dev-20200210-00-ga530bfe11-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200210-00-ga530bfe11-0 (missing) -> 7.4-dev-20200210-00-ga530bfe11-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.4-dev-20200210-00-ga530bfe11-0 (missing) -> 7.4-dev-20200210-00-ga530bfe11-0~deb10u1

Copy link
Member

@chiragshah6 chiragshah6 left a comment

Choose a reason for hiding this comment

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

overall changes look good. Need to check operational data based on daemons requirements (zebra etc.)

@qlyoung qlyoung merged commit db727fe into FRRouting:nb_conversions Feb 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants