nullptr,
nullptr
},
- nullptr,
- nullptr,
- nullptr,
- nullptr,
+ nullptr, // pinit
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
ctor,
dtor,
};
mod_ctor,
mod_dtor
},
- nullptr,
- nullptr,
- nullptr,
- nullptr,
+ nullptr, // pinit
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
ctor,
dtor,
};
PROTO_BIT__UDP,
nullptr, // service
nullptr, // contents
- nullptr, // init
- nullptr, // term
- dpx_ctor,
- dpx_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ dpx_ctor,
+ dpx_dtor,
nullptr, // ssn
nullptr // reset
};
},
OPT_TYPE_DETECTION,
1, PROTO_BIT__TCP,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
+ nullptr, // pinit
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
urg_ctor,
urg_dtor,
nullptr
},
sid_18758_gz,
sid_18758_gz_len,
- nullptr,
- nullptr,
- nullptr,
- nullptr,
+ nullptr, // pinit
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
ctor,
dtor,
};
BaseApi base;
// these may be nullptr
- CdAuxFunc ginit; // initialize global plugin data
- CdAuxFunc gterm; // clean-up pinit()
+ CdAuxFunc pinit; // initialize global plugin data
+ CdAuxFunc pterm; // clean-up pinit()
CdAuxFunc tinit; // initialize thread-local plugin data
CdAuxFunc tterm; // clean-up tinit()
virtual void show(SnortConfig*) { };
// packet thread functions
- virtual void pinit() { };
- virtual void pterm() { };
+ virtual void tinit() { };
+ virtual void tterm() { };
virtual void eval(Packet*) = 0;
virtual void meta(int, const uint8_t*) { };
const char** buffers; // null terminated list of exported buffers
const char* service; // nullptr when type != IT_SERVICE
- // main thread funcs - parse time data only
- InspectFunc init; // allocate process static data
- InspectFunc term; // release init() data
+ InspectFunc pinit; // plugin init
+ InspectFunc pterm; // cleanup pinit()
+ InspectFunc tinit; // thread local init
+ InspectFunc tterm; // cleanup tinit()
InspectNew ctor; // instantiate inspector from Module data
InspectDelFunc dtor; // release inspector instance
-
- // packet thread funcs - runtime data only
- InspectFunc pinit; // plugin thread local allocation
- InspectFunc pterm; // plugin thread local cleanup
InspectSsnFunc ssn; // purge caches
InspectFunc reset; // clear stats
};
unsigned max_per_rule;
unsigned protos;
- IpsOptFunc ginit;
- IpsOptFunc gterm;
+ IpsOptFunc pinit;
+ IpsOptFunc pterm;
IpsOptFunc tinit;
IpsOptFunc tterm;
IpsNewFunc ctor;
for ( auto* p : s_handlers )
{
- if ( !p->init && p->api.term )
- p->api.term();
+ if ( !p->init && p->api.pterm )
+ p->api.pterm();
delete p;
}
{
if ( p->init )
{
- if ( p->api.init )
- p->api.init();
+ if ( p->api.pinit )
+ p->api.pinit();
p->init = false;
}
PHClass* ppc = new PHClass(p->api);
Inspector::slot = get_instance_id();
for ( auto* p : sc->framework_config->clist )
- if ( p->api.pinit )
- p->api.pinit();
+ if ( p->api.tinit )
+ p->api.tinit();
InspectionPolicy* pi = get_inspection_policy();
return;
for ( auto* p : pi->framework_policy->ilist )
- p->handler->pinit();
+ p->handler->tinit();
}
void InspectorManager::thread_term(SnortConfig* sc)
return;
for ( auto* p : pi->framework_policy->ilist )
- p->handler->pterm();
+ p->handler->tterm();
for ( auto* p : sc->framework_config->clist )
- if ( p->api.pterm )
- p->api.pterm();
+ if ( p->api.tterm )
+ p->api.tterm();
}
//-------------------------------------------------------------------------
if ( !opt->init )
{
- if ( opt->api->ginit )
- opt->api->ginit(sc);
+ if ( opt->api->pinit )
+ opt->api->pinit(sc);
opt->init = true;
}
// FIXIT verify api->protos and api->max_per_rule
void IpsManager::global_term(SnortConfig* sc)
{
for ( auto* p : s_options )
- if ( p->init && p->api->gterm )
+ if ( p->init && p->api->pterm )
{
- p->api->gterm(sc);
+ p->api->pterm(sc);
p->init = false;
}
}
{
for ( auto* p : s_codecs )
{
- if(p->gterm)
- p->gterm();
+ if(p->pterm)
+ p->pterm();
uint8_t index = get_codec(p->base.name);
if( index != 0)
FatalError("A maximum of 256 codecs can be registered\n");
// global init here to ensure the global policy has already been configured
- if (cd_api->ginit)
- cd_api->ginit();
+ if (cd_api->pinit)
+ cd_api->pinit();
Codec *cd = cd_api->ctor(m);
cd->get_protocol_ids(ids);
api.base.version = ver;
api.base.api_version = IPSAPI_VERSION;
- api.ginit = api.gterm = nullptr;
+ api.pinit = api.pterm = nullptr;
api.tinit = api.tterm = nullptr;
api.ctor = ctor;
PROTO_BIT__ARP,
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- as_ctor,
- as_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ as_ctor,
+ as_dtor,
nullptr, // ssn
nullptr, // reset
};
PROTO_BIT__ALL,
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- bind_ctor,
- bind_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ bind_ctor,
+ bind_dtor,
nullptr, // ssn
nullptr // reset
};
PROTO_BITS,
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- no_ctor,
- no_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ no_ctor,
+ no_dtor,
nullptr, // ssn
nullptr // reset
};
void eval(Packet*);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
void reset();
private:
return true;
}
-void PerfMonitor::pinit()
+void PerfMonitor::tinit()
{
InitPerfStats(&config);
}
+void PerfMonitor::tterm()
+{
+ if ( config.perf_flags & SFPERF_SUMMARY )
+ sfPerfStatsSummary(&config);
+
+ sfCloseBaseStatsFile(&config);
+ sfCloseFlowStatsFile(&config);
+ sfCloseFlowIPStatsFile(&config);
+
+ FreeFlowStats(&sfFlow);
+#ifdef LINUX_SMP
+ FreeProcPidStats(&sfBase.sfProcPidStats);
+#endif
+}
+
void PerfMonitor::eval(Packet *p)
{
static THREAD_LOCAL bool first = true;
MODULE_PROFILE_END(perfmonStats);
}
-void PerfMonitor::pterm()
-{
- if ( config.perf_flags & SFPERF_SUMMARY )
- sfPerfStatsSummary(&config);
-
- sfCloseBaseStatsFile(&config);
- sfCloseFlowStatsFile(&config);
- sfCloseFlowIPStatsFile(&config);
-
- FreeFlowStats(&sfFlow);
-#ifdef LINUX_SMP
- FreeProcPidStats(&sfBase.sfProcPidStats);
-#endif
-}
-
void PerfMonitor::reset()
{
InitPerfStats(&config);
PROTO_BIT__ALL,
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- pm_ctor,
- pm_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ pm_ctor,
+ pm_dtor,
nullptr, // ssn
nullptr // reset
};
return true;
}
-void PortScan::pinit()
+void PortScan::tinit()
{
g_tmp_pkt = PacketManager::encode_new();
ps_init_hash(config->common->memcap);
}
-void PortScan::pterm()
+void PortScan::tterm()
{
fclose(g_logfile);
ps_cleanup();
PROTO_BIT__IP|PROTO_BIT__ICMP|PROTO_BIT__TCP|PROTO_BIT__UDP, // FIXIT dynamic assign
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- sp_ctor,
- sp_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ sp_ctor,
+ sp_dtor,
nullptr, // ssn
sp_reset
};
void eval(Packet*);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
private:
void ps_parse(SnortConfig*, char *);
nullptr, // buffers
nullptr, // service
bo_init,
- nullptr, // term
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
bo_ctor,
bo_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
nullptr, // buffers
"ftp",
fs_init,
- nullptr, // term
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
fs_ctor,
fs_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
nullptr, // buffers
"ftp-data",
fd_init,
- nullptr, // term
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
fd_ctor,
fd_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
nullptr, // buffers
"telnet",
tn_init,
- nullptr, // term
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
tn_ctor,
tn_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
bool get_buf(InspectionBuffer::Type, Packet*, InspectionBuffer&);
bool get_buf(unsigned, Packet*, InspectionBuffer&);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
private:
HTTPINSPECT_CONF* config;
return !HttpInspectVerifyPolicy(sc, config);
}
-void HttpInspect::pinit()
+void HttpInspect::tinit()
{
memset(&hi_stats, 0, sizeof(HIStats));
}
}
-void HttpInspect::pterm()
+void HttpInspect::tterm()
{
}
"http",
hs_init,
hs_term,
+ nullptr, // tinit
+ nullptr, // tterm
hs_ctor,
hs_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
"http",
NHttpApi::nhttp_init,
NHttpApi::nhttp_term,
+ NHttpApi::nhttp_tinit,
+ NHttpApi::nhttp_tterm,
NHttpApi::nhttp_ctor,
NHttpApi::nhttp_dtor,
- NHttpApi::nhttp_pinit,
- NHttpApi::nhttp_pterm,
nullptr, // ssn
nullptr // reset
};
static void nhttp_term() {};
static Inspector* nhttp_ctor(Module* mod);
static void nhttp_dtor(Inspector* p) { delete p; };
- static void nhttp_pinit() {};
- static void nhttp_pterm() {};
+ static void nhttp_tinit() {};
+ static void nhttp_tterm() {};
};
#endif
return 0; // 0 = good, -1 = bad
}
-void NHttpInspect::pinit()
+void NHttpInspect::tinit()
{
}
-void NHttpInspect::pterm()
+void NHttpInspect::tterm()
{
}
void show(SnortConfig*);
void eval(Packet*);
bool enabled();
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
NHttpStreamSplitter* get_splitter(bool isClientToServer) { return new NHttpStreamSplitter(isClientToServer); };
private:
nullptr, // buffers
"sunrpc",
rd_init,
- nullptr, // term
+ nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
rd_ctor,
rd_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
nullptr, // service
nullptr, // init
nullptr, // term
+ nullptr, // tinit
+ nullptr, // tterm
wiz_ctor,
wiz_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
void show(SnortConfig*);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
void eval(Packet*);
config = c;
}
-void StreamBase::pinit()
+void StreamBase::tinit()
{
assert(!flow_con);
Inspector* pi = InspectorManager::get_inspector("binder");
}
}
-void StreamBase::pterm()
+void StreamBase::tterm()
{
flow_con->purge_flows(IPPROTO_TCP);
flow_con->purge_flows(IPPROTO_UDP);
nullptr, // service
nullptr, // init
nullptr, // term
+ nullptr, // tinit
+ nullptr, // tterm
base_ctor,
base_dtor,
- nullptr, // pinit
- nullptr, // pterm
nullptr, // ssn
nullptr // reset
};
nullptr, // service
nullptr, // init
nullptr, // term
+ nullptr, // tinit
+ nullptr, // tterm
icmp_ctor,
icmp_dtor,
- nullptr, // pinit
- nullptr, // pterm
icmp_ssn,
icmp_reset
};
return true;
}
-void Defrag::pinit()
+void Defrag::tinit()
{
defrag_pkt = PacketManager::encode_new();
encap_defrag_pkt = PacketManager::encode_new();
pkt_snaplen = DAQ_GetSnapLen();
}
-void Defrag::pterm()
+void Defrag::tterm()
{
PacketManager::encode_delete(defrag_pkt);
defrag_pkt = NULL;
void process(Packet*, FragTracker*);
void cleanup(FragTracker*);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
static void init();
static void sum();
int verify_config(SnortConfig*);
void show(SnortConfig*);
- void pinit();
- void pterm();
+ void tinit();
+ void tterm();
void eval(Packet*);
return 0;
}
-void StreamIp::pinit()
+void StreamIp::tinit()
{
- defrag->pinit();
+ defrag->tinit();
}
-void StreamIp::pterm()
+void StreamIp::tterm()
{
- defrag->pterm();
+ defrag->tterm();
}
void StreamIp::show(SnortConfig* sc)
PROTO_BIT__IP,
nullptr, // buffers
nullptr, // service
- nullptr, // init
- nullptr, // term
- ip_ctor,
- ip_dtor,
nullptr, // pinit
nullptr, // pterm
+ nullptr, // tinit
+ nullptr, // tterm
+ ip_ctor,
+ ip_dtor,
ip_ssn,
nullptr // reset
};
return new TcpSession(lws);
}
-void tcp_pinit()
+void tcp_tinit()
{
tcp_sinit();
}
-void tcp_pterm()
+void tcp_tterm()
{
tcp_sterm();
}
nullptr, // service
nullptr, // init
nullptr, // term
+ tcp_tinit,
+ tcp_tterm,
tcp_ctor,
tcp_dtor,
- tcp_pinit,
- tcp_pterm,
tcp_ssn,
tcp_reset
};
nullptr, // service
nullptr, // init
nullptr, // term
+ nullptr, // tinit
+ nullptr, // tterm
udp_ctor,
udp_dtor,
- nullptr, // pinit
- nullptr, // pterm
udp_ssn,
udp_reset
};