Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,14 @@ func LayerDump(l Layer) string {
func layerString(v reflect.Value, anonymous bool, writeSpace bool) string {
// Let String() functions take precedence.
if v.CanInterface() {
if s, ok := v.Interface().(fmt.Stringer); ok {
return s.String()
if v.CanAddr() && v.Addr().CanInterface() {
if s, ok := v.Addr().Interface().(fmt.Stringer); ok {
return s.String()
}
} else {
if s, ok := v.Interface().(fmt.Stringer); ok {
return s.String()
}
}
}
// Reflect, and spit out all the exported fields as key=value.
Expand Down
21 changes: 21 additions & 0 deletions packet_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,34 @@ type embedding struct {
C, D int
}

type embeddedPointer struct {
A, B *int
AA, BB *string
}

type embeddingPointer struct {
embeddedPointer
C, D int
}

func TestDumpEmbedded(t *testing.T) {
e := embedding{embedded: embedded{A: 1, B: 2}, C: 3, D: 4}
if got, want := layerString(reflect.ValueOf(e), false, false), "{A=1 B=2 C=3 D=4}"; got != want {
t.Errorf("embedded dump mismatch:\n got: %v\n want: %v", got, want)
}
}

func TestDumpEmbeddedPointer(t *testing.T) {
one := 1
two := 2
testString1 := "teststring1"
testString2 := "teststring2"
e := embeddingPointer{embeddedPointer: embeddedPointer{A: &one, B: &two, AA: &testString1, BB: &testString2}, C: 3, D: 4}
if got, want := layerString(reflect.ValueOf(e), false, false), "{A=1 B=2 AA=teststring1 BB=teststring2 C=3 D=4}"; got != want {
t.Errorf("embedded pointer dump mismatch:\n got: %v\n want: %v", got, want)
}
}

type singlePacketSource [1][]byte

func (s *singlePacketSource) ReadPacketData() ([]byte, CaptureInfo, error) {
Expand Down
Loading