code: func SendPackets(memif *libmemif.Memif, queueID uint8) {
  	defer wg.Done()
  
  	counter := 0
  	for {
  		select {
  		case <-time.After(3 * time.Second):
  			counter++
  			// Prepare fake packets.
  			packets := []libmemif.RawPacketData{
  				libmemif.RawPacketData("Packet #1 in burst number " + strconv.Itoa(counter)),
  				libmemif.RawPacketData("Packet #2 in burst number " + strconv.Itoa(counter)),
  				libmemif.RawPacketData("Packet #3 in burst number " + strconv.Itoa(counter)),
  			}
  			// Send the packets. We may not be able to do it in one burst if the ring
  			// is (almost) full or the internal buffer cannot contain it.
  			sent := 0
  			for {
  				count, err := memif.TxBurst(queueID, packets[sent:])
  				if err != nil {
  					fmt.Printf("libmemif.Memif.TxBurst() error: %v\n", err)
  					break
  				} else {
  					fmt.Printf("libmemif.Memif.TxBurst() has sent %d packets.\n", count)
  					sent += int(count)
  					if sent == len(packets) {
  						break
  					}
  				}
  			}
  		case <-stopCh:
  			return
  		}
  	}
  }
docs: // SendPackets keeps sending bursts of 3 raw-data packets every 3 seconds into
  // the selected queue.