Revision 3a93b00269b1fb762b2c9f98ab67a6ed3a333dda authored by Gray Liang on 23 October 2023, 03:13:25 UTC, committed by Julian Wiedmann on 01 December 2023, 16:20:14 UTC
Previously we set skb->mark in from_host@cilium_host, expect the mark to remain unchanged after kernel transmits skb from cilium_host to cilium_net. The skb->mark is for instance used to transport IPsec-related information. However, as of 2023-10-19, kernel 5.10 still misses the backport patch[1] to fix a bug in skb_scrub_packet() which clears skb->mark for veth_xmit even if the veth pair is under the same netns: https://elixir.bootlin.com/linux/v5.10.198/source/include/linux/netdevice.h#L3975 To avoid hitting this issue, this patch sets metadata in skb->cb to survive skb_scrub_packet(), then to_host@cilium_net can retrieve this info and set proper mark. Only from_host bpf is setting cb, while from_lxc bpf is still using mark. [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ff70202b2d1a ("dev_forward_skb: do not scrub skb mark within the same name space") Signed-off-by: Zhichuan Liang <gray.liang@isovalent.com>
1 parent e78ff16
.clang-format
# Configuration file for clang-format.
# Intended for clang-format >= 15.
#
# The list and meaning of the options is available at:
#
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
---
# BasedOnStyle # No base style in use
# AccessModifierOffset # We don't use access modifiers
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Left
AlignConsecutiveAssignments: false
AlignConsecutiveBitFields:
Enabled: true
AcrossEmptyLines: true
AcrossComments: true
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros:
Enabled: true
AcrossEmptyLines: true
AcrossComments: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
# AllowAllConstructorInitializersOnNextLine # Deprecated
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
# AllowShortLambdasOnASingleLine # We don't use lambdas
AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType # Deprecated
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
# AlwaysBreakTemplateDeclarations # We don't use templates
# AttributeMacros # Unused at this time
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: None
BraceWrapping:
AfterCaseLabel: true
# AfterClass # We don't use classes
AfterControlStatement: Never
AfterEnum: false
AfterFunction: true
# AfterNamespace # We don't use namespaces
# AfterObjCDeclaration # We don't use ObjC
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
# BeforeCatch # We don't use try/catch
BeforeElse: false
# BeforeLambdaBody # We don't use lambdas
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
# SplitEmptyNamespace # We don't use namespaces
# BreakAfterJavaFieldAnnotations # We don't use Java
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
# BreakBeforeConceptDeclarations # We don't use concepts
BreakBeforeTernaryOperators: false
# BreakConstructorInitializers # We don't use constructors
# BreakInheritanceList # We don't use inheritance
BreakStringLiterals: false
ColumnLimit: 80
# CommentPragmas # Unused at this time
# CompactNamespaces # We don't use namespaces
# ConstructorInitializerAllOnOneLineOrOnePerLine # Deprecated
# ConstructorInitializerIndentWidth # We don't use constructors
ContinuationIndentWidth: 8
Cpp11BracedListStyle: false
# DeriveLineEnding # Deprecated
DerivePointerAlignment: false
DisableFormat: false
# EmptyLineAfterAccessModifier # We don't use access modifiers
# EmptyLineBeforeAccessModifier # We don't use access modifiers
# ExperimentalAutoDetectBinPacking # Experimental, "Use at your own risk"
# FixNamespaceComments # We don't use namespaces
# ForEachMacros # Unused at this time
# IfMacros # Unused at this time
IncludeBlocks: Preserve
# IncludeCategories # Unused at this time
# IncludeIsMainRegex # Unused at this time
# IncludeIsMainSourceRegex # Unused at this time
# IndentAccessModifiers # We don't use access modifiers
IndentCaseBlocks: false
IndentCaseLabels: false
# IndentExternBlock # We don't use extern blocks
IndentGotoLabels: false
IndentPPDirectives: AfterHash
# IndentRequiresClause # We don't use equire clauses
IndentWidth: 8
IndentWrappedFunctionNames: false
InsertBraces: false
# InsertTrailingCommas # We don't use JavaScript
# JavaImportGroups # We don't use Java
# JavaScriptQuotes # We don't use JavaScript
# JavaScriptWrapImports # We don't use JavaScript
KeepEmptyLinesAtTheStartOfBlocks: false
# LambdaBodyIndentation # We don't use lambdas
Language: Cpp
# MacroBlockBegin # Unused at this time
# MacroBlockEnd # Unused at this time
MaxEmptyLinesToKeep: 1
# NamespaceIndentation # We don't use namespaces
# NamespaceMacros # We don't use namespaces
# ObjCBinPackProtocolList # We don't use ObjC
# ObjCBlockIndentWidth # We don't use ObjC
# ObjCBreakBeforeNestedBlockParam # We don't use ObjC
# ObjCSpaceAfterProperty # We don't use ObjC
# ObjCSpaceBeforeProtocolList # We don't use ObjC
PPIndentWidth: 1
# PackConstructorInitializers # We don't use constructors
# Penalties decide in what order (weighting) things should be done if a line is
# too long: 100 = try everything else before this.
# See https://stackoverflow.com/a/46749925
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 0
PenaltyBreakComment: 0
PenaltyBreakFirstLessLess: 0
PenaltyBreakOpenParenthesis: 100
PenaltyBreakString: 10
# PenaltyBreakTemplateDeclaration # We don't use templates
PenaltyExcessCharacter: 100
PenaltyIndentedWhitespace: 100
PenaltyReturnTypeOnItsOwnLine: 100
PointerAlignment: Right
QualifierAlignment: Leave
# QualifierOrder # Unused at this time
# RawStringFormats # Unused at this time
# ReferenceAlignment # We don't use references
ReflowComments: false
RemoveBracesLLVM: false
# RequiresClausePosition # We don't use require clauses
SeparateDefinitionBlocks: Leave
# ShortNamespaceLines # We don't use namespaces
SortIncludes: Never
# SortJavaStaticImport # We don't use Java
# SortUsingDeclarations # We don't use using declarations
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword # We don't use templates
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
# SpaceBeforeCpp11BracedList # We don't use C++11 braced lists to initialize objects
# SpaceBeforeCtorInitializerColon # We don't use constructors
# SpaceBeforeInheritanceColon # We don't use inheritance
SpaceBeforeParens: ControlStatements
# SpaceBeforeParensOptions # No need for custom SpaceBeforeParens options
# SpaceBeforeRangeBasedForLoopColon # We don't use range-based for loops
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
# SpacesInAngles # We don't use templates
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: 1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: C++03
# StatementAttributeLikeMacros # Unused at this time
# StatementMacros # Unused at this time
TabWidth: 8
# TypenameMacros # Unused at this time
# UseCRLF # Deprecated
UseTab: Always
# WhitespaceSensitiveMacros # Unused at this time
...
Computing file changes ...