package main import ( "log" "github.com/CloudNativeDataPlane/cndp/lang/go/bindings/cne" ) var cfg = ` { "defaults": { "bufcnt": 2, "bufsz": 2, "rxdesc": 2, "txdesc": 2, "cache": 64, "mtype": "1GB" }, "umems": { "umem0": { "bufcnt": 2, "bufsz": 2, "mtype": "1GB", "regions": [ 2 ], "rxdesc": 2, "txdesc": 2, }, }, "lports": { "enp3s0f1:0": { "pmd": "net_af_xdp", "qid": 0, "umem": "umem0", "region": 0, } }, "lcore-groups": { "initial": [ 8 ] }, "threads": { "main": { "group": "initial", "description": "Main Thread" } } } ` func main() { sys, err := cne.OpenWithString(cfg) if err != nil { log.Fatalln("create ring failed:", err) } lports := sys.LPortList() if len(lports) != 1 { log.Fatalln("invalid lport count:", len(lports)) } lportId := lports[0].LPortID() count := 0 pkts := make([]*cne.Packet, 64) for { n := cne.RxBurst(lportId, pkts) if n < 0 { log.Fatalln("RxBurst failed:", n) } if n == 0 { continue } for i := 0; i < n; i++ { count++ l := len(cne.PktData(pkts[i])) if count%1024 == 0 { log.Println("received", count) } if l == 0 { log.Fatalln("zero length packet:", count) } } cne.PktBufferFree(pkts[:n]) } }