Skip to content

Commit 8baf7b0

Browse files
chengzhycnaboch
authored andcommitted
add support for skbedit mask
1 parent 337a587 commit 8baf7b0

File tree

4 files changed

+14
-1
lines changed

4 files changed

+14
-1
lines changed

filter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ type SkbEditAction struct {
275275
PType *uint16
276276
Priority *uint32
277277
Mark *uint32
278+
Mask *uint32
278279
}
279280

280281
func (action *SkbEditAction) Type() string {

filter_linux.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,9 @@ func EncodeActions(attr *nl.RtAttr, actions []Action) error {
597597
if action.Mark != nil {
598598
aopts.AddRtAttr(nl.TCA_SKBEDIT_MARK, nl.Uint32Attr(*action.Mark))
599599
}
600+
if action.Mask != nil {
601+
aopts.AddRtAttr(nl.TCA_SKBEDIT_MASK, nl.Uint32Attr(*action.Mask))
602+
}
600603
case *ConnmarkAction:
601604
table := attr.AddRtAttr(tabIndex, nil)
602605
tabIndex++
@@ -739,6 +742,9 @@ func parseActions(tables []syscall.NetlinkRouteAttr) ([]Action, error) {
739742
case nl.TCA_SKBEDIT_MARK:
740743
mark := native.Uint32(adatum.Value[0:4])
741744
action.(*SkbEditAction).Mark = &mark
745+
case nl.TCA_SKBEDIT_MASK:
746+
mask := native.Uint32(adatum.Value[0:4])
747+
action.(*SkbEditAction).Mask = &mask
742748
case nl.TCA_SKBEDIT_PRIORITY:
743749
priority := native.Uint32(adatum.Value[0:4])
744750
action.(*SkbEditAction).Priority = &priority

filter_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,6 +1327,8 @@ func TestFilterU32SkbEditAddDel(t *testing.T) {
13271327
skbedit.Priority = &priority
13281328
mark := uint32(0xfe)
13291329
skbedit.Mark = &mark
1330+
mask := uint32(0xff)
1331+
skbedit.Mask = &mask
13301332
mapping := uint16(0xf)
13311333
skbedit.QueueMapping = &mapping
13321334

@@ -1395,6 +1397,9 @@ func TestFilterU32SkbEditAddDel(t *testing.T) {
13951397
if edit.Mark == nil || *edit.Mark != *skbedit.Mark {
13961398
t.Fatal("Action Mark doesn't match")
13971399
}
1400+
if edit.Mask == nil || *edit.Mask != *skbedit.Mask {
1401+
t.Fatal("Action Mask doesn't match")
1402+
}
13981403
if edit.Priority == nil || *edit.Priority != *skbedit.Priority {
13991404
t.Fatal("Action Priority doesn't match")
14001405
}

nl/tc_linux.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,8 @@ const (
804804
TCA_SKBEDIT_MARK
805805
TCA_SKBEDIT_PAD
806806
TCA_SKBEDIT_PTYPE
807-
TCA_SKBEDIT_MAX = TCA_SKBEDIT_MARK
807+
TCA_SKBEDIT_MASK
808+
TCA_SKBEDIT_MAX
808809
)
809810

810811
type TcSkbEdit struct {

0 commit comments

Comments
 (0)