-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
It would be nice to be able to set the socket in promiscuous mode.
perhaps something like this:
func (h *TPacket) SetPromiscMode(ifaceName string) error {
ifIndex := 0
// An empty string here means to listen to all interfaces
if ifaceName != "" {
iface, err := net.InterfaceByName(ifaceName)
if err != nil {
return fmt.Errorf("InterfaceByName: %v", err)
}
ifIndex = iface.Index
}
var sp C.struct_packet_mreq
sp.mr_ifindex = C.int(ifIndex)
sp.mr_type = unix.PACKET_MR_PROMISC
sp.mr_alen = 0
sp.mr_address = [8]C.uchar{0,0,0,0,0,0,0,0}
if err := setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_ADD_MEMBERSHIP, unsafe.Pointer(&sp), unsafe.Sizeof(sp)); err != nil {
return fmt.Errorf("setsockopt promisc mode: %v", err)
}
return nil
}
Metadata
Metadata
Assignees
Labels
No labels