return false;
}
-static PHInstance* get_instance_by_service(FrameworkPolicy* fp, const char* keyword)
+static PHInstance* get_instance_by_service(FrameworkPolicy* fp, const char* keyword,
+ InspectorType type)
{
std::vector<PHInstance*>::iterator it;
for ( it = fp->ilist.begin(); it != fp->ilist.end(); ++it )
{
- if ( (*it)->pp_class.api.service && !strcmp((*it)->pp_class.api.service, keyword) )
+ if ( (*it)->pp_class.api.service && !strcmp((*it)->pp_class.api.service, keyword) &&
+ (*it)->pp_class.api.type == type )
return *it;
}
return nullptr;
return p->handler;
}
-Inspector* InspectorManager::get_inspector_by_service(const char* key)
+Inspector* InspectorManager::get_inspector_by_service(const char* key, InspectorType type)
{
InspectionPolicy* pi = get_inspection_policy();
if ( !pi || !pi->framework_policy )
return nullptr;
- PHInstance* p = get_instance_by_service(pi->framework_policy, key);
+ PHInstance* p = get_instance_by_service(pi->framework_policy, key, type);
if ( !p )
return nullptr;
SO_PUBLIC static Inspector* get_inspector(
const char* key, bool dflt_only = false, const SnortConfig* = nullptr);
- SO_PUBLIC static Inspector* get_inspector_by_service(const char*);
+ SO_PUBLIC static Inspector* get_inspector_by_service(const char*, InspectorType type = IT_SERVICE);
SO_PUBLIC static Binder* get_binder();
const SnortConfig* sc = SnortConfig::get_conf();
const char* s = sc->proto_ref->get_name(flow.ssn_state.snort_protocol_id);
- return InspectorManager::get_inspector_by_service(s);
+ return InspectorManager::get_inspector_by_service(s, IT_SERVICE);
}
static Inspector* get_gadget_by_service(const char* service)
const SnortProtocolId id = sc->proto_ref->find(service);
const char* s = sc->proto_ref->get_name(id);
- return InspectorManager::get_inspector_by_service(s);
+ return InspectorManager::get_inspector_by_service(s, IT_SERVICE);
}
static std::string to_string(const sfip_var_t* list)