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

add mpls auto mode to update mpls control upon routing events #13965

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

pguibert6WIND
Copy link
Member

The yang NB API does not handle the mpls configuration on its leaf.
Add an mpls leaf to stick to the mpls configuration.

  • true or false to mean if config
  • not defined, means no config.

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Jul 9, 2023

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

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

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: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 amd64 part 1: Failed (click for details) Topotests Ubuntu 18.04 amd64 part 1: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12820/artifact/TP1U1804AMD64/TopotestDetails/

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP1U1804AMD64-12820/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-12820/artifact/TP1U1804AMD64/TopotestLogs/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 8: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 8: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12820/artifact/TOPO8U18AMD64/TopotestDetails/ Topotests Ubuntu 18.04 arm8 part 8: No useful log found
Successful on other platforms/tests
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Static analyzer (clang)
  • Topotests debian 10 amd64 part 2
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 arm8 part 0
  • Debian 9 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests Ubuntu 18.04 arm8 part 5
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests Ubuntu 18.04 amd64 part 9
  • Ubuntu 20.04 deb pkg check
  • Ubuntu 18.04 deb pkg check
  • Debian 10 deb pkg check
  • Addresssanitizer topotests part 6
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests debian 10 amd64 part 1
  • Addresssanitizer topotests part 4
  • Topotests debian 10 amd64 part 3
  • Addresssanitizer topotests part 0
  • Topotests debian 10 amd64 part 4
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests debian 10 amd64 part 5
  • Topotests debian 10 amd64 part 0
  • Addresssanitizer topotests part 9
  • Topotests Ubuntu 18.04 i386 part 6
  • Topotests Ubuntu 18.04 arm8 part 7
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 7
  • Topotests debian 10 amd64 part 6
  • Topotests Ubuntu 18.04 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 6
  • Topotests Ubuntu 18.04 i386 part 7
  • Topotests Ubuntu 18.04 arm8 part 1
  • Addresssanitizer topotests part 3
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests Ubuntu 18.04 i386 part 3
  • Topotests Ubuntu 18.04 i386 part 0
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests debian 10 amd64 part 8
  • CentOS 7 rpm pkg check
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 arm8 part 9
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests Ubuntu 18.04 amd64 part 0

NB_OP_CREATE, "true");
else
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/mpls",
NB_OP_DESTROY, "false");
Copy link
Member

Choose a reason for hiding this comment

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

I think "false" is not needed, since you call DESTROY, right?

Copy link
Member Author

Choose a reason for hiding this comment

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

done

