--- nono/host/netdriver_bpf.cpp 2026/04/29 17:05:47 1.1.1.8 +++ nono/host/netdriver_bpf.cpp 2026/04/29 17:06:02 1.1.1.9 @@ -168,7 +168,7 @@ NetDriverBPF::Close() // モニタ (ドライバ依存情報のみ) void -NetDriverBPF::MonitorUpdateMD(TextScreen& screen, int y) +NetDriverBPF::MonitorScreenMD(TextScreen& screen, int y) { screen.Print(0, y++, "Device : %s", devpath.c_str()); screen.Print(0, y++, "Interface: %s", ifname.c_str()); @@ -182,11 +182,11 @@ NetDriverBPF::Write(const void *buf, int n = write(fd, buf, buflen); if (n < 0) { - putmsg(0, "write: %s", strerror(errno)); + putmsg(0, "write(%d): %s", buflen, strerror(errno)); return; } if (n < buflen) { - putmsg(0, "write: short"); + putmsg(0, "write(%d): short(%zd)", buflen, n); return; } } @@ -209,10 +209,7 @@ NetDriverBPF::Read(NetPacket *p) // BPF ヘッダを除いた部分が 1 パケット struct bpf_hdr *bh = (struct bpf_hdr *)bpfptr; - - NetPacket& packet = *p; - memcpy(packet.data(), bpfptr + bh->bh_hdrlen, bh->bh_caplen); - packet.length = bh->bh_caplen; + p->Assign(bpfptr + bh->bh_hdrlen, bh->bh_caplen); // 次のフレームの先頭を指す int framelen = BPF_WORDALIGN(bh->bh_hdrlen + bh->bh_caplen);