]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
unix-socket: allow tenant id with pcap-file
authorVictor Julien <victor@inliniac.net>
Fri, 30 Jan 2015 13:27:05 +0000 (14:27 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 23 Jul 2015 17:36:14 +0000 (19:36 +0200)
Register the tenant id that the pcap-file optionally got.

src/runmode-unix-socket.c

index 75ab1eed3674f5687560f975ac1a860eb6f04bdd..e4c848ca1e120f015d986c27b55bb57a329135ab 100644 (file)
@@ -52,6 +52,7 @@ int unix_socket_mode_is_running = 0;
 typedef struct PcapFiles_ {
     char *filename;
     char *output_dir;
+    int tenant_id;
     TAILQ_ENTRY(PcapFiles_) next;
 } PcapFiles;
 
@@ -154,7 +155,8 @@ static void PcapFilesFree(PcapFiles *cfile)
  *
  * \retval 0 in case of error, 1 in case of success
  */
-TmEcode UnixListAddFile(PcapCommand *this, const char *filename, const char *output_dir)
+static TmEcode UnixListAddFile(PcapCommand *this,
+        const char *filename, const char *output_dir, int tenant_id)
 {
     PcapFiles *cfile = NULL;
     if (filename == NULL || this == NULL)
@@ -183,6 +185,8 @@ TmEcode UnixListAddFile(PcapCommand *this, const char *filename, const char *out
         }
     }
 
+    cfile->tenant_id = tenant_id;
+
     TAILQ_INSERT_TAIL(&this->files, cfile, next);
     return TM_ECODE_OK;
 }
@@ -200,6 +204,7 @@ TmEcode UnixSocketAddPcapFile(json_t *cmd, json_t* answer, void *data)
     int ret;
     const char *filename;
     const char *output_dir;
+    int tenant_id = 0;
 #ifdef OS_WIN32
     struct _stat st;
 #else
@@ -245,7 +250,16 @@ TmEcode UnixSocketAddPcapFile(json_t *cmd, json_t* answer, void *data)
         return TM_ECODE_FAILED;
     }
 
-    ret = UnixListAddFile(this, filename, output_dir);
+    json_t *targ = json_object_get(cmd, "tenant");
+    if (targ != NULL) {
+        if(!json_is_number(targ)) {
+            json_object_set_new(answer, "message", json_string("tenant is not a number"));
+            return TM_ECODE_FAILED;
+        }
+        tenant_id = json_number_value(targ);
+    }
+
+    ret = UnixListAddFile(this, filename, output_dir, tenant_id);
     switch(ret) {
         case TM_ECODE_FAILED:
             json_object_set_new(answer, "message", json_string("Unable to add file to list"));
@@ -343,6 +357,15 @@ TmEcode UnixSocketPcapFilesCheck(void *data)
                 return TM_ECODE_FAILED;
             }
         }
+        if (cfile->tenant_id > 0) {
+            char tstr[16] = "";
+            snprintf(tstr, sizeof(tstr), "%d", cfile->tenant_id);
+            if (ConfSet("pcap-file.tenant-id", tstr) != 1) {
+                SCLogInfo("Can not set working tenant-id to '%s'", tstr);
+                PcapFilesFree(cfile);
+                return TM_ECODE_FAILED;
+            }
+        }
         this->currentfile = SCStrdup(cfile->filename);
         if (unlikely(this->currentfile == NULL)) {
             SCLogError(SC_ERR_MEM_ALLOC, "Failed file name allocation");