int lib_interface_zebra_mpls_destroy(struct nb_cb_destroy_args *args)
{
struct interface *ifp;
struct zebra_if *if_data;
Copy link
Contributor

Choose a reason for hiding this comment

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

the convention is to call these pointers "zif"

Copy link
Member Author

Choose a reason for hiding this comment

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

done


if_data->mpls_config = IF_ZEBRA_DATA_UNSPEC;

dplane_intf_mpls_modify_state(ifp, false);
Copy link
Contributor

Choose a reason for hiding this comment

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

so ... this is sort of a problem we've had in this area. a 'destroy' should mean 'no configuration', but this looks like "configured to 'off'".

Copy link
Member Author

Choose a reason for hiding this comment

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

you are right. I added a commit to fix this issue.

@mjstapp
Copy link
Contributor

mjstapp commented Jul 10, 2023

I'm a little uncertain what this nb work means. Is this actually plumbed through zebra - many of the apis look to be stubs? There's no mgmtd connection, right? so ... who's talking to zebra to effect this mpls config change via the nb?

@pguibert6WIND
Copy link
Member Author

I'm a little uncertain what this nb work means. Is this actually plumbed through zebra - many of the apis look to be stubs? There's no mgmtd connection, right? so ... who's talking to zebra to effect this mpls config change via the nb?

The NB API is supposed to completely replace the 'struct interface' support, when it deals with configuration. So I guess this is where we have to go to, even if the path is not completely clear to me.
What I can say for instance is that this patch 26f8f6fe7fb9 should one day in the future removed, and we will only use the built yang tree to recover interfaces.

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Jul 13, 2023

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

Test incomplete. See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12908/

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: Successful

Basic Tests: Incomplete

Addresssanitizer topotests part 8: Incomplete (check logs for details)
Successful on other platforms/tests
  • Topotests debian 10 amd64 part 9
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 i386 part 7
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests debian 10 amd64 part 4
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests debian 10 amd64 part 3
  • Topotests debian 10 amd64 part 8
  • Addresssanitizer topotests part 0
  • Topotests Ubuntu 18.04 arm8 part 4
  • Ubuntu 20.04 deb pkg check
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 i386 part 6
  • Topotests Ubuntu 18.04 arm8 part 9
  • Debian 10 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 5
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 9
  • Topotests Ubuntu 18.04 i386 part 3
  • Topotests Ubuntu 18.04 arm8 part 7
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests Ubuntu 18.04 arm8 part 2
  • Addresssanitizer topotests part 3
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests debian 10 amd64 part 0
  • Addresssanitizer topotests part 7
  • Topotests Ubuntu 18.04 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 0
  • Addresssanitizer topotests part 6
  • Topotests Ubuntu 18.04 arm8 part 5
  • CentOS 7 rpm pkg check
  • Topotests debian 10 amd64 part 1
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 arm8 part 0
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests Ubuntu 18.04 amd64 part 0
  • Static analyzer (clang)
  • Topotests Ubuntu 18.04 i386 part 5
  • Ubuntu 18.04 deb pkg check
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Topotests Ubuntu 18.04 amd64 part 1
  • Topotests debian 10 amd64 part 6
  • Topotests Ubuntu 18.04 arm8 part 1
  • Topotests Ubuntu 18.04 arm8 part 6
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 8

@pguibert6WIND
Copy link
Member Author

ci:rerun

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Jul 13, 2023

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

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

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: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 amd64 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18AMD64-12920/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TOPO9U18AMD64/TopotestLogs/log_topotests.txt
Topotests Ubuntu 18.04 amd64 part 9: Unknown Log
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TOPO9U18AMD64/TopotestDetails/

Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-12920/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TOPO9U18I386/TopotestLogs/log_topotests.txt
Topotests Ubuntu 18.04 i386 part 9: Unknown Log
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TOPO9U18I386/TopotestDetails/

Topotests Ubuntu 18.04 amd64 part 1: Failed (click for details) Topotests Ubuntu 18.04 amd64 part 1: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TP1U1804AMD64/TopotestDetails/

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP1U1804AMD64-12920/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-12920/artifact/TP1U1804AMD64/TopotestLogs/log_topotests.txt

Successful on other platforms/tests
  • Topotests Ubuntu 18.04 amd64 part 2
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 i386 part 8
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 i386 part 3
  • Topotests debian 10 amd64 part 8
  • Addresssanitizer topotests part 0
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests debian 10 amd64 part 4
  • Topotests debian 10 amd64 part 3
  • Topotests Ubuntu 18.04 arm8 part 9
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests Ubuntu 18.04 amd64 part 3
  • Addresssanitizer topotests part 1
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 4
  • Topotests Ubuntu 18.04 amd64 part 8
  • Addresssanitizer topotests part 9
  • Static analyzer (clang)
  • Topotests Ubuntu 18.04 arm8 part 0
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 arm8 part 7
  • Debian 10 deb pkg check
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 7
  • Topotests Ubuntu 18.04 arm8 part 5
  • Topotests Ubuntu 18.04 i386 part 6
  • Topotests Ubuntu 18.04 amd64 part 5
  • Ubuntu 20.04 deb pkg check
  • Topotests debian 10 amd64 part 6
  • Topotests debian 10 amd64 part 1
  • Topotests Ubuntu 18.04 arm8 part 1
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests Ubuntu 18.04 i386 part 0
  • Addresssanitizer topotests part 3
  • Topotests Ubuntu 18.04 amd64 part 4
  • CentOS 7 rpm pkg check
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests debian 10 amd64 part 7
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 8
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 i386 part 7
  • Topotests Ubuntu 18.04 arm8 part 8
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests Ubuntu 18.04 arm8 part 6
  • Addresssanitizer topotests part 6
  • Ubuntu 18.04 deb pkg check

@pguibert6WIND
Copy link
Member Author

ci:rerun

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Jul 13, 2023

Continuous Integration Result: SUCCESSFUL

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-PULLREQ2-12923/

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.

Copy link
Member

@ton31337 ton31337 left a comment

Choose a reason for hiding this comment

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

Documentation is missing.

NO_STR
MPLS_STR
"Set mpls to be on for the interface\n")
DEFPY(mpls, mpls_cmd, "[no] mpls <enable|disable|auto>$state",
Copy link
Member

Choose a reason for hiding this comment

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

Please indent as others DEFPYs/DEFUNs.

Copy link
Member Author

Choose a reason for hiding this comment

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

done

@@ -26,6 +26,7 @@ extern "C" {
#define IF_ZEBRA_DATA_UNSPEC 0
#define IF_ZEBRA_DATA_ON 1
#define IF_ZEBRA_DATA_OFF 2
#define IF_ZEBRA_DATA_AUTO 3
Copy link
Member

Choose a reason for hiding this comment

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

Can we use the same spacing as above?

Copy link
Member Author

Choose a reason for hiding this comment

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

done

@pguibert6WIND
Copy link
Member Author

Documentation is missing.

done

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Jul 31, 2023

Continuous Integration Result: SUCCESSFUL

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-PULLREQ2-13207/

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.

@mjstapp
Copy link
Contributor

mjstapp commented Aug 1, 2023

whoa, whoa - the description here just talks about making a northbound/yang-model change, but there's a number of new pieces of dynamic logic that appears to be switching mpls forwarding on and off during rib and lsp processing. that needs to be, at a bare minimum, described clearly, and preferably be in a separate PR, separate from the mechanical yang-model changes.

@pguibert6WIND pguibert6WIND changed the title zebra, yang: add an mpls leaf to interface zebra, yang: add an mpls leaf to interface and add auto mode to update mpls control upon routing events Aug 1, 2023
@pguibert6WIND
Copy link
Member Author

whoa, whoa - the description here just talks about making a northbound/yang-model change, but there's a number of new pieces of dynamic logic that appears to be switching mpls forwarding on and off during rib and lsp processing. that needs to be, at a bare minimum, described clearly, and preferably be in a separate PR, separate from the mechanical yang-model changes.

You are right to mention two changes in a single PR. however, the auto mode does not take too much code. and it is a separate commit.
to get more clarity about b53fccf, I picked up routing events and upgraded the mpls control every time needed: route add, mpls add events.

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 4, 2023

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

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

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: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 9: No useful log found
Addresssanitizer topotests part 5: Failed (click for details)
## Error: SEGV

### AddressSanitizer error in topotest `test_bgp_multi_vrf_topo1.py`, test `teardown_module`, router `red1`

    ERROR: AddressSanitizer: SEGV on unknown address 0x000000000873 (pc 0x7fb47c9b3bb6 bp 0x7ffff55bbc90 sp 0x7ffff55bbc70 T0)
        #0 0x7fb47c9b3bb5 in graph_delete_node lib/graph.c:71
        #1 0x7fb47c9b3ec6 in graph_delete_graph lib/graph.c:26
        #2 0x7fb47c9740fb in cmd_terminate lib/command.c:2615
        #3 0x7fb47c9d1ac0 in frr_fini lib/libfrr.c:1230
        #4 0x557053fc33db in bgp_exit bgpd/bgp_main.c:252
        #5 0x557053fc33db in sigint bgpd/bgp_main.c:155
        #6 0x7fb47ca5ff44 in frr_sigevent_process lib/sigevent.c:115
        #7 0x7fb47ca8adbb in event_fetch lib/event.c:1761
        #8 0x7fb47c9d18d3 in frr_run lib/libfrr.c:1212
        #9 0x557053fc4ae5 in main bgpd/bgp_main.c:505
        #10 0x7fb47ba14c86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
        #11 0x557053fc2ce9 in _start (/usr/lib/frr/bgpd+0x2ccce9)
    
    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV lib/graph.c:71 in graph_delete_node

---------------

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-ASAN5-13312/test

Topology Tests failed for Addresssanitizer topotests part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-13312/artifact/ASAN5/TopotestLogs/log_topotests.txt
Addresssanitizer topotests part 5: Unknown Log
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-13312/artifact/ASAN5/TopotestDetails/

Successful on other platforms/tests
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests Ubuntu 18.04 i386 part 3
  • Topotests debian 10 amd64 part 8
  • Addresssanitizer topotests part 0
  • Debian 10 deb pkg check
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests debian 10 amd64 part 3
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests Ubuntu 18.04 arm8 part 3
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 4
  • Addresssanitizer topotests part 1
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 4
  • Topotests debian 10 amd64 part 4
  • Topotests Ubuntu 18.04 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 arm8 part 7
  • Addresssanitizer topotests part 7
  • Static analyzer (clang)
  • Topotests Ubuntu 18.04 amd64 part 5
  • Ubuntu 20.04 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 1
  • Topotests Ubuntu 18.04 i386 part 1
  • Topotests Ubuntu 18.04 arm8 part 5
  • Topotests Ubuntu 18.04 i386 part 6
  • Topotests Ubuntu 18.04 arm8 part 0
  • Topotests Ubuntu 18.04 arm8 part 6
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests debian 10 amd64 part 6
  • Topotests Ubuntu 18.04 arm8 part 1
  • Topotests Ubuntu 18.04 amd64 part 7
  • Addresssanitizer topotests part 2
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 2
  • Addresssanitizer topotests part 3
  • Topotests debian 10 amd64 part 5
  • Addresssanitizer topotests part 9
  • CentOS 7 rpm pkg check
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 amd64 part 3
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 i386 part 7
  • Topotests Ubuntu 18.04 arm8 part 8
  • Topotests Ubuntu 18.04 i386 part 2
  • Addresssanitizer topotests part 6
  • Topotests Ubuntu 18.04 amd64 part 1
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests Ubuntu 18.04 i386 part 0
  • Ubuntu 18.04 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests debian 10 amd64 part 7

@pguibert6WIND
Copy link
Member Author

ci:rerun

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 4, 2023

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

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

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: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-13319/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-13319/artifact/TOPO9U18I386/TopotestLogs/log_topotests.txt
Topotests Ubuntu 18.04 i386 part 9: Unknown Log
URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-13319/artifact/TOPO9U18I386/TopotestDetails/

Successful on other platforms/tests
  • Addresssanitizer topotests part 0
  • Topotests debian 10 amd64 part 8
  • Debian 10 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests debian 10 amd64 part 3
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests Ubuntu 18.04 arm8 part 9
  • Topotests Ubuntu 18.04 amd64 part 1
  • Ubuntu 18.04 deb pkg check
  • Ubuntu 20.04 deb pkg check
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 amd64 part 9
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 i386 part 3
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests debian 10 amd64 part 4
  • Addresssanitizer topotests part 7
  • Topotests Ubuntu 18.04 arm8 part 5
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests debian 10 amd64 part 1
  • Addresssanitizer topotests part 5
  • Static analyzer (clang)
  • Topotests Ubuntu 18.04 arm8 part 0
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 i386 part 1
  • Topotests Ubuntu 18.04 i386 part 6
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 6
  • Topotests Ubuntu 18.04 amd64 part 0
  • Addresssanitizer topotests part 3
  • Topotests debian 10 amd64 part 6
  • Topotests Ubuntu 18.04 arm8 part 1
  • Addresssanitizer topotests part 9
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 7
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests Ubuntu 18.04 i386 part 7
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests Ubuntu 18.04 arm8 part 8
  • CentOS 7 rpm pkg check
  • Addresssanitizer topotests part 6
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests debian 10 amd64 part 9
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 i386 part 0
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests Ubuntu 18.04 amd64 part 2

@pguibert6WIND pguibert6WIND force-pushed the mpls_yang branch 2 times, most recently from 779947b to c3dc82c Compare December 22, 2023 10:49
@pguibert6WIND
Copy link
Member Author

ci:rerun

@pguibert6WIND pguibert6WIND force-pushed the mpls_yang branch 2 times, most recently from 508f649 to 0d6c3cd Compare December 22, 2023 17:09
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

lib/ldp_sync.h Outdated
@@ -56,6 +56,11 @@ struct ldp_igp_sync_if_state {
bool sync_start;
};

struct ldp_igp_configure_if_mpls {
ifindex_t ifindex;
bool status;
Copy link
Member

Choose a reason for hiding this comment

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

if the status is enabled/disabled, then it's more clear it would be named bool enabled (IMO)... Because status could be more than enabled/disabled, right?

Copy link
Member Author

Choose a reason for hiding this comment

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

changed to enabled.

lib/zclient.c Outdated
ifindex_t ifindex, bool set)
{
struct stream *s;
int w;
Copy link
Member

Choose a reason for hiding this comment

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

Where do you use this except for +?

Copy link
Member Author

Choose a reason for hiding this comment

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

fixed. removed the w

pytest.skip(tgen.errors)

router = tgen.gears["r2"]
output = router.vtysh_cmd("config terminal\nmpls lsp 33 192.168.2.3 implicit-null")
Copy link
Member

Choose a reason for hiding this comment

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

you don't check/print the output of output, we can just remove this assignment...

Copy link
Member Author

Choose a reason for hiding this comment

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

fixed

"r2, configuring a route with labeled nexthop interface, checking that MPLS state is on on r2-eth0"
)
router = tgen.gears["r2"]
output = router.vtysh_cmd(
Copy link
Member

Choose a reason for hiding this comment

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

ditto

Copy link
Member Author

Choose a reason for hiding this comment

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

fixed

Copy link
Member Author

Choose a reason for hiding this comment

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

fixed

@@ -49,6 +49,10 @@ DEFINE_HOOK(zebra_if_config_wr, (struct vty * vty, struct interface *ifp),

DEFINE_MTYPE(ZEBRA, ZIF_DESC, "Intf desc");

FRR_CFG_DEFAULT_UINT8_T(ZEBRA_MPLS,
{ .val_uint8_t = IF_ZEBRA_DATA_AUTO},
Copy link
Member

Choose a reason for hiding this comment

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

styling: missing whitespace after AUTO:

{ .val_uint8_t = IF_ZEBRA_DATA_AUTO },

Copy link
Member Author

Choose a reason for hiding this comment

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

fixed.


if (!ifp)
return;
zif = ifp->info;
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 we check if zif is not NULL?

Copy link
Member Author

Choose a reason for hiding this comment

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

yes.done

@@ -116,6 +118,9 @@ struct zebra_if {
/* MPLS configuration */
uint8_t mpls_config;

/* MPLS dynamic configuration - when mpls_config is auto */
uint8_t mpls_dynamic;
Copy link
Member

Choose a reason for hiding this comment

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

What values can it have actually?

Copy link
Member Author

Choose a reason for hiding this comment

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

MPLS dynamic configuration - when mpls_config is auto
by default, set to IF_ZEBRA_DATA_UNSPEC
when used, acceptable values: IF_ZEBRA_DATA_ON or IF_ZEBRA_DATA_OFF

zebra/zapi_msg.c Show resolved Hide resolved
}

if (nlabel != MPLS_LABEL_NONE) {
mpls_label_t out_label = MPLS_LABEL_IMPLICIT_NULL;
mpls_lsp_install(def_zvrf, ltype, nlabel, 1, &out_label,
NEXTHOP_TYPE_IFINDEX, NULL, ifp->ifindex);
mpls_auto_interface_data_on(ifp);
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 turned on before installing MPLS LSP?

Copy link
Member Author

Choose a reason for hiding this comment

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

no, this should be turned on, only when used.
actually, setting the /proc/sys/net/mpls/input flag may have negative impact on kernel, when interface flapping happens, and when platform_auto value has huge value.
this method avoids generalising the usage of the input flag on every interface.

Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the conflicts label Mar 4, 2024
@pguibert6WIND pguibert6WIND force-pushed the mpls_yang branch 2 times, most recently from cd4ea1f to 6bb690a Compare March 11, 2024 16:26
@pguibert6WIND pguibert6WIND force-pushed the mpls_yang branch 2 times, most recently from e4dacef to 138acea Compare March 27, 2024 20:46
@pguibert6WIND pguibert6WIND force-pushed the mpls_yang branch 3 times, most recently from ee5e2a1 to fc5a397 Compare April 3, 2024 09:35
To support the various values of mpls configuration,
as the value is encoded in a 8 bits value, define
a new uint8_t type to record it.

Signed-off-by: Philippe Guibert <[email protected]>
Add 'mplsConfig' json option, that defines which MPLS
configuration is applied to a given interface.

> # show interface loop1 json
> {
>   "loop1":{
> [..]
>   "mplsConfig":"mplsEnabled",
>   "mplsEnabled":false,
> [..]

Signed-off-by: Philippe Guibert <[email protected]>
By default, MPLS configuration per interface is unspecified,
but can not be changed by compilation.
Add the framework to change the MPLS settings.

Signed-off-by: Philippe Guibert <[email protected]>
There is not auto mode for mpls settings, so that
when any labeled route or mpls entry is configured,
then the used interface should automatically turn
on its mpls settings.

Add the following per interface command:

> mpls auto

Change the yang model to replace the mpls boolean
value with an enumerate, which is mapped over the
data values declared under zebra/interface.h.

Signed-off-by: Philippe Guibert <[email protected]>
When a labeled route, or an MPLS entry is configured, the
interface may not have properly enabled the interface
with mpls.

When the interface is in mpls auto mode, change the mpls
interface value when a route or an mpls entry requests
it to be turned on.

Signed-off-by: Philippe Guibert <[email protected]>
There is no test that checks for the mpls auto mode
configuration.
New checks are added to the static mpls routing test:
- check that a labeled route turns on mpls on the interface
where the auto mode is set
- check that a configured interface recovers the mpls setting

Signed-off-by: Philippe Guibert <[email protected]>
When LDP is enabled per interface, MPLS is not turned on on each
of those interfaces.

Fix this by letting LDP configure the interface if the 'mpls auto'
mode is configured.

Create an IMSG to send interface config request from ldpe thread
to main thread of ldp.
Create a ZAPI message to set MPLS from ldp to zebra.
Update the MPLS setting.
Add a test that ensures that LDP properly configures the interface.

Signed-off-by: Philippe Guibert <[email protected]>
Change the default MPLS setting per interface to auto mode.

Signed-off-by: Philippe Guibert <[email protected]>
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.

5 participants