Открытие pfring из Go: ошибка pfring NewRing: нет такого устройства
Я хочу вызвать pf_ring из кода Go, используяgithub.com/google/gopacket/pfring
package и не могу заставить его работать на Debian 11 (мой код работает на Debian 10).
Это мой код Go:
package main
import (
"github.com/google/gopacket/pfring"
"log"
)
func main() {
_, err := pfring.NewRing("eno1@0", 1574, pfring.FlagPromisc|pfring.Flag(1<<14))
if err == nil {
log.Printf("Success!")
return
}
log.Fatalf("Failure: %s", err)
}
И когда я запускаю его:
# ./test-go
2023/01/24 10:12:25 Failure: pfring NewRing error: no such device
Очевидно, интерфейс eno1 существует:
# pf_ringcfg --list-interfaces
Name: eno1 Driver: i40e RSS: 12 [Supported by ZC]
Name: enp3s0f1 Driver: i40e RSS: 12 [Supported by ZC]
Name: enx0a229512eeb9 Driver: cdc_ether RSS: 1 [Linux Driver]
Странно то, что тот же код, написанный на C, работает:
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <pfring.h>
int main() {
pfring* ring = pfring_open("eno1@0", 1574, PF_RING_PROMISC | PF_RING_ZC_NOT_REPROGRAM_RSS);
if (ring != NULL) {
printf("Success!\n");
exit(0);
}
int e = errno;
char* msg = strerror(e);
printf("Failure %d: %s\n", e, msg);
exit(1);
}
# ./test-c
Success!
Есть идеи?