//export goCallBack func goCallBack(user *C.u_char, pkthdr_ptr *C.struct_pcap_pkthdr, buf_ptr *C.u_char) { p := (*Pcap)(unsafe.Pointer(user)) p.m.Lock() packet := pkt.NewPacket(unsafe.Pointer(pkthdr_ptr), unsafe.Pointer(buf_ptr)) p.m.Unlock() p.Pchan <- packet p.pktCnt++ }
// NextEx reads the next packet and returns a success/failure indication: // // 1 the packet was read without problems // 0 packets are being read from a live capture, and the timeout expired // -1 an error occurred while reading the packet // -2 packets are being read from a file, and there are no more packets to read func (p *Pcap) NextEx() (*pkt.Packet, int32) { var pkthdr_ptr *C.struct_pcap_pkthdr var buf_ptr *C.u_char res := int32(C.pcap_next_ex(p.cptr, &pkthdr_ptr, &buf_ptr)) if res == 1 { p.m.Lock() packet := pkt.NewPacket(unsafe.Pointer(pkthdr_ptr), unsafe.Pointer(buf_ptr)) p.m.Unlock() p.pktCnt++ return packet, res } return nil, res }