--- nono/host/netdriver_bpf.cpp 2026/04/29 17:04:28 1.1 +++ nono/host/netdriver_bpf.cpp 2026/04/29 17:04:34 1.1.1.3 @@ -1,9 +1,9 @@ // // nono -// Copyright (C) 2019 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // -#include "header.h" #include "netdriver_bpf.h" #include "cvprompt.h" #include "mystring.h" @@ -23,9 +23,9 @@ #include // コンストラクタ -NetDriverBPF::NetDriverBPF(EthernetDevice *p, - std::mutex *m, std::condition_variable *c) - : inherited("BPF", p, m, c) +NetDriverBPF::NetDriverBPF(EthernetDevice *parent_, + std::mutex *mtx_, std::condition_variable *cv_) + : inherited("BPF", parent_, mtx_, cv_) { fd = -1; } @@ -34,10 +34,6 @@ NetDriverBPF::NetDriverBPF(EthernetDevic NetDriverBPF::~NetDriverBPF() { Close(); - - if (bpfbuf) { - delete[] bpfbuf; - } } // 初期化 & オープン @@ -142,11 +138,8 @@ NetDriverBPF::Init() // 受信用バッファを確保 try { - bpfbuf = new char [bpfbuflen]; + bpfbuf.reset(new char [bpfbuflen]); } catch (...) { - bpfbuf = NULL; - } - if (bpfbuf == NULL) { warnx("NetDriverBPF.Open: %s(%s): memory allocation failed", devpath.c_str(), ifname.c_str()); goto abort; @@ -271,7 +264,7 @@ NetDriverBPF::ThreadRun() // 自動的にデバイスに着信があったことになるはず assert(r > 0); - n = read(fd, bpfbuf, bpfbuflen); + n = read(fd, bpfbuf.get(), bpfbuflen); if (n == -1) { if (errno == EINTR) { continue; @@ -282,10 +275,10 @@ NetDriverBPF::ThreadRun() if (n == 0) { // EOF return; } - bpfptr = bpfbuf; + bpfptr = bpfbuf.get(); bpfcaplen = n; - while (bpfptr < bpfbuf + bpfcaplen) { + while (bpfptr < bpfbuf.get() + bpfcaplen) { uint8 buf[1600]; // BPF ヘッダを除いた部分