Thank you for your input so far. All the alternatives seem to work-around the issue but not fulfill our needs.
We have debugged a little using `gdb`. We noticed that the value of `msg->rcv->bind_address->address_str` is correct before calling `do_action`. Afterwards, it is wrong.
Before:
s = "172.20.21.3" len = 11
After:
s = "217.116.120.247" len = 11 (sic!)
We took a closer look (step by step) and the problem seems to be using `ip_addr2a`. It returns a pointer to a local static `char[]`. This is assigned to the original struct of `address_str` inside of `parsing_hepv3_message`.
Later, when `ip_addr2a` is called again for xlog, then the same address is used again and hence the value of `address_str.s` is overwriten.
A quick look at the git history for the functions did not show any relevant changes to my untrained eyes.
As the jump from 5.1/5.4 (debian jessie) to 5.5/5.8 (debian bookworm) is kind of huge, maybe this is related to changes in the compiler?
ok, it can be related to the struct pack, need to check it the union works correct. What is the compiler ?
https://github.com/kamailio/kamailio/blob/master/src/core/ip_addr.h#L74-L80