]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
app-layer: helper function AppProtoNewProtoFromString
authorPhilippe Antoine <pantoine@oisf.net>
Thu, 16 Jan 2025 07:45:59 +0000 (08:45 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 7 Apr 2025 04:57:45 +0000 (06:57 +0200)
So that we do not have to know g_alproto_max to register
dynamically a new protocol from its name

rust/sys/src/sys.rs
src/app-layer-protos.c
src/app-layer-protos.h
src/util-plugin.c

index 397998534588ac7a1fead9719a99d53f2ab2b700..529b59bc91ccfe0ecd60f7a5ebaa05bc7215fb95 100644 (file)
@@ -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,
index 3f991f35d40437e6ffba1f18e1e27797d493ea0c..19db07cd8477b6f9b40b90f25b31405f8befa5da 100644 (file)
@@ -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) {
index 813e58f13d3bc0ca71b847319423955f3c1c231b..46d7091ce3c87d4f43c8a89dff4f5b30cfaab0b1 100644 (file)
@@ -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 */
index 1a90b1f5d239a3af6cbdcfa552e702c16eb9026b..a5cf1070f7ba7388ec48458df0ae85ff57d4c2f9 100644 (file)
@@ -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;