From 126838d8a361cbe1543b7372332fa4e03bb1abe3 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 6 May 2025 16:05:50 -0400 Subject: [PATCH 01/39] Probably need to change the packaging for pebbe-zmq4, but let's see if this builds --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 094d890..6d66106 100644 --- a/debian/control +++ b/debian/control @@ -11,6 +11,7 @@ Build-Depends: golang-gopkg-yaml.v2-dev, libnmsg-dev (>= 1.1.0~), pkg-config, + zmq4 Standards-Version: 4.5.1 Vcs-Git: https://github.com/farsightsec/go-nmsg.git Vcs-Browser: https://github.com/farsightsec/go-nmsg From e7ad0dfd17df9e1bad434bc750438e4464049505 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Wed, 7 May 2025 20:15:19 -0400 Subject: [PATCH 02/39] Update build dep --- debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index 6d66106..51a7f4c 100644 --- a/debian/control +++ b/debian/control @@ -6,12 +6,12 @@ Build-Depends: debhelper-compat (= 13), dh-golang, golang-any, - golang-google-protobuf-dev, golang-github-dnstap-go-dnstap-dev, + golang-github-pebbe-zmq4-dev, + golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, libnmsg-dev (>= 1.1.0~), pkg-config, - zmq4 Standards-Version: 4.5.1 Vcs-Git: https://github.com/farsightsec/go-nmsg.git Vcs-Browser: https://github.com/farsightsec/go-nmsg From c6c5712c498f72153e469c7208465a3a8b64d773 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 8 May 2025 11:30:33 -0400 Subject: [PATCH 03/39] Add libzmq --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 51a7f4c..0344dfd 100644 --- a/debian/control +++ b/debian/control @@ -11,6 +11,7 @@ Build-Depends: golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, libnmsg-dev (>= 1.1.0~), + libzmq3-dev, pkg-config, Standards-Version: 4.5.1 Vcs-Git: https://github.com/farsightsec/go-nmsg.git From b71e6de5e5243be693dd72d443b3551e718f41c6 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 8 May 2025 11:40:06 -0400 Subject: [PATCH 04/39] Skip tests? --- debian/rules | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debian/rules b/debian/rules index 0c46032..50691af 100755 --- a/debian/rules +++ b/debian/rules @@ -2,3 +2,7 @@ %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang + +override_dh_auto_test: + echo "Tests seem to be failing" + dh_auto_test || true From ecc828514732f10f627fdff226dcd5cccf73e115 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 8 May 2025 11:47:23 -0400 Subject: [PATCH 05/39] Don't skip tests --- debian/rules | 4 ---- 1 file changed, 4 deletions(-) diff --git a/debian/rules b/debian/rules index 50691af..0c46032 100755 --- a/debian/rules +++ b/debian/rules @@ -2,7 +2,3 @@ %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang - -override_dh_auto_test: - echo "Tests seem to be failing" - dh_auto_test || true From 8c59ba87135f40d64449babe13fa916b3220c375 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 11:23:06 -0400 Subject: [PATCH 06/39] Disable cgo --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index 0c46032..415f0de 100755 --- a/debian/rules +++ b/debian/rules @@ -1,4 +1,6 @@ #!/usr/bin/make -f +export CGO_ENABLED=0 + %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From d4e3319ebb69a142e15bb183c4893a26eccdc161 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 11:35:14 -0400 Subject: [PATCH 07/39] Try without the other package --- debian/control | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/debian/control b/debian/control index 0344dfd..8f9f01f 100644 --- a/debian/control +++ b/debian/control @@ -41,14 +41,3 @@ Description: NMSG vendor base encoding modules for Golang This package provides generated Go code from Protocol Buffers Version 2 specifications for NMSG vendor base encoding modules: Dns, DnsQR, Email, Encode, Http, IPConn, Linkpair, LogLine, Ncap, Packet, Pkt, and Xml. - -Package: golang-github-farsightsec-go-nmsg-cgo-nmsg-dev -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, - pkg-config, - libnmsg-dev, - libxs-dev -Description: Golang bindings to the C libnmsg library - The NMSG network message encapsulation library format is an efficient - encoding of typed, structured data into payloads which are packed into - containers which can be transmitted over the network or stored to disk. From eb111a14af9a3c88652a776f4d85991a305b50b4 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 11:40:18 -0400 Subject: [PATCH 08/39] Delete install file --- debian/golang-github-farsightsec-go-nmsg-cgo-nmsg-dev.install | 1 - 1 file changed, 1 deletion(-) delete mode 100644 debian/golang-github-farsightsec-go-nmsg-cgo-nmsg-dev.install diff --git a/debian/golang-github-farsightsec-go-nmsg-cgo-nmsg-dev.install b/debian/golang-github-farsightsec-go-nmsg-cgo-nmsg-dev.install deleted file mode 100644 index 5f5694d..0000000 --- a/debian/golang-github-farsightsec-go-nmsg-cgo-nmsg-dev.install +++ /dev/null @@ -1 +0,0 @@ -usr/share/gocode/src/github.com/farsightsec/go-nmsg/cgo-nmsg/*.go From 342e19d2a4a5bd13c4331a50394185457bca7251 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 11:48:57 -0400 Subject: [PATCH 09/39] Try env variable in more specific place --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index 415f0de..cda12a9 100755 --- a/debian/rules +++ b/debian/rules @@ -4,3 +4,6 @@ export CGO_ENABLED=0 %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang + +override_dh_auto_build: + CGO_ENABLED=0 dh_auto_build $@ From c1b4d11130c51f3d2cb2e91f702333577d57c22d Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 11:58:27 -0400 Subject: [PATCH 10/39] Try adding miekg-dns, just for fun --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 8f9f01f..d658300 100644 --- a/debian/control +++ b/debian/control @@ -7,6 +7,7 @@ Build-Depends: dh-golang, golang-any, golang-github-dnstap-go-dnstap-dev, + golang-github-miekg-dns-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, From 5602564499b4315729de455f03e437d46a78b44f Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 12:09:10 -0400 Subject: [PATCH 11/39] No rules --- debian/rules | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian/rules b/debian/rules index cda12a9..0c46032 100755 --- a/debian/rules +++ b/debian/rules @@ -1,9 +1,4 @@ #!/usr/bin/make -f -export CGO_ENABLED=0 - %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang - -override_dh_auto_build: - CGO_ENABLED=0 dh_auto_build $@ From b2a625fcacb77f9306076299a9a5298beb268419 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 12:18:58 -0400 Subject: [PATCH 12/39] Try enabling it explicitly --- debian/control | 1 - debian/rules | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index d658300..8f9f01f 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,6 @@ Build-Depends: dh-golang, golang-any, golang-github-dnstap-go-dnstap-dev, - golang-github-miekg-dns-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, diff --git a/debian/rules b/debian/rules index 0c46032..0ffe996 100755 --- a/debian/rules +++ b/debian/rules @@ -1,4 +1,6 @@ #!/usr/bin/make -f +export CGO_ENABLED=1 + %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From 6d4f816cd822fd1fc40f303347a7041fa722d169 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 13:13:35 -0400 Subject: [PATCH 13/39] Disable CGO again --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 0ffe996..415f0de 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f -export CGO_ENABLED=1 +export CGO_ENABLED=0 %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From ef9635e6f0210dd4d2e58ed113a616f1583864dc Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 13:32:12 -0400 Subject: [PATCH 14/39] Exclude cgo-nmsg (pebbe/zmq4 needs cgo) --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 415f0de..55fff1f 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f -export CGO_ENABLED=0 +export DH_GOLANG_EXCLUDES := cgo-nmsg %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From b07355b1a19b3da777b625afc1f7b57462b4c482 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 13:50:14 -0400 Subject: [PATCH 15/39] Commenting out a test - discuss how to handle this before landing --- zmq_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zmq_test.go b/zmq_test.go index 2852803..50b39ee 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -334,10 +334,10 @@ func TestZMQ_CGo_IPC(t *testing.T) { doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) } -func TestZmq_Mixed_Local(t *testing.T) { - doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) - doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) -} +// func TestZmq_Mixed_Local(t *testing.T) { +// doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) +// doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) +// } //// Inproc cgo-nmsg side fill writer buffer and hangs //func TestZmq_Mixed_Inproc(t *testing.T) { From cdccfdf94abfebba76fcbcd0bda803411a52678f Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 14:06:28 -0400 Subject: [PATCH 16/39] Try with two commented out --- zmq_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zmq_test.go b/zmq_test.go index 50b39ee..d28c168 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -345,7 +345,7 @@ func TestZMQ_CGo_IPC(t *testing.T) { // doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) //} -func TestZmq_Mixed_IPC(t *testing.T) { - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) -} +// func TestZmq_Mixed_IPC(t *testing.T) { +// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) +// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) +// } From ae8658845e2e8e11b70f50e3c0d388f66a2c3612 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Fri, 9 May 2025 14:31:02 -0400 Subject: [PATCH 17/39] Try syncing version --- go.mod | 2 +- go.sum | 4 ++-- zmq_test.go | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index d5376ca..f3b0973 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/dnstap/golang-dnstap v0.4.0 - github.com/pebbe/zmq4 v1.2.10 + github.com/pebbe/zmq4 v1.4.0 google.golang.org/protobuf v1.25.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 3990d06..d6f3a9f 100644 --- a/go.sum +++ b/go.sum @@ -26,8 +26,8 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/miekg/dns v1.1.31 h1:sJFOl9BgwbYAWOGEwr61FU28pqsBNdpRBnhGXtO06Oo= github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/pebbe/zmq4 v1.2.10 h1:wQkqRZ3CZeABIeidr3e8uQZMMH5YAykA/WN0L5zkd1c= -github.com/pebbe/zmq4 v1.2.10/go.mod h1:nqnPueOapVhE2wItZ0uOErngczsJdLOGkebMxaO8r48= +github.com/pebbe/zmq4 v1.4.0 h1:gO5P92Ayl8GXpPZdYcD62Cwbq0slSBVVQRIXwGSJ6eQ= +github.com/pebbe/zmq4 v1.4.0/go.mod h1:nqnPueOapVhE2wItZ0uOErngczsJdLOGkebMxaO8r48= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= diff --git a/zmq_test.go b/zmq_test.go index d28c168..2852803 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -334,10 +334,10 @@ func TestZMQ_CGo_IPC(t *testing.T) { doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) } -// func TestZmq_Mixed_Local(t *testing.T) { -// doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) -// doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) -// } +func TestZmq_Mixed_Local(t *testing.T) { + doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) + doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) +} //// Inproc cgo-nmsg side fill writer buffer and hangs //func TestZmq_Mixed_Inproc(t *testing.T) { @@ -345,7 +345,7 @@ func TestZMQ_CGo_IPC(t *testing.T) { // doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) //} -// func TestZmq_Mixed_IPC(t *testing.T) { -// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) -// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) -// } +func TestZmq_Mixed_IPC(t *testing.T) { + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) +} From 5afe06beed19a288d1178c22b43cd485f90192d4 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Mon, 12 May 2025 12:37:29 -0400 Subject: [PATCH 18/39] Separate tests --- cgo-nmsg/zmq_test.go | 312 +++++++++++++++++++++++++++++++++++++++++++ zmq_test.go | 118 ---------------- 2 files changed, 312 insertions(+), 118 deletions(-) create mode 100644 cgo-nmsg/zmq_test.go diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go new file mode 100644 index 0000000..d5a3530 --- /dev/null +++ b/cgo-nmsg/zmq_test.go @@ -0,0 +1,312 @@ +package nmsg_test + +import ( + "errors" + "github.com/farsightsec/go-nmsg" + cnmsg "github.com/farsightsec/go-nmsg/cgo-nmsg" + "io" + "log" + "strconv" + "testing" +) + +type tester func(*testing.T, io.Reader, io.Writer) +type testerCgo func(*testing.T, cnmsg.Input, cnmsg.Output) +type testerMixed func(*testing.T, cnmsg.Input, cnmsg.Output, nmsg.Input, nmsg.Output) + +func PayloadIsEqual(c *nmsg.NmsgPayload, d *nmsg.NmsgPayload) bool { + if *c.Vid != *d.Vid || *c.Msgtype != *d.Msgtype { + return false + } + + return compare(c.Payload, d.Payload) +} + +func MessageIsEqual(c *cnmsg.Message, d *cnmsg.Message) bool { + ct, cv := c.GetMsgtype() + dt, dv := d.GetMsgtype() + if ct != dt || cv != dv { + return false + } + + cp, err := c.GetBytesField("payload", 0) + if err != nil { + return false + } + + dp, err := d.GetBytesField("payload", 0) + if err != nil { + return false + } + + return compare(cp, dp) +} + +func getCgoMessage(t *testing.T, size int) *cnmsg.Message { + mod := cnmsg.MessageModLookupByName("base", "encode") + if mod == nil { + log.Fatal("module not found") + } + msg := cnmsg.NewMessage(mod) + if err := msg.SetEnumField("type", 0, "TEXT"); err != nil { + log.Fatal(err) + } + + payload := make([]byte, size) + for i := range payload { + payload[i] = '0' + } + + if err := msg.SetBytesField("payload", 0, payload); err != nil { + log.Fatal(err) + } + + return msg +} + +func doWriteCgo(t *testing.T, s chan bool, o cnmsg.Output) error { + for { + select { + case _ = <-s: + return nil + default: + msg := getCgoMessage(t, 500) + err := o.Write(msg) + if err != nil { + return err + } + } + } +} + +func doReadCGo(s chan bool, i cnmsg.Input) (*cnmsg.Message, error) { + var rmsg *cnmsg.Message + var err error + for { + rmsg, err = i.Read() + if err != nil { + if cnmsg.ErrorRetry(err) == false { + return nil, err + } + } else if rmsg == nil { + return nil, errors.New("receive nil message") + } else { + break + } + } + s <- true + return rmsg, nil +} + +func doWriteNmsg(s chan bool, msg *nmsg.NmsgPayload, o nmsg.Output) error { + for { + select { + case _ = <-s: + return nil + default: + err := o.Send(msg) + if err != nil { + return err + } + } + } +} + +func doReadNmsg(s chan bool, i nmsg.Input) (*nmsg.NmsgPayload, error) { + var rmsg *nmsg.NmsgPayload + var err error + for { + rmsg, err = i.Recv() + if err != nil { + return nil, err + } else if rmsg == nil { + return nil, errors.New("receive nil message") + } else { + break + } + } + s <- true + return rmsg, nil +} + +func doTestDo(t *testing.T, i nmsg.Input, o nmsg.Output) { + + signal := make(chan bool) + + pout, err := nmsg.Payload(testMessage(900)) + if err != nil { + t.Error(err.Error()) + return + } + + go func() { + err := doWriteNmsg(signal, pout, o) + if err != nil { + t.Fatal(err.Error()) + } + }() + + pin, err := doReadNmsg(signal, i) + if err != nil { + t.Error(err.Error()) + return + } + + if PayloadIsEqual(pout, pin) == false { + t.Error(errors.New("Failed to compare in and out payloads")) + } +} + +func doTestCgoDo(t *testing.T, i cnmsg.Input, o cnmsg.Output) { + signal := make(chan bool) + + go func() { + err := doWriteCgo(t, signal, o) + if err != nil { + t.Fatal(err.Error()) + } + }() + + rmsg, err := doReadCGo(signal, i) + + if err != nil { + t.Fatal(err.Error()) + } + + msg_ref := getCgoMessage(t, 500) + if MessageIsEqual(rmsg, msg_ref) == false { + log.Fatal("messages do not match") + } +} + +func doTestUnbuffered(t *testing.T, r io.Reader, w io.Writer) { + input := nmsg.NewInput(r, 1000) + output := nmsg.UnbufferedOutput(w) + + doTestDo(t, input, output) +} + +func doTestBuffered(t *testing.T, r io.Reader, w io.Writer) { + input := nmsg.NewInput(r, 1000) + output := nmsg.BufferedOutput(w) + + doTestDo(t, input, output) +} + +func doTestForCGo(t *testing.T, ep string, tp string, fn testerCgo) { + writer, err := cnmsg.NewZMQOutput(ep+",accept,"+tp, 2000) + + if err != nil { + t.Error(err.Error()) + return + } + + reader, err := cnmsg.NewZMQInput(ep + ",connect," + tp) + + if err != nil { + t.Error(err.Error()) + return + } + + fn(t, reader, writer) +} + +func doTestMixedDo(t *testing.T, ci cnmsg.Input, co cnmsg.Output, ni nmsg.Input, no nmsg.Output) { + // Write to co, read for ni, write to no, read from ci + signal1 := make(chan bool) + signal2 := make(chan bool) + + go func() { + err := doWriteCgo(t, signal1, co) + if err != nil { + log.Fatal(err.Error()) + } + }() + pin, err := doReadNmsg(signal1, ni) + if err != nil { + log.Fatal(err.Error()) + } + go func() { + err := doWriteNmsg(signal2, pin, no) + if err != nil { + log.Fatal(err.Error()) + } + }() + rmsg, err := doReadCGo(signal2, ci) + if err != nil { + log.Fatal(err.Error()) + } + + msg_ref := getCgoMessage(t, 500) + + if MessageIsEqual(rmsg, msg_ref) == false { + log.Fatal("messages do not match") + } +} + +func doTestForMixed(t *testing.T, ep string, num int, tp string, fn testerMixed) { + ep1 := ep + strconv.Itoa(num) + ep2 := ep + strconv.Itoa(num+1) + + co, err := cnmsg.NewZMQOutput(ep1+",accept,"+tp, 1000) + + if err != nil { + t.Error(err.Error() + " " + ep1) + return + } + + nw, err := nmsg.NewZMQWriter(ep2 + ",accept," + tp) + if err != nil { + t.Error(err.Error() + " " + ep2) + return + } + + nr, err := nmsg.NewZMQReader(ep1 + ",connect," + tp) + if err != nil { + t.Error(err.Error() + " " + ep1) + return + } + + ci, err := cnmsg.NewZMQInput(ep2 + ",connect," + tp) + + if err != nil { + t.Error(err.Error() + " " + ep2) + return + } + + ni := nmsg.NewInput(nr, 1000) + no := nmsg.UnbufferedOutput(nw) + + fn(t, ci, co, ni, no) +} + +func TestZMQ_CGo_Local(t *testing.T) { + doTestForCGo(t, "tcp://127.0.0.1:6555", "pushpull", doTestCgoDo) + doTestForCGo(t, "tcp://127.0.0.1:6557", "pubsub", doTestCgoDo) +} + +func TestZMQ_CGo_Inproc(t *testing.T) { + doTestForCGo(t, "inproc://TestZMQInproc10", "pushpull", doTestCgoDo) + doTestForCGo(t, "inproc://TestZMQInproc30", "pubsub", doTestCgoDo) +} + +func TestZMQ_CGo_IPC(t *testing.T) { + doTestForCGo(t, "ipc:///tmp/TestZMQIpc10", "pushpull", doTestCgoDo) + doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) +} + +func TestZmq_Mixed_Local(t *testing.T) { + doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) + doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) +} + +//// Inproc cgo-nmsg side fill writer buffer and hangs +//func TestZmq_Mixed_Inproc(t *testing.T) { +// doTestForMixed(t, "inproc://TestZMQInproc", 100, "pushpull", doTestMixedDo) +// doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) +//} + +func TestZmq_Mixed_IPC(t *testing.T) { + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) +} diff --git a/zmq_test.go b/zmq_test.go index 2852803..98e7c50 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -211,93 +211,6 @@ func doTestFor(t *testing.T, ep string, tp string, fn tester) { fn(t, reader, writer) } -func doTestForCGo(t *testing.T, ep string, tp string, fn testerCgo) { - writer, err := cnmsg.NewZMQOutput(ep+",accept,"+tp, 2000) - - if err != nil { - t.Error(err.Error()) - return - } - - reader, err := cnmsg.NewZMQInput(ep + ",connect," + tp) - - if err != nil { - t.Error(err.Error()) - return - } - - fn(t, reader, writer) -} - -func doTestMixedDo(t *testing.T, ci cnmsg.Input, co cnmsg.Output, ni nmsg.Input, no nmsg.Output) { - // Write to co, read for ni, write to no, read from ci - signal1 := make(chan bool) - signal2 := make(chan bool) - - go func() { - err := doWriteCgo(t, signal1, co) - if err != nil { - log.Fatal(err.Error()) - } - }() - pin, err := doReadNmsg(signal1, ni) - if err != nil { - log.Fatal(err.Error()) - } - go func() { - err := doWriteNmsg(signal2, pin, no) - if err != nil { - log.Fatal(err.Error()) - } - }() - rmsg, err := doReadCGo(signal2, ci) - if err != nil { - log.Fatal(err.Error()) - } - - msg_ref := getCgoMessage(t, 500) - - if MessageIsEqual(rmsg, msg_ref) == false { - log.Fatal("messages do not match") - } -} - -func doTestForMixed(t *testing.T, ep string, num int, tp string, fn testerMixed) { - ep1 := ep + strconv.Itoa(num) - ep2 := ep + strconv.Itoa(num+1) - - co, err := cnmsg.NewZMQOutput(ep1+",accept,"+tp, 1000) - - if err != nil { - t.Error(err.Error() + " " + ep1) - return - } - - nw, err := nmsg.NewZMQWriter(ep2 + ",accept," + tp) - if err != nil { - t.Error(err.Error() + " " + ep2) - return - } - - nr, err := nmsg.NewZMQReader(ep1 + ",connect," + tp) - if err != nil { - t.Error(err.Error() + " " + ep1) - return - } - - ci, err := cnmsg.NewZMQInput(ep2 + ",connect," + tp) - - if err != nil { - t.Error(err.Error() + " " + ep2) - return - } - - ni := nmsg.NewInput(nr, 1000) - no := nmsg.UnbufferedOutput(nw) - - fn(t, ci, co, ni, no) -} - func TestZMQLocal(t *testing.T) { doTestFor(t, "tcp://127.0.0.1:5555", "pushpull", doTestUnbuffered) doTestFor(t, "tcp://127.0.0.1:5556", "pushpull", doTestBuffered) @@ -318,34 +231,3 @@ func TestZMQIpc(t *testing.T) { doTestFor(t, "ipc:///tmp/TestZMQIpc2", "pubsub", doTestUnbuffered) doTestFor(t, "ipc:///tmp/TestZMQIpc2", "pubsub", doTestBuffered) } - -func TestZMQ_CGo_Local(t *testing.T) { - doTestForCGo(t, "tcp://127.0.0.1:6555", "pushpull", doTestCgoDo) - doTestForCGo(t, "tcp://127.0.0.1:6557", "pubsub", doTestCgoDo) -} - -func TestZMQ_CGo_Inproc(t *testing.T) { - doTestForCGo(t, "inproc://TestZMQInproc10", "pushpull", doTestCgoDo) - doTestForCGo(t, "inproc://TestZMQInproc30", "pubsub", doTestCgoDo) -} - -func TestZMQ_CGo_IPC(t *testing.T) { - doTestForCGo(t, "ipc:///tmp/TestZMQIpc10", "pushpull", doTestCgoDo) - doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) -} - -func TestZmq_Mixed_Local(t *testing.T) { - doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) - doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) -} - -//// Inproc cgo-nmsg side fill writer buffer and hangs -//func TestZmq_Mixed_Inproc(t *testing.T) { -// doTestForMixed(t, "inproc://TestZMQInproc", 100, "pushpull", doTestMixedDo) -// doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) -//} - -func TestZmq_Mixed_IPC(t *testing.T) { - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) -} From d1dc311eca7bddc55816ce72b95688b0c671bba4 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Mon, 12 May 2025 12:43:00 -0400 Subject: [PATCH 19/39] Remove some imports --- cgo-nmsg/zmq_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index d5a3530..82cb6ae 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -3,10 +3,8 @@ package nmsg_test import ( "errors" "github.com/farsightsec/go-nmsg" - cnmsg "github.com/farsightsec/go-nmsg/cgo-nmsg" "io" "log" - "strconv" "testing" ) From f9065bd3451ce21a66bdb3f7fa3cb73eb1898d12 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Mon, 12 May 2025 12:58:56 -0400 Subject: [PATCH 20/39] Remove from correct file --- cgo-nmsg/zmq_test.go | 2 ++ zmq_test.go | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index 82cb6ae..d5a3530 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -3,8 +3,10 @@ package nmsg_test import ( "errors" "github.com/farsightsec/go-nmsg" + cnmsg "github.com/farsightsec/go-nmsg/cgo-nmsg" "io" "log" + "strconv" "testing" ) diff --git a/zmq_test.go b/zmq_test.go index 98e7c50..a1ab088 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -3,10 +3,8 @@ package nmsg_test import ( "errors" "github.com/farsightsec/go-nmsg" - cnmsg "github.com/farsightsec/go-nmsg/cgo-nmsg" "io" "log" - "strconv" "testing" ) From 45e93428e65884ec26aff631b4e875ff9d159694 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Mon, 12 May 2025 13:04:28 -0400 Subject: [PATCH 21/39] Remove more cnmsg --- zmq_test.go | 100 ---------------------------------------------------- 1 file changed, 100 deletions(-) diff --git a/zmq_test.go b/zmq_test.go index a1ab088..fb3327a 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -9,8 +9,6 @@ import ( ) type tester func(*testing.T, io.Reader, io.Writer) -type testerCgo func(*testing.T, cnmsg.Input, cnmsg.Output) -type testerMixed func(*testing.T, cnmsg.Input, cnmsg.Output, nmsg.Input, nmsg.Output) func PayloadIsEqual(c *nmsg.NmsgPayload, d *nmsg.NmsgPayload) bool { if *c.Vid != *d.Vid || *c.Msgtype != *d.Msgtype { @@ -20,82 +18,6 @@ func PayloadIsEqual(c *nmsg.NmsgPayload, d *nmsg.NmsgPayload) bool { return compare(c.Payload, d.Payload) } -func MessageIsEqual(c *cnmsg.Message, d *cnmsg.Message) bool { - ct, cv := c.GetMsgtype() - dt, dv := d.GetMsgtype() - if ct != dt || cv != dv { - return false - } - - cp, err := c.GetBytesField("payload", 0) - if err != nil { - return false - } - - dp, err := d.GetBytesField("payload", 0) - if err != nil { - return false - } - - return compare(cp, dp) -} - -func getCgoMessage(t *testing.T, size int) *cnmsg.Message { - mod := cnmsg.MessageModLookupByName("base", "encode") - if mod == nil { - log.Fatal("module not found") - } - msg := cnmsg.NewMessage(mod) - if err := msg.SetEnumField("type", 0, "TEXT"); err != nil { - log.Fatal(err) - } - - payload := make([]byte, size) - for i := range payload { - payload[i] = '0' - } - - if err := msg.SetBytesField("payload", 0, payload); err != nil { - log.Fatal(err) - } - - return msg -} - -func doWriteCgo(t *testing.T, s chan bool, o cnmsg.Output) error { - for { - select { - case _ = <-s: - return nil - default: - msg := getCgoMessage(t, 500) - err := o.Write(msg) - if err != nil { - return err - } - } - } -} - -func doReadCGo(s chan bool, i cnmsg.Input) (*cnmsg.Message, error) { - var rmsg *cnmsg.Message - var err error - for { - rmsg, err = i.Read() - if err != nil { - if cnmsg.ErrorRetry(err) == false { - return nil, err - } - } else if rmsg == nil { - return nil, errors.New("receive nil message") - } else { - break - } - } - s <- true - return rmsg, nil -} - func doWriteNmsg(s chan bool, msg *nmsg.NmsgPayload, o nmsg.Output) error { for { select { @@ -155,28 +77,6 @@ func doTestDo(t *testing.T, i nmsg.Input, o nmsg.Output) { } } -func doTestCgoDo(t *testing.T, i cnmsg.Input, o cnmsg.Output) { - signal := make(chan bool) - - go func() { - err := doWriteCgo(t, signal, o) - if err != nil { - t.Fatal(err.Error()) - } - }() - - rmsg, err := doReadCGo(signal, i) - - if err != nil { - t.Fatal(err.Error()) - } - - msg_ref := getCgoMessage(t, 500) - if MessageIsEqual(rmsg, msg_ref) == false { - log.Fatal("messages do not match") - } -} - func doTestUnbuffered(t *testing.T, r io.Reader, w io.Writer) { input := nmsg.NewInput(r, 1000) output := nmsg.UnbufferedOutput(w) From c4e18eccfb94a02d18557e6f294d49a21c848b78 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 11:30:04 -0400 Subject: [PATCH 22/39] Another bonus import --- zmq_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/zmq_test.go b/zmq_test.go index fb3327a..cf19316 100644 --- a/zmq_test.go +++ b/zmq_test.go @@ -4,7 +4,6 @@ import ( "errors" "github.com/farsightsec/go-nmsg" "io" - "log" "testing" ) From 4d9e4aa5597fc9781f67b9e7e992bd8dfb6a2910 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 11:56:20 -0400 Subject: [PATCH 23/39] Try to fail --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 55fff1f..7897b81 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f -export DH_GOLANG_EXCLUDES := cgo-nmsg +# export DH_GOLANG_EXCLUDES := cgo-nmsg %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From 772884de3cc4bca0e2ef923f6eea8642b1b521d5 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 12:42:02 -0400 Subject: [PATCH 24/39] Copy definitions --- cgo-nmsg/zmq_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index d5a3530..ef8fe39 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -14,6 +14,22 @@ type tester func(*testing.T, io.Reader, io.Writer) type testerCgo func(*testing.T, cnmsg.Input, cnmsg.Output) type testerMixed func(*testing.T, cnmsg.Input, cnmsg.Output, nmsg.Input, nmsg.Output) +func compare(a, b []byte) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} + +func testMessage(length int) nmsg.Message { + return &TestMessage{Bytes: make([]byte, length)} +} + func PayloadIsEqual(c *nmsg.NmsgPayload, d *nmsg.NmsgPayload) bool { if *c.Vid != *d.Vid || *c.Msgtype != *d.Msgtype { return false From b5943da0ad25e57d371cb975d7d500b3fb5e900b Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 13:06:18 -0400 Subject: [PATCH 25/39] Try copying generated file. I may be getting out of my depth --- cgo-nmsg/payload_test.pb_test.go | 143 +++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 cgo-nmsg/payload_test.pb_test.go diff --git a/cgo-nmsg/payload_test.pb_test.go b/cgo-nmsg/payload_test.pb_test.go new file mode 100644 index 0000000..c64ec42 --- /dev/null +++ b/cgo-nmsg/payload_test.pb_test.go @@ -0,0 +1,143 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc (unknown) +// source: payload_test.proto + +package nmsg_test + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type TestMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bytes []byte `protobuf:"bytes,2,opt,name=bytes" json:"bytes,omitempty"` +} + +func (x *TestMessage) Reset() { + *x = TestMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_payload_test_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestMessage) ProtoMessage() {} + +func (x *TestMessage) ProtoReflect() protoreflect.Message { + mi := &file_payload_test_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestMessage.ProtoReflect.Descriptor instead. +func (*TestMessage) Descriptor() ([]byte, []int) { + return file_payload_test_proto_rawDescGZIP(), []int{0} +} + +func (x *TestMessage) GetBytes() []byte { + if x != nil { + return x.Bytes + } + return nil +} + +var File_payload_test_proto protoreflect.FileDescriptor + +var file_payload_test_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6e, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, + 0x23, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x66, 0x61, 0x72, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x63, 0x2f, 0x67, + 0x6f, 0x2d, 0x6e, 0x6d, 0x73, 0x67, 0x3b, 0x6e, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, +} + +var ( + file_payload_test_proto_rawDescOnce sync.Once + file_payload_test_proto_rawDescData = file_payload_test_proto_rawDesc +) + +func file_payload_test_proto_rawDescGZIP() []byte { + file_payload_test_proto_rawDescOnce.Do(func() { + file_payload_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_payload_test_proto_rawDescData) + }) + return file_payload_test_proto_rawDescData +} + +var file_payload_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_payload_test_proto_goTypes = []interface{}{ + (*TestMessage)(nil), // 0: nmsg_test.TestMessage +} +var file_payload_test_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_payload_test_proto_init() } +func file_payload_test_proto_init() { + if File_payload_test_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_payload_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_payload_test_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_payload_test_proto_goTypes, + DependencyIndexes: file_payload_test_proto_depIdxs, + MessageInfos: file_payload_test_proto_msgTypes, + }.Build() + File_payload_test_proto = out.File + file_payload_test_proto_rawDesc = nil + file_payload_test_proto_goTypes = nil + file_payload_test_proto_depIdxs = nil +} From 991102b5d5f25f5a0355c8d7a1c485652c815386 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 13:41:13 -0400 Subject: [PATCH 26/39] Don't need to go nuts --- cgo-nmsg/payload_test.pb_test.go | 143 ------------------------------- cgo-nmsg/zmq_test.go | 46 ---------- 2 files changed, 189 deletions(-) delete mode 100644 cgo-nmsg/payload_test.pb_test.go diff --git a/cgo-nmsg/payload_test.pb_test.go b/cgo-nmsg/payload_test.pb_test.go deleted file mode 100644 index c64ec42..0000000 --- a/cgo-nmsg/payload_test.pb_test.go +++ /dev/null @@ -1,143 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0-devel -// protoc (unknown) -// source: payload_test.proto - -package nmsg_test - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type TestMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Bytes []byte `protobuf:"bytes,2,opt,name=bytes" json:"bytes,omitempty"` -} - -func (x *TestMessage) Reset() { - *x = TestMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_payload_test_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TestMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TestMessage) ProtoMessage() {} - -func (x *TestMessage) ProtoReflect() protoreflect.Message { - mi := &file_payload_test_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TestMessage.ProtoReflect.Descriptor instead. -func (*TestMessage) Descriptor() ([]byte, []int) { - return file_payload_test_proto_rawDescGZIP(), []int{0} -} - -func (x *TestMessage) GetBytes() []byte { - if x != nil { - return x.Bytes - } - return nil -} - -var File_payload_test_proto protoreflect.FileDescriptor - -var file_payload_test_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6e, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, - 0x23, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x66, 0x61, 0x72, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x63, 0x2f, 0x67, - 0x6f, 0x2d, 0x6e, 0x6d, 0x73, 0x67, 0x3b, 0x6e, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, -} - -var ( - file_payload_test_proto_rawDescOnce sync.Once - file_payload_test_proto_rawDescData = file_payload_test_proto_rawDesc -) - -func file_payload_test_proto_rawDescGZIP() []byte { - file_payload_test_proto_rawDescOnce.Do(func() { - file_payload_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_payload_test_proto_rawDescData) - }) - return file_payload_test_proto_rawDescData -} - -var file_payload_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_payload_test_proto_goTypes = []interface{}{ - (*TestMessage)(nil), // 0: nmsg_test.TestMessage -} -var file_payload_test_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_payload_test_proto_init() } -func file_payload_test_proto_init() { - if File_payload_test_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_payload_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TestMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_payload_test_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_payload_test_proto_goTypes, - DependencyIndexes: file_payload_test_proto_depIdxs, - MessageInfos: file_payload_test_proto_msgTypes, - }.Build() - File_payload_test_proto = out.File - file_payload_test_proto_rawDesc = nil - file_payload_test_proto_goTypes = nil - file_payload_test_proto_depIdxs = nil -} diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index ef8fe39..5aa3093 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -26,10 +26,6 @@ func compare(a, b []byte) bool { return true } -func testMessage(length int) nmsg.Message { - return &TestMessage{Bytes: make([]byte, length)} -} - func PayloadIsEqual(c *nmsg.NmsgPayload, d *nmsg.NmsgPayload) bool { if *c.Vid != *d.Vid || *c.Msgtype != *d.Msgtype { return false @@ -145,34 +141,6 @@ func doReadNmsg(s chan bool, i nmsg.Input) (*nmsg.NmsgPayload, error) { return rmsg, nil } -func doTestDo(t *testing.T, i nmsg.Input, o nmsg.Output) { - - signal := make(chan bool) - - pout, err := nmsg.Payload(testMessage(900)) - if err != nil { - t.Error(err.Error()) - return - } - - go func() { - err := doWriteNmsg(signal, pout, o) - if err != nil { - t.Fatal(err.Error()) - } - }() - - pin, err := doReadNmsg(signal, i) - if err != nil { - t.Error(err.Error()) - return - } - - if PayloadIsEqual(pout, pin) == false { - t.Error(errors.New("Failed to compare in and out payloads")) - } -} - func doTestCgoDo(t *testing.T, i cnmsg.Input, o cnmsg.Output) { signal := make(chan bool) @@ -195,20 +163,6 @@ func doTestCgoDo(t *testing.T, i cnmsg.Input, o cnmsg.Output) { } } -func doTestUnbuffered(t *testing.T, r io.Reader, w io.Writer) { - input := nmsg.NewInput(r, 1000) - output := nmsg.UnbufferedOutput(w) - - doTestDo(t, input, output) -} - -func doTestBuffered(t *testing.T, r io.Reader, w io.Writer) { - input := nmsg.NewInput(r, 1000) - output := nmsg.BufferedOutput(w) - - doTestDo(t, input, output) -} - func doTestForCGo(t *testing.T, ep string, tp string, fn testerCgo) { writer, err := cnmsg.NewZMQOutput(ep+",accept,"+tp, 2000) From b511634ad85cb80e33a68d35a686516577d8b47a Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 16:30:53 -0400 Subject: [PATCH 27/39] Comment out first failing test --- cgo-nmsg/zmq_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index 5aa3093..2091bb4 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -265,10 +265,10 @@ func TestZMQ_CGo_IPC(t *testing.T) { doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) } -func TestZmq_Mixed_Local(t *testing.T) { - doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) - doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) -} +// func TestZmq_Mixed_Local(t *testing.T) { +// doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) +// doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) +// } //// Inproc cgo-nmsg side fill writer buffer and hangs //func TestZmq_Mixed_Inproc(t *testing.T) { From 9a06886d3f59167fe2e57d915bfdd50c2f38e1d6 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 16:34:49 -0400 Subject: [PATCH 28/39] Comment out other failure --- cgo-nmsg/zmq_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index 2091bb4..6f836ae 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -276,7 +276,7 @@ func TestZMQ_CGo_IPC(t *testing.T) { // doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) //} -func TestZmq_Mixed_IPC(t *testing.T) { - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) - doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) -} +// func TestZmq_Mixed_IPC(t *testing.T) { +// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) +// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) +// } From 5144b0b13592f9d8ca7e2611e6b464732b8399a2 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Tue, 13 May 2025 16:53:55 -0400 Subject: [PATCH 29/39] Make it build again --- cgo-nmsg/zmq_test.go | 18 ++++++++++-------- debian/rules | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cgo-nmsg/zmq_test.go b/cgo-nmsg/zmq_test.go index 6f836ae..f981c94 100644 --- a/cgo-nmsg/zmq_test.go +++ b/cgo-nmsg/zmq_test.go @@ -265,10 +265,11 @@ func TestZMQ_CGo_IPC(t *testing.T) { doTestForCGo(t, "ipc:///tmp/TestZMQIpc20", "pubsub", doTestCgoDo) } -// func TestZmq_Mixed_Local(t *testing.T) { -// doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) -// doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) -// } +# This test is currently failing with a segfault +func TestZmq_Mixed_Local(t *testing.T) { + doTestForMixed(t, "tcp://127.0.0.1:", 7555, "pushpull", doTestMixedDo) + doTestForMixed(t, "tcp://127.0.0.1:", 7557, "pubsub", doTestMixedDo) +} //// Inproc cgo-nmsg side fill writer buffer and hangs //func TestZmq_Mixed_Inproc(t *testing.T) { @@ -276,7 +277,8 @@ func TestZMQ_CGo_IPC(t *testing.T) { // doTestForMixed(t, "inproc://TestZMQInproc", 200, "pubsub", doTestMixedDo) //} -// func TestZmq_Mixed_IPC(t *testing.T) { -// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) -// doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) -// } +# This test is currently failing with a segfault +func TestZmq_Mixed_IPC(t *testing.T) { + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 100, "pushpull", doTestMixedDo) + doTestForMixed(t, "ipc:///tmp/TestZMQIpc", 200, "pubsub", doTestMixedDo) +} diff --git a/debian/rules b/debian/rules index 7897b81..55fff1f 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #!/usr/bin/make -f -# export DH_GOLANG_EXCLUDES := cgo-nmsg +export DH_GOLANG_EXCLUDES := cgo-nmsg %: dh $@ --with=golang --builddirectory=_build --buildsystem=golang From c86d928821cfb9a1c26a1879e5d024bcc282ad53 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 12:46:12 -0400 Subject: [PATCH 30/39] Add changelog updates --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index a71a083..a7c9647 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +go-nmsg (0.3.0-2) debian-fsi; urgency=medium + + * Update dependencies for package building. + * Skip building cgo-nmsg. + * Move cgo-nmsg tests into that directory so they are also skipped. + + -- Farsight Security Inc Thu, 29 May 2025 12:44:49 -0400 + go-nmsg (0.3.0-1) debian-fsi; urgency=medium * Add support for dnsobs message type. From d9e4d7d6b604c42006358963b5b92867e38652e8 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 12:49:17 -0400 Subject: [PATCH 31/39] Update dev package dependencies --- debian/control | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 8f9f01f..5f1be00 100644 --- a/debian/control +++ b/debian/control @@ -21,7 +21,12 @@ XS-Go-Import-Path: github.com/farsightsec/go-nmsg Package: golang-github-farsightsec-go-nmsg-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, + golang-github-dnstap-go-dnstap-dev, + golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, + golang-gopkg-yaml.v2-dev, + libnmsg-dev (>= 1.1.0~), + libzmq3-dev, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload format used by the C nmsg toolkit and library. It does not implement @@ -34,9 +39,12 @@ Description: Pure Golang NMSG Library Package: golang-github-farsightsec-go-nmsg-base-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - golang-github-farsightsec-go-nmsg-dev (= ${binary:Version}), golang-github-dnstap-go-dnstap-dev, + golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, + golang-gopkg-yaml.v2-dev, + libnmsg-dev (>= 1.1.0~), + libzmq3-dev, Description: NMSG vendor base encoding modules for Golang This package provides generated Go code from Protocol Buffers Version 2 specifications for NMSG vendor base encoding modules: Dns, DnsQR, Email, From acb442fb77fe8f4f753f56d8d9c90f33ca8b3f42 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 13:06:04 -0400 Subject: [PATCH 32/39] Bump version --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a7c9647..6fae9b2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -go-nmsg (0.3.0-2) debian-fsi; urgency=medium +go-nmsg (0.3.1-1) debian-fsi; urgency=medium * Update dependencies for package building. * Skip building cgo-nmsg. * Move cgo-nmsg tests into that directory so they are also skipped. - -- Farsight Security Inc Thu, 29 May 2025 12:44:49 -0400 + -- Farsight Security Inc Thu, 29 May 2025 13:05:44 -0400 go-nmsg (0.3.0-1) debian-fsi; urgency=medium From ee0cca29c671f3df23b45c6f16ae44622cda1666 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 13:14:00 -0400 Subject: [PATCH 33/39] Removed extra dev build deps --- debian/control | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian/control b/debian/control index 5f1be00..e1af814 100644 --- a/debian/control +++ b/debian/control @@ -25,7 +25,6 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, - libnmsg-dev (>= 1.1.0~), libzmq3-dev, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload @@ -40,11 +39,7 @@ Package: golang-github-farsightsec-go-nmsg-base-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-dnstap-go-dnstap-dev, - golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, - golang-gopkg-yaml.v2-dev, - libnmsg-dev (>= 1.1.0~), - libzmq3-dev, Description: NMSG vendor base encoding modules for Golang This package provides generated Go code from Protocol Buffers Version 2 specifications for NMSG vendor base encoding modules: Dns, DnsQR, Email, From 7bf4aa2e3ceff08f12037262ad6c0492b5f11c79 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 13:18:53 -0400 Subject: [PATCH 34/39] yaml is only used for testing --- debian/control | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/control b/debian/control index e1af814..85ac8eb 100644 --- a/debian/control +++ b/debian/control @@ -24,7 +24,6 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-dnstap-go-dnstap-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, - golang-gopkg-yaml.v2-dev, libzmq3-dev, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload From 873be6f18a1994dcb8678b7204feb351a5b15487 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 13:50:45 -0400 Subject: [PATCH 35/39] Need pkg-config for libzmq3-dev --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 85ac8eb..8e80d45 100644 --- a/debian/control +++ b/debian/control @@ -25,6 +25,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, libzmq3-dev, + pkg-config, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload format used by the C nmsg toolkit and library. It does not implement From 4d592852c2d4349ed8abaea90cb94115d825c629 Mon Sep 17 00:00:00 2001 From: Maximillian Crawford Date: Thu, 29 May 2025 15:39:40 -0400 Subject: [PATCH 36/39] Remove dependencies that are now provided by golang-github-pebbe-zmq4-dev --- debian/control | 4 ---- 1 file changed, 4 deletions(-) diff --git a/debian/control b/debian/control index 8e80d45..11ebe73 100644 --- a/debian/control +++ b/debian/control @@ -11,8 +11,6 @@ Build-Depends: golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, libnmsg-dev (>= 1.1.0~), - libzmq3-dev, - pkg-config, Standards-Version: 4.5.1 Vcs-Git: https://github.com/farsightsec/go-nmsg.git Vcs-Browser: https://github.com/farsightsec/go-nmsg @@ -24,8 +22,6 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-dnstap-go-dnstap-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, - libzmq3-dev, - pkg-config, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload format used by the C nmsg toolkit and library. It does not implement From edf2ebde0596e0b5e9e33651d463f7fb44b9b08f Mon Sep 17 00:00:00 2001 From: mcrawforddt <153119983+mcrawforddt@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:14:30 -0400 Subject: [PATCH 37/39] Update control --- debian/control | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control b/debian/control index 11ebe73..ffa73d2 100644 --- a/debian/control +++ b/debian/control @@ -11,6 +11,7 @@ Build-Depends: golang-google-protobuf-dev, golang-gopkg-yaml.v2-dev, libnmsg-dev (>= 1.1.0~), + pkg-config, Standards-Version: 4.5.1 Vcs-Git: https://github.com/farsightsec/go-nmsg.git Vcs-Browser: https://github.com/farsightsec/go-nmsg @@ -34,6 +35,7 @@ Description: Pure Golang NMSG Library Package: golang-github-farsightsec-go-nmsg-base-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, + golang-github-farsightsec-go-nmsg-dev (= ${binary:Version}), golang-github-dnstap-go-dnstap-dev, golang-google-protobuf-dev, Description: NMSG vendor base encoding modules for Golang From 77d3b0dfdc046923bbe353df81c7c61702f2e8a3 Mon Sep 17 00:00:00 2001 From: mcrawforddt <153119983+mcrawforddt@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:37:14 -0400 Subject: [PATCH 38/39] Deps for building included in -dev package --- debian/control | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index ffa73d2..2b06029 100644 --- a/debian/control +++ b/debian/control @@ -20,9 +20,20 @@ XS-Go-Import-Path: github.com/farsightsec/go-nmsg Package: golang-github-farsightsec-go-nmsg-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, + golang-any, + golang-gopkg-yaml.v2-dev, + golang-goprotobuf-dev, golang-github-dnstap-go-dnstap-dev, + golang-github-farsightsec-go-config-dev, + golang-github-farsightsec-go-config-env-dev, + golang-github-farsightsec-go-nmsg-dev (>= 0.3.0~), + golang-github-farsightsec-go-nmsg-base-dev, + golang-github-farsightsec-go-nmsg-sie-dev, + golang-github-farsightsec-sielink-dev, + golang-github-farsightsec-sielink-client-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, + libzmq3-dev, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload format used by the C nmsg toolkit and library. It does not implement @@ -36,8 +47,6 @@ Package: golang-github-farsightsec-go-nmsg-base-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, golang-github-farsightsec-go-nmsg-dev (= ${binary:Version}), - golang-github-dnstap-go-dnstap-dev, - golang-google-protobuf-dev, Description: NMSG vendor base encoding modules for Golang This package provides generated Go code from Protocol Buffers Version 2 specifications for NMSG vendor base encoding modules: Dns, DnsQR, Email, From aa9a15b290cdab549af805a7e1f2e7d4072e2c3b Mon Sep 17 00:00:00 2001 From: mcrawforddt <153119983+mcrawforddt@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:51:45 -0400 Subject: [PATCH 39/39] Wrong place --- debian/control | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/debian/control b/debian/control index 2b06029..b2a210e 100644 --- a/debian/control +++ b/debian/control @@ -20,20 +20,9 @@ XS-Go-Import-Path: github.com/farsightsec/go-nmsg Package: golang-github-farsightsec-go-nmsg-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - golang-any, - golang-gopkg-yaml.v2-dev, - golang-goprotobuf-dev, golang-github-dnstap-go-dnstap-dev, - golang-github-farsightsec-go-config-dev, - golang-github-farsightsec-go-config-env-dev, - golang-github-farsightsec-go-nmsg-dev (>= 0.3.0~), - golang-github-farsightsec-go-nmsg-base-dev, - golang-github-farsightsec-go-nmsg-sie-dev, - golang-github-farsightsec-sielink-dev, - golang-github-farsightsec-sielink-client-dev, golang-github-pebbe-zmq4-dev, golang-google-protobuf-dev, - libzmq3-dev, Description: Pure Golang NMSG Library go-nmsg is a pure go implementation of the NMSG container and payload format used by the C nmsg toolkit and library. It does not implement