Estoy tratando de recibir un tipo particular de paquete independientemente de la interfaz a la que llegue.
fd, err := syscall.Socket(syscall.AF_PACKET, syscall.SOCK_RAW, int(htons(0x88cc))) for { len, sa, err := syscall.Recvfrom(fd, buf, 0) <process packet> }Si bien esto funciona, solo funciona cuando parece que algo más se une a una interfaz. Es decir, si la aplicación se está ejecutando e inicio un tcpdump filtrado a los datos deseados, solo entonces mi aplicación recibirá el tráfico deseado.
¿Esto se debe a que las interfaces filtran el tráfico no dirigido? ¿Cómo puede AF_PACKET escuchar un tipo de éter particular en todas las interfaces de un sistema?