作者:pot
项目:golibpca
// Activate should only be called on a Pcap that was obtained through Create.
func (p *Pcap) Activate() error {
res := int32(C.pcap_activate(p.cptr))
if res < 0 {
return fmt.Errorf("%s(errnum=%d)", Statustostr(res), res)
}
return nil
}
作者:kelixi
项目:go.pk
// Activate the packet source. Note that after calling this method it will not
// be possible to change the packet source configuration (MTU, promiscuous mode,
// monitor mode, ...)
func (h *Handle) Activate() error {
err := C.pcap_activate(h.pcap)
if err < 0 {
return fmt.Errorf("Could not activate: %s", h.get_error())
}
return nil
}
作者:doncker
项目:gopacke
// Activate activates the handle. The current InactiveHandle becomes invalid
// and all future function calls on it will fail.
func (p *InactiveHandle) Activate() (*Handle, error) {
err := activateError(C.pcap_activate(p.cptr))
if err != aeNoError {
return nil, err
}
h := &Handle{cptr: p.cptr, device: p.device, blockForever: p.blockForever}
p.cptr = nil
return h, nil
}
作者:chrlut
项目:limux-gos
func main() {
var errbuf = (*C.char)(C.malloc(C.PCAP_ERRBUF_SIZE))
defer C.free(unsafe.Pointer(errbuf))
var source = C.CString("any")
defer C.free(unsafe.Pointer(source))
pcap_handle := C.pcap_create(source, errbuf)
if pcap_handle == nil {
panic("pcap_handle")
}
C.pcap_set_buffer_size(pcap_handle, 2*1024*1024)
C.pcap_set_promisc(pcap_handle, 1)
C.pcap_set_snaplen(pcap_handle, 512) // more than enough to recognize a WOL packet
C.pcap_setdirection(pcap_handle, C.PCAP_D_IN)
if C.pcap_activate(pcap_handle) != 0 {
panic(C.GoString(C.pcap_geterr(pcap_handle)))
}
var bpf_program C.struct_bpf_program
if C.pcap_compile(pcap_handle, &bpf_program, pcap_filter, 0, 0) != 0 {
panic(C.GoString(C.pcap_geterr(pcap_handle)))
}
if C.pcap_setfilter(pcap_handle, &bpf_program) != 0 {
panic(C.GoString(C.pcap_geterr(pcap_handle)))
}
for {
var pkt_header *C.struct_pcap_pkthdr
var pkt_data *C.u_char
if C.pcap_next_ex(pcap_handle, &pkt_header, &pkt_data) < 0 {
panic(C.GoString(C.pcap_geterr(pcap_handle)))
}
if pkt_data == nil {
continue
}
data := make([]byte, pkt_header.caplen)
copy(data, (*(*[10000000]byte)(unsafe.Pointer(pkt_data)))[0:])
from_mac, to_mac := checkwol(data)
if from_mac != "" {
fmt.Printf("%v: %v sends WOL to %v\n", time.Now(), from_mac, to_mac)
}
}
}
作者:ThomsonReutersEiko
项目:pca
// Activate a packet capture handle to look at packets on the network, with the options that
// were set on the handle being in effect.
func (p *Pcap) Activate() error {
if C.pcap_activate(p.cptr) != 0 {
return p.Geterror()
}
return nil
}
作者:pombredann
项目:gear
func (p *Handle) activation() {
C.pcap_activate(p.cptr)
}