-
Notifications
You must be signed in to change notification settings - Fork 194
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 support for VXLAN tunnels (LP: #1764716) #288
Conversation
00990fb
to
4316e9b
Compare
7bafdf6
to
1b2916b
Compare
I think this is shaping up nicely for review now. @netdever may I ask for your review, please, as you have been the original author of this work, especially if the I've mostly rebased it on top of the new |
Awesome work! We're very excited for this. One quick note that at least in your example yml above, the /etc/netplan/50-cloud-init.yaml:57:13: Error in network definition: vx1: missing 'mode' property for tunnel
id: 1 Regarding [Bridge]
NeighborSuppression=True I initially handled this with: if (def->neigh_suppress) {
g_string_append_printf(network, "\n[Bridge]\n");
g_string_append_printf(network, "NeighborSuppression=%s\n", def->neigh_suppress ? "True" : "False");
} |
1b2916b
to
c29c29f
Compare
Thanks for your feedback @netdever I think I've now fixed both comments: |
I have verified that
|
c29c29f
to
c0eccc1
Compare
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.
Solid work!
I have a few nitpicks here and there, and I'd really like to see the ABI question addressed before approving this PR. ("addressed" can very well be "not a problem, moving on", of course ;-) )
V2: optimize using g_hash_table_lookup_extended()
V2: constant array size, using NETPLAN_INFINIBAND_MODE_MAX_
c0eccc1
to
23b2bc0
Compare
Thank you for the quality review! |
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.
Sadly, there's an issue with the bitfield name macro that needs to be solved before merging :/
V2: tightly pack flag names arrays & loop through them incrementally V3: improve NAME_FUNCTION_FLAGS input validation flags fixup
V2: + handle VXLAN postprocessing (assignment of implicit values) at the end of the parsing stage, instead in validation statge + use NetplanVxlan private struct, independently of the legacy ABI Co-authored-by: Lukas Märdian <slyon@ubuntu.com>
V2: use NetplanVxlan private struct, independently of the legacy ABI Co-authored-by: Lukas Märdian <slyon@ubuntu.com>
V2: use NetplanVxlan private struct, independently of the legacy ABI
Co-authored-by: Anthony Timmins <atimmins@datto.com>
Co-authored-by: Anthony Timmins <atimmins@datto.com>
23b2bc0
to
72774d8
Compare
TA! I updated 055a6e0 (V3), added 72774d8 and ae582f2 My initial idea was to use Could you have another look, especially about the dirty tracking in |
Thinking about it... dirty tracking doesn't make too much sense for the |
Considering that the point of the dirty tracking is to be able to differentiate between default value and user input that happens to be the same as the default, the mechanism wouldn't work when said value is Furthermore, does it actually make sense to have a vxlan entry without upstream link? |
Yes, there is a concept of "Independent" VXLAN interfaces: https://systemd.network/systemd.netdev.html#Independent= |
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.
LGTM :)
I'd say leave the dirty tracking in place. While I think it isn't used (yet?), it doesn't hurt either and has the merits of being consistent with other data. |
Description
Adding support for VXLAN tunnels using the sd-networkd and NetworkManager backends.
It builds upon #272 (squashed & rebased), extracted VXLAN bits. Applied on top of #285.
Schema according to (internal) spec FO042.
The first 3 commits e83ea89 6d3597e 02c4f00 are pretty much unrelated to this PR. Those are drive-by fixes that I had been tracking in a separate branch, but the diff is fairly small, so I thought it'd make sense to include them into this PR instead of doing an extra one just for this.
Example:
Checklist
make check
successfully.make check-coverage
).