-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
ospf6d: virtual link support #9293
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution to FRR!
- One of your commits has a missing or badly formatted
Signed-off-by
line; we can't accept your contribution until all of your commits have one
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: FailedCheckout code: Failed (click for details)PullReq merge failed. Please rebase your branch: |
This is a DRAFT. I'm aware it fails things, has conflicts and formatting issues. It's posted publicly for visiblity and to avoid duplicate work. |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
I wonder if there's any possibility to reuse some code from ospfd... It's sad to see all those features be implemented in a slightly different way in two daemons when actually it may be almost the same codebase. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution to FRR!
- One of your commits has a missing or badly formatted
Signed-off-by
line; we can't accept your contribution until all of your commits have one - One of your commits does not have a blank line between the summary and body; this will break
git log --oneline
Style checking failed; check logs
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: FailedCheckout code: Failed (click for details)PullReq merge failed. Please rebase your branch: |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution to FRR!
- One of your commits has a missing or badly formatted
Signed-off-by
line; we can't accept your contribution until all of your commits have one - One of your commits does not have a blank line between the summary and body; this will break
git log --oneline
Style checking failed; check logs
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: FailedCheckout code: Failed (click for details)PullReq merge failed. Please rebase your branch: |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: FailedCheckout code: Failed (click for details)PullReq merge failed. Please rebase your branch: |
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: FailedCheckout code: Failed (click for details)PullReq merge failed. Please rebase your branch: |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
Continuous Integration Result: SUCCESSFULContinuous Integration Result: SUCCESSFULCongratulations, this patch passed basic tests Tested-by: NetDEF / OpenSourceRouting.org CI System CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-21425/ This is a comment from an automated CI system. Warnings Generated during build:Checkout code: Successful with additional warnings
CLANG Static Analyzer Summary
1 Static Analyzer issues remaining.See details at |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
ospf6d/ospf6_vlink.c
Outdated
* on this interface (which would just wreak havoc.) With an empty | ||
* interface name, the CLI can't invoke "interface XYZ" commands. | ||
*/ | ||
ifp = if_create_name("", o->vrf_id); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI: if_create_name
is not a public function anymore, you should use if_get_by_name
instead.
And also a note regarding the empty interface name. The interface name space is global for VRF-lite backend, so having this single name for all OSPF6 instances is not a robust solution. It works now because of the way we store interfaces in the lib, but I don't think we should rely on that. I think it's better to use something like ospf6-vlink-vrf-name
to ensure that the we have unique interface name in each VRF, and add a check on NB validation stage to forbid configuration of interfaces with names starting with ospf6-vlink
.
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
This function is not implemented anywhere. Not sure it ever existed. Signed-off-by: David Lamparter <[email protected]>
Both for virtual links and correct PtMP operation, advertising local addresses as Intra-Prefix with LA set is a prerequisite. Add the appropriate entries. Signed-off-by: David Lamparter <[email protected]>
For PtMP the cost may need to be recalculated when the LL addr changes (since neighbors are configured by LL addr and a different entry with a different cost may match.) Signed-off-by: David Lamparter <[email protected]>
Add a list of configured neighbors for each interface. Only stores cost (and "existence") for now. Signed-off-by: David Lamparter <[email protected]>
This adds a knob to refuse forming adjacencies with neighbors not listed in the config. Only works on PtP/PtMP of course, otherwise the DR/BDR machinery gets broken. Signed-off-by: David Lamparter <[email protected]>
With the configured neighbor list, unicast hellos can be sent. Allow disabling multicast hellos for that scenario. Signed-off-by: David Lamparter <[email protected]>
Some lower layers still don't handle multicast correctly (or efficiently.) Add option to send unicast hellos on explicitly configured neighbors for PtP/PtMP. Signed-off-by: David Lamparter <[email protected]>
This adds the PtMP interface type, which is effectively identical to PtP except that all the database flooding & updates are unicast. Signed-off-by: David Lamparter <[email protected]>
To announce connected prefixes, or not to announce connected prefixes, that is the question... Signed-off-by: David Lamparter <[email protected]>
Update & add docs for all the stuff in the previous 10-ish commits. Signed-off-by: David Lamparter <[email protected]>
The RB-tree of interfaces only contains interfaces that have a non-empty name. Don't try to remove an interface whose name is empty and which was therefore never added to the tree. Signed-off-by: David Lamparter <[email protected]>
To support virtual links, it makes sense to put a dummy interface into the backbone area, which virtual links are neighbors on. That interface shouldn't ever have its various LSDBs used for anything, so the "basic" create/delete added here doesn't create them.
The dummy interface for virtual link support has an empty interface name ("", not null pointer), which can be confusing when printed. Create an `ospf6_ifname()` helper for JSON output and a `%pOI` printfrr modifier for logging/CLI. (Latter also shortens some code a bit.)
Need to access this to find a LA for virtual links if there is none otherwise, so split the filtering into its own function. Also gets rid of a bunch of weird one-use macros while at it.
A connected prefix with a /128 prefix length is... *drumroll* ... a local address. Flag it as such so it can be used for virtual links.
Need to insert virtual link handling inbetween this, so make the second half its own independent function.
Passed preliminary testing, but still somewhat experimental.
f9886e1
to
45c4422
Compare
Continuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: SuccessfulBuilding Stage: SuccessfulBasic Tests: FailedTopotests Ubuntu 18.04 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18AMD64-9630/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9 Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-9630/test Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9 Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details)Topotests Ubuntu 18.04 arm8 part 9: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-9630/artifact/TOPO9U18ARM8/TopotestDetails/ Topotests Ubuntu 18.04 arm8 part 9: No useful log foundTopotests debian 10 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9DEB10AMD64-9630/test Topology Tests failed for Topotests debian 10 amd64 part 9 Successful on other platforms/tests
Warnings Generated during build:Checkout code: Successful with additional warningsTopotests Ubuntu 18.04 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18AMD64-9630/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9 Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-9630/test Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9 Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details)Topotests Ubuntu 18.04 arm8 part 9: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-9630/artifact/TOPO9U18ARM8/TopotestDetails/ Topotests Ubuntu 18.04 arm8 part 9: No useful log foundTopotests debian 10 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9DEB10AMD64-9630/test Topology Tests failed for Topotests debian 10 amd64 part 9
CLANG Static Analyzer Summary
1 Static Analyzer issues remaining.See details at |
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
WORK IN PROGRESS
Posting this as a draft PR so people are aware of it & we don't waste time if anyone else works on OSPFv3 virtual links.
This passes preliminary testing, but still has a bunch of rough edges. Also, no docs and tests yet. It'll be a bit until those come due to priorities being this way :(
NB: this is based on top of the PtMP draft (#9198) since some of the changes are related.