Membuka pfring daripada Go: pfring NewRing Ralat: Tiada peranti sedemikian

王林
Lepaskan: 2024-02-10 17:30:09
ke hadapan
423 orang telah melayarinya

从 Go 打开 pfring:pfring NewRing 错误:没有这样的设备

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.

Kandungan soalan

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)
}
Salin selepas log masuk

Apabila saya menjalankannya:

# ./test-go 
2023/01/24 10:12:25 failure: pfring newring error: no such device
Salin selepas log masuk

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]
Salin selepas log masuk

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);
}
Salin selepas log masuk
# ./test-c 
Success!
Salin selepas log masuk

Ada idea?

Penyelesaian

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!