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
netlink
library, 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 macsec
command.Changes
Macsec
struct to represent MACsec link devices.LinkAddMacsec
to create MACsec links with attributes like SCI, cipher suite, and replay protection.MacsecAddTxSA
,MacsecAddRxSC
, andMacsecAddRxSA
to configure transmit/receive SAs and SCs.IFLA_MACSEC_*
,MACSEC_SA_ATTR_*
,MACSEC_RXSC_ATTR_*
) based onlinux/if_macsec.h
.TestMacsecAdd
inmacsec_test.go
to verify MACsec link creation, SA, and SC configuration (requires root and kernel 4.6+).TestMacsecAttributesSerialize
to validate Netlink attribute serialization.req.Serialize
and 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: