diff options
Diffstat (limited to 'src/internal.h')
-rw-r--r-- | src/internal.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/internal.h b/src/internal.h index 3216bc6..ba994c8 100644 --- a/src/internal.h +++ b/src/internal.h @@ -189,15 +189,17 @@ struct nft_set_elem { void __nft_assert_fail(uint16_t attr, const char *filename, int line); -#define nft_assert(attr, expr) \ - ((expr) \ +#define nft_assert(val, attr, expr) \ + ((!val || expr) \ ? (void)0 \ : __nft_assert_fail(attr, __FILE__, __LINE__)) -#define nft_assert_validate(_validate_array, _attr, _data_len) \ -({ \ - if (_validate_array[_attr]) \ - nft_assert(attr, _validate_array[_attr] == _data_len); \ +#define nft_assert_validate(data, _validate_array, _attr, _data_len) \ +({ \ + if (!data) \ + __nft_assert_fail(attr, __FILE__, __LINE__); \ + if (_validate_array[_attr]) \ + nft_assert(data, attr, _validate_array[_attr] == _data_len); \ }) #endif |