]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Convert config entries using underscores to dashes and emit deprecation warnings.
authorNikolay Denev <ndenev@gmail.com>
Fri, 24 Feb 2012 13:50:43 +0000 (15:50 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 28 Feb 2012 08:24:24 +0000 (09:24 +0100)
src/conf-yaml-loader.c
src/util-error.c
src/util-error.h

index b991afdbb28828c936f8dfeb0528914bbe38c029..33c2569686745e10eef89f66259794a101866f2f 100644 (file)
@@ -43,6 +43,24 @@ enum conf_state {
     CONF_VAL,
 };
 
+/**
+ * \brief Mangle unsupported characters.
+ *
+ * \param string A pointer to an null terminated string.
+ *
+ * \retval none
+ */
+static void
+Mangle(char *string)
+{
+    char *c;
+
+    while ((c = strchr(string, '_')))
+        *c = '-';
+
+    return;
+}
+
 /**
  * \brief Parse a YAML layer.
  *
@@ -105,6 +123,8 @@ ConfYamlParse(yaml_parser_t *parser, ConfNode *parent, int inseq)
                     if (parent->is_seq) {
                         if (parent->val == NULL) {
                             parent->val = SCStrdup(value);
+                            if (parent->val && strchr(parent->val, '_'))
+                                Mangle(parent->val);
                         }
                     }
                     ConfNode *n0 = ConfNodeLookupChild(parent, value);
@@ -114,6 +134,16 @@ ConfYamlParse(yaml_parser_t *parser, ConfNode *parent, int inseq)
                     else {
                         node = ConfNodeNew();
                         node->name = SCStrdup(value);
+                        if (node->name && strchr(node->name, '_')) {
+                            if (!(parent->name &&
+                                   ((strcmp(parent->name, "address-groups") == 0) ||
+                                    (strcmp(parent->name, "port-groups") == 0)))) {
+                                Mangle(node->name);
+                                SCLogWarning(SC_WARN_DEPRECATED,
+                                    "%s is deprecated. Please use %s",
+                                    value, node->name);
+                            }
+                        }
                         TAILQ_INSERT_TAIL(&parent->head, node, next);
                     }
                     state = CONF_VAL;
index ea5fff9d1bb524d45b12ee7dceb1c955190d7cb8..2d064f61fd8786d2ece395c517941f952c1411dc 100644 (file)
@@ -221,6 +221,7 @@ const char * SCErrorToString(SCError err)
         CASE_CODE (SC_ERR_SOCKET);
         CASE_CODE (SC_ERR_PCAP_TRANSLATE);
         CASE_CODE (SC_WARN_OUTDATED_LIBHTP);
+        CASE_CODE (SC_WARN_DEPRECATED);
 
         default:
             return "UNKNOWN_ERROR";
index 4477018a9b361d48c6af13d5f441ca536c85ea67..0fa52d26fbecf30e3c98b40a5c8b79a5029876f9 100644 (file)
@@ -236,6 +236,7 @@ typedef enum {
     SC_ERR_SOCKET,
     SC_ERR_PCAP_TRANSLATE,          /* failed to translate ip to dev */
     SC_WARN_OUTDATED_LIBHTP,
+    SC_WARN_DEPRECATED,
 } SCError;
 
 const char *SCErrorToString(SCError);