Add MACsec support and fix test failures (#322) #1075
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add MACsec Support and Fix Test Failures (#322)
This pull request implements MACsec (Media Access Control Security) support for the
netlinklibrary, addressing issue #322. The changes enable the creation and configuration of MACsec links, transmit and receive secure associations (SA), and receive secure channels (SC), aligning with the Linux kernel's MACsec driver and theip macseccommand.Changes
Macsecstruct to represent MACsec link devices.LinkAddMacsecto create MACsec links with attributes like SCI, cipher suite, and replay protection.MacsecAddTxSA,MacsecAddRxSC, andMacsecAddRxSAto configure transmit/receive SAs and SCs.IFLA_MACSEC_*,MACSEC_SA_ATTR_*,MACSEC_RXSC_ATTR_*) based onlinux/if_macsec.h.TestMacsecAddinmacsec_test.goto verify MACsec link creation, SA, and SC configuration (requires root and kernel 4.6+).TestMacsecAttributesSerializeto validate Netlink attribute serialization.req.Serializeand attribute nesting.RtAttr.Serialize()for nested attributes.Testing
Unit Tests: Verified with
go test -v ./...Manual Verification: Confirmed functionality with
ip macsec show, producing expected output: