From d52d472b6ea22e20774e47d15a8e420a03fcfc2a Mon Sep 17 00:00:00 2001 From: Tom Barbette Date: Fri, 22 Jan 2021 20:21:57 +0100 Subject: [PATCH] Fix last commit --- elements/standard/search.cc | 21 ++++++++++++--------- elements/standard/search.hh | 2 ++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/elements/standard/search.cc b/elements/standard/search.cc index c9b94e4505..464d2baab0 100644 --- a/elements/standard/search.cc +++ b/elements/standard/search.cc @@ -55,13 +55,12 @@ Search::configure(Vector &conf, ErrorHandler *errh) return 0; } -void -Search::push(int, Packet *p) { +int +Search::action(Packet* p) { const char* f = String::make_stable((const char*)p->data(), p->length()).search(_pattern); if (f == 0) { - output(1).push(p); - return; + return 1; } unsigned n = (f - (const char*)p->data()); @@ -70,16 +69,20 @@ Search::push(int, Packet *p) { p->pull(n); if (_set_anno) p->set_anno_u16(_anno, p->anno_u16(_anno) + n); - output(0).push(p); + return 0; +} + +void +Search::push(int, Packet *p) { + + int o = action(p); + output(o).push(p); } #if HAVE_BATCH void Search::push_batch(int port, PacketBatch *batch) { - FOR_EACH_PACKET(batch, p) { - Search::push(port,p); - } - output(0).push_batch(batch); + CLASSIFY_EACH_PACKET(2, action, batch, checked_output_push_batch); } #endif diff --git a/elements/standard/search.hh b/elements/standard/search.hh index 1c23a88ccd..6ffa12c1ec 100644 --- a/elements/standard/search.hh +++ b/elements/standard/search.hh @@ -55,6 +55,8 @@ class Search : public BatchElement { public: void push_batch(int, PacketBatch *) override; #endif + int action(Packet* p); + private: int _anno;