app-layer: helper function AppProtoNewProtoFromString

So that we do not have to know g_alproto_max to register
dynamically a new protocol from its name
pull/12965/head
Philippe Antoine 7 months ago committed by Victor Julien
parent 6750274d48
commit 850bd72399

@ -52,6 +52,9 @@ extern "C" {
#[doc = " \\brief Maps the ALPROTO_*, to its string equivalent.\n\n \\param alproto App layer protocol id.\n\n \\retval String equivalent for the alproto."]
pub fn AppProtoToString(alproto: AppProto) -> *const ::std::os::raw::c_char;
}
extern "C" {
pub fn AppProtoNewProtoFromString(proto_name: *const ::std::os::raw::c_char) -> AppProto;
}
extern "C" {
pub fn AppProtoRegisterProtoString(
alproto: AppProto, proto_name: *const ::std::os::raw::c_char,

@ -71,6 +71,12 @@ AppProto StringToAppProto(const char *proto_name)
return ALPROTO_UNKNOWN;
}
AppProto AppProtoNewProtoFromString(const char *proto_name)
{
AppProtoRegisterProtoString(g_alproto_max, proto_name);
return g_alproto_max - 1;
}
void AppProtoRegisterProtoString(AppProto alproto, const char *proto_name)
{
if (alproto < ALPROTO_MAX_STATIC) {

@ -175,6 +175,8 @@ const char *AppProtoToString(AppProto alproto);
*/
AppProto StringToAppProto(const char *proto_name);
AppProto AppProtoNewProtoFromString(const char *proto_name);
void AppProtoRegisterProtoString(AppProto alproto, const char *proto_name);
#endif /* SURICATA_APP_LAYER_PROTOS_H */

@ -163,8 +163,7 @@ SCCapturePlugin *SCPluginFindCaptureByName(const char *name)
int SCPluginRegisterAppLayer(SCAppLayerPlugin *plugin)
{
AppProto alproto = g_alproto_max;
AppProtoRegisterProtoString(alproto, plugin->name);
AppProto alproto = AppProtoNewProtoFromString(plugin->name);
if (plugin->Register) {
if (AppLayerParserPreRegister(plugin->Register) != 0) {
return 1;

Loading…
Cancel
Save