Rumah >pembangunan bahagian belakang >Golang >Membuka pfring daripada Go: pfring NewRing Ralat: Tiada peranti sedemikian
Apabila melakukan pengaturcaraan rangkaian, kita sering menghadapi beberapa ralat dan pengecualian. Antaranya, masalah "pfring NewRing error: No such device" yang berlaku semasa membuka perpustakaan pfring daripada bahasa Go ialah ralat biasa yang melanda pembangun. Editor PHP Zimo akan menganalisis sebab dan penyelesaian untuk ralat ini dan membantu anda menyelesaikan masalah ini dengan lancar.
Saya ingin memanggil pf_ring daripada kod go menggunakan pakej github.com/google/gopacket/pfring
tetapi tidak dapat menjalankannya pada debian 11 (kod saya berjalan pada debian 10).
Ini kod pergi saya:
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) }
Apabila saya menjalankannya:
# ./test-go 2023/01/24 10:12:25 failure: pfring newring error: no such device
Nampaknya antara muka eno1 wujud:
# 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]
Perkara yang pelik ialah kod yang sama yang ditulis dalam c juga berfungsi:
#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!
Ada idea?
Ternyata ini adalah pepijat dalam gopacket/pfring, lihat Isu #147 dan membetulkan. Panggilan perpustakaan ke pfring_open
melaporkan tiada ralat, tetapi perpustakaan telah menyalahtafsir kod pemulangan.
Atas ialah kandungan terperinci Membuka pfring daripada Go: pfring NewRing Ralat: Tiada peranti sedemikian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!