From: Victor Julien Date: Fri, 24 Nov 2023 18:35:54 +0000 (+0100) Subject: host/storage: use flex array for host storage X-Git-Tag: suricata-8.0.0-beta1~2026 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d3a62dfe6c9f0789fea4d3bcfc9ed4940bca270;p=thirdparty%2Fsuricata.git host/storage: use flex array for host storage --- diff --git a/src/host-storage.c b/src/host-storage.c index 72261de99d..234c67112e 100644 --- a/src/host-storage.c +++ b/src/host-storage.c @@ -74,7 +74,7 @@ HostStorageId HostStorageRegister(const char *name, const unsigned int size, int HostSetStorageById(Host *h, HostStorageId id, void *ptr) { - return StorageSetById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id, ptr); + return StorageSetById(h->storage, STORAGE_HOST, id.id, ptr); } /** @@ -87,7 +87,7 @@ int HostSetStorageById(Host *h, HostStorageId id, void *ptr) void *HostGetStorageById(Host *h, HostStorageId id) { - return StorageGetById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id); + return StorageGetById(h->storage, STORAGE_HOST, id.id); } /** @@ -98,18 +98,18 @@ void *HostGetStorageById(Host *h, HostStorageId id) void *HostAllocStorageById(Host *h, HostStorageId id) { - return StorageAllocByIdPrealloc((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id); + return StorageAllocByIdPrealloc(h->storage, STORAGE_HOST, id.id); } void HostFreeStorageById(Host *h, HostStorageId id) { - StorageFreeById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id); + StorageFreeById(h->storage, STORAGE_HOST, id.id); } void HostFreeStorage(Host *h) { if (HostStorageSize() > 0) - StorageFreeAll((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST); + StorageFreeAll(h->storage, STORAGE_HOST); } diff --git a/src/host.h b/src/host.h index 2c6a037edf..f4f248b5ee 100644 --- a/src/host.h +++ b/src/host.h @@ -68,9 +68,6 @@ typedef struct Host_ { /** pointers to iprep storage */ void *iprep; - /** storage api handle */ - Storage *storage; - /** hash pointers, protected by hash row mutex/spin */ struct Host_ *hnext; struct Host_ *hprev; @@ -78,6 +75,9 @@ typedef struct Host_ { /** list pointers, protected by host-queue mutex/spin */ struct Host_ *lnext; struct Host_ *lprev; + + /** storage api handle */ + Storage storage[]; } Host; typedef struct HostHashRow_ {