|
|
|
|
@ -245,6 +245,21 @@ static void AppLayerInspectEngineRegisterInternal(const char *name, AppProto alp
|
|
|
|
|
void DetectAppLayerInspectEngineRegister(const char *name, AppProto alproto, uint32_t dir,
|
|
|
|
|
int progress, InspectEngineFuncPtr Callback, InspectionBufferGetDataPtr GetData)
|
|
|
|
|
{
|
|
|
|
|
/* before adding, check that we don't add a duplicate entry, which will
|
|
|
|
|
* propegate all the way into the packet runtime if allowed. */
|
|
|
|
|
DetectEngineAppInspectionEngine *t = g_app_inspect_engines;
|
|
|
|
|
while (t != NULL) {
|
|
|
|
|
const uint32_t t_direction = t->dir == 0 ? SIG_FLAG_TOSERVER : SIG_FLAG_TOCLIENT;
|
|
|
|
|
const int sm_list = DetectBufferTypeGetByName(name);
|
|
|
|
|
|
|
|
|
|
if (t->sm_list == sm_list && t->alproto == alproto && t_direction == dir &&
|
|
|
|
|
t->progress == progress && t->v2.Callback == Callback && t->v2.GetData == GetData) {
|
|
|
|
|
DEBUG_VALIDATE_BUG_ON(1);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
t = t->next;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AppLayerInspectEngineRegisterInternal(name, alproto, dir, progress, Callback, GetData, NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|