From 3d9b64dc8da3dc34fb1b3424f7dcb6e0525049d7 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 22 Jul 2025 15:58:29 +0200 Subject: [PATCH] Remove always-nil deserializeFouMsg error return value The error is always nil. Remove it to simplify the callers. --- fou_linux.go | 11 ++----- fou_test.go | 86 ++++++++++++++++++++++++---------------------------- 2 files changed, 42 insertions(+), 55 deletions(-) diff --git a/fou_linux.go b/fou_linux.go index 351d271..a303922 100644 --- a/fou_linux.go +++ b/fou_linux.go @@ -169,18 +169,13 @@ func (h *Handle) FouList(fam int) ([]Fou, error) { fous := make([]Fou, 0, len(msgs)) for _, m := range msgs { - f, err := deserializeFouMsg(m) - if err != nil { - return fous, err - } - - fous = append(fous, f) + fous = append(fous, deserializeFouMsg(m)) } return fous, executeErr } -func deserializeFouMsg(msg []byte) (Fou, error) { +func deserializeFouMsg(msg []byte) Fou { fou := Fou{} for attr := range nl.ParseAttributes(msg[4:]) { @@ -204,5 +199,5 @@ func deserializeFouMsg(msg []byte) (Fou, error) { } } - return fou, nil + return fou } diff --git a/fou_test.go b/fou_test.go index 9667fcd..7949556 100644 --- a/fou_test.go +++ b/fou_test.go @@ -13,71 +13,63 @@ func TestFouDeserializeMsg(t *testing.T) { // deserialize a valid message msg = []byte{3, 1, 0, 0, 5, 0, 2, 0, 2, 0, 0, 0, 6, 0, 1, 0, 21, 179, 0, 0, 5, 0, 3, 0, 4, 0, 0, 0, 5, 0, 4, 0, 1, 0, 0, 0} - if fou, err := deserializeFouMsg(msg); err != nil { - t.Error(err.Error()) - } else { + fou := deserializeFouMsg(msg) + // check if message was deserialized correctly + if fou.Family != FAMILY_V4 { + t.Errorf("expected family %d, got %d", FAMILY_V4, fou.Family) + } - // check if message was deserialized correctly - if fou.Family != FAMILY_V4 { - t.Errorf("expected family %d, got %d", FAMILY_V4, fou.Family) - } + if fou.Port != 5555 { + t.Errorf("expected port 5555, got %d", fou.Port) + } - if fou.Port != 5555 { - t.Errorf("expected port 5555, got %d", fou.Port) - } + if fou.Protocol != 4 { // ipip + t.Errorf("expected protocol 4, got %d", fou.Protocol) + } - if fou.Protocol != 4 { // ipip - t.Errorf("expected protocol 4, got %d", fou.Protocol) - } - - if fou.EncapType != FOU_ENCAP_DIRECT { - t.Errorf("expected encap type %d, got %d", FOU_ENCAP_DIRECT, fou.EncapType) - } + if fou.EncapType != FOU_ENCAP_DIRECT { + t.Errorf("expected encap type %d, got %d", FOU_ENCAP_DIRECT, fou.EncapType) } // deserialize a valid message(kernel >= 5.2) msg = []byte{3, 1, 0, 0, 5, 0, 2, 0, 2, 0, 0, 0, 6, 0, 1, 0, 43, 103, 0, 0, 6, 0, 10, 0, 86, 206, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 5, 0, 4, 0, 2, 0, 0, 0, 8, 0, 11, 0, 0, 0, 0, 0, 8, 0, 6, 0, 1, 2, 3, 4, 8, 0, 8, 0, 5, 6, 7, 8} - if fou, err := deserializeFouMsg(msg); err != nil { - t.Error(err.Error()) - } else { - if fou.Family != FAMILY_V4 { - t.Errorf("expected family %d, got %d", FAMILY_V4, fou.Family) - } + fou = deserializeFouMsg(msg) + if fou.Family != FAMILY_V4 { + t.Errorf("expected family %d, got %d", FAMILY_V4, fou.Family) + } - if fou.Port != 11111 { - t.Errorf("expected port 5555, got %d", fou.Port) - } + if fou.Port != 11111 { + t.Errorf("expected port 5555, got %d", fou.Port) + } - if fou.Protocol != 0 { // gue - t.Errorf("expected protocol 0, got %d", fou.Protocol) - } + if fou.Protocol != 0 { // gue + t.Errorf("expected protocol 0, got %d", fou.Protocol) + } - if fou.IfIndex != 0 { - t.Errorf("expected ifindex 0, got %d", fou.Protocol) - } + if fou.IfIndex != 0 { + t.Errorf("expected ifindex 0, got %d", fou.Protocol) + } - if fou.EncapType != FOU_ENCAP_GUE { - t.Errorf("expected encap type %d, got %d", FOU_ENCAP_GUE, fou.EncapType) - } + if fou.EncapType != FOU_ENCAP_GUE { + t.Errorf("expected encap type %d, got %d", FOU_ENCAP_GUE, fou.EncapType) + } - if expected := net.IPv4(1, 2, 3, 4); !fou.Local.Equal(expected) { - t.Errorf("expected local %v, got %v", expected, fou.Local) - } + if expected := net.IPv4(1, 2, 3, 4); !fou.Local.Equal(expected) { + t.Errorf("expected local %v, got %v", expected, fou.Local) + } - if expected := net.IPv4(5, 6, 7, 8); !fou.Peer.Equal(expected) { - t.Errorf("expected peer %v, got %v", expected, fou.Peer) - } + if expected := net.IPv4(5, 6, 7, 8); !fou.Peer.Equal(expected) { + t.Errorf("expected peer %v, got %v", expected, fou.Peer) + } - if fou.PeerPort != 22222 { - t.Errorf("expected peer port 0, got %d", fou.PeerPort) - } + if fou.PeerPort != 22222 { + t.Errorf("expected peer port 0, got %d", fou.PeerPort) } // unknown attribute should be skipped msg = []byte{3, 1, 0, 0, 5, 0, 112, 0, 2, 0, 0, 0, 5, 0, 2, 0, 2, 0, 0} - if fou, err := deserializeFouMsg(msg); err != nil { - t.Errorf("unexpected error: %s", err.Error()) - } else if fou.Family != 2 { + fou = deserializeFouMsg(msg) + if fou.Family != 2 { t.Errorf("expected family 2, got %d", fou.Family) } }