Unable to compile latest version of suricata

Hi, all
I use the master branch code on GitHub to compile, compile command:

git clone https://github.com/OISF/suricata.git
cd /root/suricata/
cargo install -f cbindgen --root /usr/
git clone https://github.com/OISF/libhtp
./autogen.sh && \
    ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var && \
    make && \
    make install-full && \
    ldconfig

compile output:

cd /root/suricata/rust && \
	 CARGO_HOME="/root/.cargo" \
	CARGO_TARGET_DIR="/root/suricata/rust/target" \
	/usr/bin/cargo build --release  \
		--features "ja3 ja4  " 
    Updating `rsproxy-sparse` index
    Updating git repository `https://github.com/jasonish/suricata-lua-sys`
From https://github.com/jasonish/suricata-lua-sys
 * [new ref]         cb449d352da17e5ef120f0b6b031dbe63ae64f06 -> refs/commit/cb449d352da17e5ef120f0b6b031dbe63ae64f06
 Downloading crates ...
  Downloaded num_enum_derive v0.5.11 (registry `rsproxy-sparse`)
  Downloaded ppv-lite86 v0.2.17 (registry `rsproxy-sparse`)
  Downloaded num-bigint v0.2.6 (registry `rsproxy-sparse`)
  Downloaded thiserror-impl v1.0.58 (registry `rsproxy-sparse`)
  Downloaded sha1 v0.10.6 (registry `rsproxy-sparse`)
  Downloaded toml v0.5.11 (registry `rsproxy-sparse`)
  Downloaded block-buffer v0.10.4 (registry `rsproxy-sparse`)
  Downloaded powerfmt v0.2.0 (registry `rsproxy-sparse`)
  Downloaded rand v0.8.5 (registry `rsproxy-sparse`)
  Downloaded rand_core v0.6.4 (registry `rsproxy-sparse`)
  Downloaded rand_chacha v0.3.1 (registry `rsproxy-sparse`)
  Downloaded time-macros v0.2.18 (registry `rsproxy-sparse`)
  Downloaded num_enum v0.5.11 (registry `rsproxy-sparse`)
  Downloaded opaque-debug v0.3.1 (registry `rsproxy-sparse`)
  Downloaded proc-macro2 v0.4.30 (registry `rsproxy-sparse`)
  Downloaded thiserror v1.0.58 (registry `rsproxy-sparse`)
  Downloaded synstructure v0.12.6 (registry `rsproxy-sparse`)
  Downloaded adler v1.0.2 (registry `rsproxy-sparse`)
  Downloaded num-conv v0.1.0 (registry `rsproxy-sparse`)
  Downloaded regex-syntax v0.6.29 (registry `rsproxy-sparse`)
  Downloaded sha2 v0.10.8 (registry `rsproxy-sparse`)
  Downloaded base64 v0.13.1 (registry `rsproxy-sparse`)
  Downloaded rusticata-macros v4.1.0 (registry `rsproxy-sparse`)
  Downloaded typenum v1.17.0 (registry `rsproxy-sparse`)
  Downloaded uuid v0.8.2 (registry `rsproxy-sparse`)
  Downloaded syn v1.0.109 (registry `rsproxy-sparse`)
  Downloaded unicode-xid v0.2.4 (registry `rsproxy-sparse`)
  Downloaded phf_codegen v0.10.0 (registry `rsproxy-sparse`)
  Downloaded asn1-rs-derive v0.5.0 (registry `rsproxy-sparse`)
  Downloaded time v0.3.36 (registry `rsproxy-sparse`)
  Downloaded x509-parser v0.16.0 (registry `rsproxy-sparse`)
  Downloaded widestring v0.4.3 (registry `rsproxy-sparse`)
  Downloaded syn v0.15.44 (registry `rsproxy-sparse`)
  Downloaded version_check v0.9.4 (registry `rsproxy-sparse`)
  Downloaded cpufeatures v0.2.12 (registry `rsproxy-sparse`)
  Downloaded byteorder v1.4.3 (registry `rsproxy-sparse`)
  Downloaded flate2 v1.0.28 (registry `rsproxy-sparse`)
  Downloaded nom-derive-impl v0.10.1 (registry `rsproxy-sparse`)
  Downloaded minimal-lexical v0.2.1 (registry `rsproxy-sparse`)
  Downloaded time-core v0.1.2 (registry `rsproxy-sparse`)
  Downloaded num-bigint v0.4.4 (registry `rsproxy-sparse`)
  Downloaded deranged v0.3.11 (registry `rsproxy-sparse`)
  Downloaded bitflags v1.2.1 (registry `rsproxy-sparse`)
  Downloaded generic-array v0.14.7 (registry `rsproxy-sparse`)
  Downloaded num-iter v0.1.44 (registry `rsproxy-sparse`)
  Downloaded crypto-common v0.1.6 (registry `rsproxy-sparse`)
  Downloaded data-encoding v2.5.0 (registry `rsproxy-sparse`)
  Downloaded crc32fast v1.4.0 (registry `rsproxy-sparse`)
  Downloaded alloc-no-stdlib v2.0.4 (registry `rsproxy-sparse`)
  Downloaded sawp-modbus v0.12.1 (registry `rsproxy-sparse`)
  Downloaded num-rational v0.2.4 (registry `rsproxy-sparse`)
  Downloaded fs_extra v1.3.0 (registry `rsproxy-sparse`)
  Downloaded hmac v0.12.1 (registry `rsproxy-sparse`)
  Downloaded phf_generator v0.10.0 (registry `rsproxy-sparse`)
  Downloaded num-traits v0.1.43 (registry `rsproxy-sparse`)
  Downloaded asn1-rs-impl v0.2.0 (registry `rsproxy-sparse`)
  Downloaded md-5 v0.10.6 (registry `rsproxy-sparse`)
  Downloaded lazy_static v1.4.0 (registry `rsproxy-sparse`)
  Downloaded sawp v0.12.1 (registry `rsproxy-sparse`)
  Downloaded phf_shared v0.10.0 (registry `rsproxy-sparse`)
  Downloaded brotli-decompressor v2.5.1 (registry `rsproxy-sparse`)
  Downloaded rustversion v1.0.15 (registry `rsproxy-sparse`)
  Downloaded build_const v0.2.2 (registry `rsproxy-sparse`)
  Downloaded oid-registry v0.7.0 (registry `rsproxy-sparse`)
  Downloaded universal-hash v0.4.1 (registry `rsproxy-sparse`)
  Downloaded ntp-parser v0.6.0 (registry `rsproxy-sparse`)
  Downloaded aho-corasick v0.7.20 (registry `rsproxy-sparse`)
  Downloaded siphasher v0.3.11 (registry `rsproxy-sparse`)
  Downloaded sawp-flags-derive v0.12.1 (registry `rsproxy-sparse`)
  Downloaded phf v0.10.1 (registry `rsproxy-sparse`)
  Downloaded alloc-stdlib v0.2.2 (registry `rsproxy-sparse`)
  Downloaded nom v7.1.3 (registry `rsproxy-sparse`)
  Downloaded bendy v0.3.3 (registry `rsproxy-sparse`)
  Downloaded failure_derive v0.1.8 (registry `rsproxy-sparse`)
  Downloaded digest v0.10.7 (registry `rsproxy-sparse`)
  Downloaded cipher v0.3.0 (registry `rsproxy-sparse`)
  Downloaded snmp-parser v0.10.0 (registry `rsproxy-sparse`)
  Downloaded miniz_oxide v0.7.2 (registry `rsproxy-sparse`)
  Downloaded regex v1.5.6 (registry `rsproxy-sparse`)
  Downloaded syn v2.0.59 (registry `rsproxy-sparse`)
  Downloaded kerberos-parser v0.8.0 (registry `rsproxy-sparse`)
  Downloaded num-integer v0.1.46 (registry `rsproxy-sparse`)
  Downloaded num v0.2.1 (registry `rsproxy-sparse`)
  Downloaded nom-derive v0.10.1 (registry `rsproxy-sparse`)
  Downloaded polyval v0.5.3 (registry `rsproxy-sparse`)
  Downloaded sawp-flags v0.12.1 (registry `rsproxy-sparse`)
  Downloaded quote v0.6.13 (registry `rsproxy-sparse`)
  Downloaded ctr v0.8.0 (registry `rsproxy-sparse`)
  Downloaded brotli v3.4.0 (registry `rsproxy-sparse`)
  Downloaded aes-gcm v0.9.4 (registry `rsproxy-sparse`)
  Downloaded proc-macro2 v1.0.80 (registry `rsproxy-sparse`)
  Downloaded aead v0.4.3 (registry `rsproxy-sparse`)
  Downloaded tls-parser v0.11.0 (registry `rsproxy-sparse`)
  Downloaded subtle v2.4.1 (registry `rsproxy-sparse`)
  Downloaded ipsec-parser v0.7.0 (registry `rsproxy-sparse`)
  Downloaded lzma-rs v0.2.0 (registry `rsproxy-sparse`)
  Downloaded num-complex v0.2.4 (registry `rsproxy-sparse`)
  Downloaded ldap-parser v0.4.0 (registry `rsproxy-sparse`)
  Downloaded num-traits v0.2.18 (registry `rsproxy-sparse`)
  Downloaded getrandom v0.2.14 (registry `rsproxy-sparse`)
  Downloaded asn1-rs v0.6.1 (registry `rsproxy-sparse`)
  Downloaded memchr v2.4.1 (registry `rsproxy-sparse`)
  Downloaded failure v0.1.8 (registry `rsproxy-sparse`)
  Downloaded aes v0.7.5 (registry `rsproxy-sparse`)
  Downloaded hkdf v0.12.4 (registry `rsproxy-sparse`)
  Downloaded autocfg v1.2.0 (registry `rsproxy-sparse`)
  Downloaded num-derive v0.2.5 (registry `rsproxy-sparse`)
  Downloaded synstructure v0.13.1 (registry `rsproxy-sparse`)
  Downloaded libc v0.2.153 (registry `rsproxy-sparse`)
  Downloaded ghash v0.4.4 (registry `rsproxy-sparse`)
  Downloaded displaydoc v0.2.4 (registry `rsproxy-sparse`)
  Downloaded serde v1.0.197 (registry `rsproxy-sparse`)
  Downloaded unicode-xid v0.1.0 (registry `rsproxy-sparse`)
  Downloaded proc-macro-crate v1.1.0 (registry `rsproxy-sparse`)
  Downloaded enum_primitive v0.1.1 (registry `rsproxy-sparse`)
  Downloaded der-parser v9.0.0 (registry `rsproxy-sparse`)
  Downloaded crc v1.8.1 (registry `rsproxy-sparse`)
   Compiling proc-macro2 v1.0.80
   Compiling unicode-ident v1.0.12
   Compiling autocfg v1.2.0
   Compiling version_check v0.9.4
   Compiling typenum v1.17.0
   Compiling memchr v2.4.1
   Compiling thiserror v1.0.58
   Compiling syn v1.0.109
   Compiling minimal-lexical v0.2.1
   Compiling generic-array v0.14.7
   Compiling libc v0.2.153
   Compiling subtle v2.4.1
   Compiling num-traits v0.2.18
   Compiling serde v1.0.197
   Compiling cfg-if v1.0.0
   Compiling time-core v0.1.2
   Compiling powerfmt v0.2.0
   Compiling num-conv v0.1.0
   Compiling time-macros v0.2.18
   Compiling nom v7.1.3
   Compiling quote v1.0.36
   Compiling syn v2.0.59
   Compiling num-integer v0.1.46
   Compiling getrandom v0.2.14
   Compiling deranged v0.3.11
   Compiling itoa v1.0.11
   Compiling rand_core v0.6.4
   Compiling rusticata-macros v4.1.0
   Compiling ppv-lite86 v0.2.17
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling siphasher v0.3.11
   Compiling cpufeatures v0.2.12
   Compiling digest v0.10.7
   Compiling rand_chacha v0.3.1
   Compiling phf_shared v0.10.0
   Compiling num-bigint v0.4.4
   Compiling time v0.3.36
   Compiling rand v0.8.5
   Compiling rustversion v1.0.15
   Compiling proc-macro2 v0.4.30
   Compiling num-bigint v0.2.6
   Compiling failure_derive v0.1.8
   Compiling phf_generator v0.10.0
   Compiling build_const v0.2.2
   Compiling unicode-xid v0.1.0
   Compiling opaque-debug v0.3.1
   Compiling unicode-xid v0.2.4
   Compiling crc v1.8.1
   Compiling phf_codegen v0.10.0
   Compiling synstructure v0.13.1
   Compiling toml v0.5.11
   Compiling synstructure v0.12.6
   Compiling cipher v0.3.0
   Compiling universal-hash v0.4.1
   Compiling num-complex v0.2.4
   Compiling num-rational v0.2.4
   Compiling fs_extra v1.3.0
   Compiling syn v0.15.44
   Compiling oid-registry v0.7.0
   Compiling crc32fast v1.4.0
   Compiling alloc-no-stdlib v2.0.4
   Compiling alloc-stdlib v0.2.2
   Compiling suricata-lua-sys v0.1.0-alpha.1 (https://github.com/jasonish/suricata-lua-sys#cb449d35)
   Compiling polyval v0.5.3
   Compiling quote v0.6.13
   Compiling tls-parser v0.11.0
   Compiling thiserror-impl v1.0.58
   Compiling asn1-rs-impl v0.2.0
   Compiling asn1-rs-derive v0.5.0
   Compiling displaydoc v0.2.4
   Compiling nom-derive-impl v0.10.1
   Compiling num-traits v0.1.43
   Compiling adler v1.0.2
   Compiling num-derive v0.2.5
   Compiling bitflags v1.2.1
   Compiling proc-macro-crate v1.1.0
   Compiling asn1-rs v0.6.1
   Compiling failure v0.1.8
   Compiling nom-derive v0.10.1
   Compiling sawp-flags-derive v0.12.1
   Compiling num_enum_derive v0.5.11
   Compiling miniz_oxide v0.7.2
   Compiling der-parser v9.0.0
   Compiling sawp-flags v0.12.1
   Compiling num_enum v0.5.11
   Compiling enum_primitive v0.1.1
   Compiling ghash v0.4.4
   Compiling phf v0.10.1
   Compiling brotli-decompressor v2.5.1
   Compiling ctr v0.8.0
   Compiling aes v0.7.5
   Compiling sawp v0.12.1
   Compiling hmac v0.12.1
   Compiling num-iter v0.1.44
   Compiling aead v0.4.3
   Compiling aho-corasick v0.7.20
   Compiling data-encoding v2.5.0
   Compiling regex-syntax v0.6.29
   Compiling lazy_static v1.4.0
   Compiling byteorder v1.4.3
   Compiling lzma-rs v0.2.0
   Compiling x509-parser v0.16.0
   Compiling sawp-modbus v0.12.1
   Compiling aes-gcm v0.9.4
   Compiling num v0.2.1
   Compiling brotli v3.4.0
   Compiling regex v1.5.6
   Compiling hkdf v0.12.4
   Compiling flate2 v1.0.28
   Compiling kerberos-parser v0.8.0
   Compiling ldap-parser v0.4.0
   Compiling snmp-parser v0.10.0
   Compiling ntp-parser v0.6.0
   Compiling suricata-derive v8.0.0-dev (/root/suricata/rust/derive)
   Compiling bendy v0.3.3
   Compiling md-5 v0.10.6
   Compiling sha2 v0.10.8
   Compiling sha1 v0.10.6
   Compiling ipsec-parser v0.7.0
   Compiling base64 v0.13.1
   Compiling uuid v0.8.2
   Compiling widestring v0.4.3
   Compiling suricata v8.0.0-dev (/root/suricata/rust)
    Finished release [optimized + debuginfo] target(s) in 2m 51s
if test -e ../rust/target/release/suricata.lib; then \
	cp -a ../rust/target/release/suricata.lib \
		../rust/target/release/libsuricata_rust.a; \
fi
if test -e ../rust/target/release/libsuricata.a; then \
	cp -a ../rust/target/release/libsuricata.a \
		../rust/target/release/libsuricata_rust.a; \
fi
make gen/rust-bindings.h
make[2]: Entering directory '/root/suricata/rust'
cd /root/suricata/rust && \
	cbindgen --config /root/suricata/rust/cbindgen.toml \
	--quiet --verify --output /root/suricata/rust/gen/rust-bindings.h || true
ERROR: Bindings changed: /root/suricata/rust/gen/rust-bindings.h
make[2]: Leaving directory '/root/suricata/rust'
mkdir -p /root/suricata/rust/gen
cp -a ../rust/target/release/build/suricata-lua-sys-*/out/lua/*.h \
	/root/suricata/rust/gen/
make[1]: Leaving directory '/root/suricata/rust'
Making all in src
make[1]: Entering directory '/root/suricata/src'
make  all-am
make[2]: Entering directory '/root/suricata/src'
  CC       main.o
  CC       alert-debuglog.o
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:4859:27: error: field 'probe_ts' has incomplete type
 4859 |     struct Option_ProbeFn probe_ts;
      |                           ^~~~~~~~
./../rust/gen/rust-bindings.h:4863:27: error: field 'probe_tc' has incomplete type
 4863 |     struct Option_ProbeFn probe_tc;
      |                           ^~~~~~~~
./../rust/gen/rust-bindings.h:4875:5: error: unknown type name 'StateAllocFn'
 4875 |     StateAllocFn state_new;
      |     ^~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4879:5: error: unknown type name 'StateFreeFn'
 4879 |     StateFreeFn state_free;
      |     ^~~~~~~~~~~
./../rust/gen/rust-bindings.h:4883:5: error: unknown type name 'ParseFn'
 4883 |     ParseFn parse_ts;
      |     ^~~~~~~
./../rust/gen/rust-bindings.h:4887:5: error: unknown type name 'ParseFn'
 4887 |     ParseFn parse_tc;
      |     ^~~~~~~
./../rust/gen/rust-bindings.h:4891:5: error: unknown type name 'StateGetTxCntFn'
 4891 |     StateGetTxCntFn get_tx_count;
      |     ^~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4895:5: error: unknown type name 'StateGetTxFn'
 4895 |     StateGetTxFn get_tx;
      |     ^~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4899:5: error: unknown type name 'StateTxFreeFn'
 4899 |     StateTxFreeFn tx_free;
      |     ^~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4908:5: error: unknown type name 'StateGetProgressFn'
 4908 |     StateGetProgressFn tx_get_progress;
      |     ^~~~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4912:34: error: field 'get_eventinfo' has incomplete type
 4912 |     struct Option_GetEventInfoFn get_eventinfo;
      |                                  ^~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4916:38: error: field 'get_eventinfo_byid' has incomplete type
 4916 |     struct Option_GetEventInfoByIdFn get_eventinfo_byid;
      |                                      ^~~~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4920:37: error: field 'localstorage_new' has incomplete type
 4920 |     struct Option_LocalStorageNewFn localstorage_new;
      |                                     ^~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4924:38: error: field 'localstorage_free' has incomplete type
 4924 |     struct Option_LocalStorageFreeFn localstorage_free;
      |                                      ^~~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4928:32: error: field 'get_tx_files' has incomplete type
 4928 |     struct Option_GetTxFilesFn get_tx_files;
      |                                ^~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4932:35: error: field 'get_tx_iterator' has incomplete type
 4932 |     struct Option_GetTxIteratorFn get_tx_iterator;
      |                                   ^~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4933:5: error: unknown type name 'GetStateDataFn'
 4933 |     GetStateDataFn get_state_data;
      |     ^~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4934:5: error: unknown type name 'GetTxDataFn'
 4934 |     GetTxDataFn get_tx_data;
      |     ^~~~~~~~~~~
./../rust/gen/rust-bindings.h:4935:35: error: field 'apply_tx_config' has incomplete type
 4935 |     struct Option_ApplyTxConfigFn apply_tx_config;
      |                                   ^~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4937:36: error: field 'get_frame_id_by_name' has incomplete type
 4937 |     struct Option_GetFrameIdByName get_frame_id_by_name;
      |                                    ^~~~~~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:4938:36: error: field 'get_frame_name_by_id' has incomplete type
 4938 |     struct Option_GetFrameNameById get_frame_name_by_id;
      |                                    ^~~~~~~~~~~~~~~~~~~~
./../rust/gen/rust-bindings.h:5112:17: error: conflicting types for 'StringToAppProto'; have 'AppProto(const uint8_t *)' {aka 'short unsigned int(const unsigned char *)'}
 5112 | extern AppProto StringToAppProto(const uint8_t *proto_name);
      |                 ^~~~~~~~~~~~~~~~
In file included from flow.h:37,
                 from detect.h:28,
                 from alert-debuglog.c:27:
app-layer-protos.h:174:10: note: previous declaration of 'StringToAppProto' with type 'AppProto(const char *)' {aka 'short unsigned int(const char *)'}
  174 | AppProto StringToAppProto(const char *proto_name);
      |          ^~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5114:25: error: conflicting types for 'SCGetContext'; have 'SuricataContext *(void)' {aka 'struct SuricataContext_ *(void)'}
 5114 | extern SuricataContext *SCGetContext(void);
      |                         ^~~~~~~~~~~~
In file included from rust.h:23,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
rust-context.h:72:24: note: previous declaration of 'SCGetContext' with type 'const SuricataContext *(void)' {aka 'const struct SuricataContext_ *(void)'}
   72 | const SuricataContext *SCGetContext(void);
      |                        ^~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5120:13: error: conflicting types for 'FlowGetLastTimeAsParts'; have 'void(const Flow *, uint64_t *, uint64_t *)' {aka 'void(const struct Flow_ *, long unsigned int *, long unsigned int *)'}
 5120 | extern void FlowGetLastTimeAsParts(const Flow *flow,
      |             ^~~~~~~~~~~~~~~~~~~~~~
In file included from detect.h:28,
                 from alert-debuglog.c:27:
flow.h:593:6: note: previous declaration of 'FlowGetLastTimeAsParts' with type 'void(Flow *, uint64_t *, uint64_t *)' {aka 'void(struct Flow_ *, long unsigned int *, long unsigned int *)'}
  593 | void FlowGetLastTimeAsParts(Flow *flow, uint64_t *secs, uint64_t *usecs);
      |      ^~~~~~~~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5124:17: error: conflicting types for 'FlowGetFlags'; have 'uint32_t(const Flow *)' {aka 'unsigned int(const struct Flow_ *)'}
 5124 | extern uint32_t FlowGetFlags(const Flow *flow);
      |                 ^~~~~~~~~~~~
In file included from detect.h:28,
                 from alert-debuglog.c:27:
flow.h:594:10: note: previous declaration of 'FlowGetFlags' with type 'uint32_t(Flow *)' {aka 'unsigned int(struct Flow_ *)'}
  594 | uint32_t FlowGetFlags(Flow *flow);
      |          ^~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5126:17: error: conflicting types for 'FlowGetSourcePort'; have 'uint16_t(const Flow *)' {aka 'short unsigned int(const struct Flow_ *)'}
 5126 | extern uint16_t FlowGetSourcePort(const Flow *flow);
      |                 ^~~~~~~~~~~~~~~~~
In file included from detect.h:28,
                 from alert-debuglog.c:27:
flow.h:595:10: note: previous declaration of 'FlowGetSourcePort' with type 'uint16_t(Flow *)' {aka 'short unsigned int(struct Flow_ *)'}
  595 | uint16_t FlowGetSourcePort(Flow *flow);
      |          ^~~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5128:17: error: conflicting types for 'FlowGetDestinationPort'; have 'uint16_t(const Flow *)' {aka 'short unsigned int(const struct Flow_ *)'}
 5128 | extern uint16_t FlowGetDestinationPort(const Flow *flow);
      |                 ^~~~~~~~~~~~~~~~~~~~~~
In file included from detect.h:28,
                 from alert-debuglog.c:27:
flow.h:596:10: note: previous declaration of 'FlowGetDestinationPort' with type 'uint16_t(Flow *)' {aka 'short unsigned int(struct Flow_ *)'}
  596 | uint16_t FlowGetDestinationPort(Flow *flow);
      |          ^~~~~~~~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5150:15: error: conflicting types for 'ConfGet'; have 'int8_t(const char *, const char **)' {aka 'signed char(const char *, const char **)'}
 5150 | extern int8_t ConfGet(const char *key, const char **res);
      |               ^~~~~~~
In file included from util-file.h:28,
                 from detect.h:41,
                 from alert-debuglog.c:27:
conf.h:61:5: note: previous declaration of 'ConfGet' with type 'int(const char *, const char **)'
   61 | int ConfGet(const char *name, const char **vptr);
      |     ^~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5152:15: error: conflicting types for 'ConfGetChildValue'; have 'int8_t(const void *, const char *, const char **)' {aka 'signed char(const void *, const char *, const char **)'}
 5152 | extern int8_t ConfGetChildValue(const void *conf,
      |               ^~~~~~~~~~~~~~~~~
In file included from util-file.h:28,
                 from detect.h:41,
                 from alert-debuglog.c:27:
conf.h:89:5: note: previous declaration of 'ConfGetChildValue' with type 'int(const ConfNode *, const char *, const char **)' {aka 'int(const struct ConfNode_ *, const char *, const char **)'}
   89 | int ConfGetChildValue(const ConfNode *base, const char *name, const char **vptr);
      |     ^~~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5156:15: error: conflicting types for 'ConfGetChildValueBool'; have 'int8_t(const void *, const char *, int *)' {aka 'signed char(const void *, const char *, int *)'}
 5156 | extern int8_t ConfGetChildValueBool(const void *conf,
      |               ^~~~~~~~~~~~~~~~~~~~~
In file included from util-file.h:28,
                 from detect.h:41,
                 from alert-debuglog.c:27:
conf.h:91:5: note: previous declaration of 'ConfGetChildValueBool' with type 'int(const ConfNode *, const char *, int *)' {aka 'int(const struct ConfNode_ *, const char *, int *)'}
   91 | int ConfGetChildValueBool(const ConfNode *base, const char *name, int *val);
      |     ^~~~~~~~~~~~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5160:20: error: conflicting types for 'ConfGetNode'; have 'const void *(const char *)'
 5160 | extern const void *ConfGetNode(const char *key);
      |                    ^~~~~~~~~~~
In file included from util-file.h:28,
                 from detect.h:41,
                 from alert-debuglog.c:27:
conf.h:73:11: note: previous declaration of 'ConfGetNode' with type 'ConfNode *(const char *)' {aka 'struct ConfNode_ *(const char *)'}
   73 | ConfNode *ConfGetNode(const char *key);
      |           ^~~~~~~~~~~
In file included from rust.h:24,
                 from output-file.h:29,
                 from output.h:40,
                 from alert-debuglog.c:47:
./../rust/gen/rust-bindings.h:5253:43: error: unknown type name 'ProbeFn'
 5253 |                                           ProbeFn pparser1,
      |                                           ^~~~~~~
./../rust/gen/rust-bindings.h:5254:43: error: unknown type name 'ProbeFn'
 5254 |                                           ProbeFn pparser2);
      |                                           ^~~~~~~
./../rust/gen/rust-bindings.h:5262:52: error: unknown type name 'ProbeFn'
 5262 |                                                    ProbeFn pparser_ts,
      |                                                    ^~~~~~~
./../rust/gen/rust-bindings.h:5263:52: error: unknown type name 'ProbeFn'
 5263 |                                                    ProbeFn pparser_tc);
      |                                                    ^~~~~~~
./../rust/gen/rust-bindings.h:5285:54: error: unknown type name 'ProbeFn'
 5285 |                                                      ProbeFn ppfn,
      |                                                      ^~~~~~~
make[2]: Leaving directory '/root/suricata/src'
make[2]: *** [Makefile:3380: alert-debuglog.o] Error 1
make[1]: *** [Makefile:2602: all] Error 2
make[1]: Leaving directory '/root/suricata/src'
make: *** [Makefile:500: all-recursive] Error 1

I’ve encountered the same trouble in Ubuntu 20.04…

A quick fix for now is to downgrade cbindgen, eg)

cargo install -f cbindgen --root /usr/ --version 0.26.0
1 Like

It works! Thank you very much.

It looks like suricata-7.0.8 does again compile with cbindingen-0.27.0, I’ll just need to forget an hour or so I spent working around this problem :slight_smile:
Reference: net-analyzer/suricata: version bump(+pfring) · thinrope/pkalin@9063c3c · GitHub