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."] #[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; 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" { extern "C" {
pub fn AppProtoRegisterProtoString( pub fn AppProtoRegisterProtoString(
alproto: AppProto, proto_name: *const ::std::os::raw::c_char, alproto: AppProto, proto_name: *const ::std::os::raw::c_char,

@ -71,6 +71,12 @@ AppProto StringToAppProto(const char *proto_name)
return ALPROTO_UNKNOWN; 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) void AppProtoRegisterProtoString(AppProto alproto, const char *proto_name)
{ {
if (alproto < ALPROTO_MAX_STATIC) { if (alproto < ALPROTO_MAX_STATIC) {

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

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

Loading…
Cancel
Save