Hello,

please see attached patches.

1st patch adds return value ENOENT to sss_iface_addr_list_get() so I can provide more concrete debug message for missing interface or if interface is not suitable (missing IP address)

2nd patch:
* I introduced new public function sss_iface_addr_concatenate(), I'm aware that this function is probably not reusable but I needed to work around that 'struct sss_iface_addr' in defined in source file only.
* I had troubles with correctly handling creating talloc hiearchy of IPs of different interfaces. I decided to use first address of first found interface as a parent talloc context for other interfaces. I attached talloc report output to illustrate this.
  1. full talloc report on 'struct sdap_dyndns_get_addrs_state' (total     16 bytes in   1 blocks)
  2. full talloc report on 'struct sdap_dyndns_get_addrs_state' (total    376 bytes in  19 blocks)
  3.     struct sss_iface_addr          contains    360 bytes in  18 blocks (ref 0) 0xbc0650
  4.         struct sss_iface_addr          contains    120 bytes in   6 blocks (ref 0) 0xbecee0
  5.             struct sss_iface_addr          contains     80 bytes in   4 blocks (ref 0) 0xbeb920
  6.                 struct sss_iface_addr          contains     40 bytes in   2 blocks (ref 0) 0xbd03f0
  7.                     ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbd0470
  8.                 ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbeb9a0
  9.             ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbecf60
  10.         struct sss_iface_addr          contains    120 bytes in   6 blocks (ref 0) 0xbd0640
  11.             struct sss_iface_addr          contains     80 bytes in   4 blocks (ref 0) 0xbd19a0
  12.                 struct sss_iface_addr          contains     40 bytes in   2 blocks (ref 0) 0xbcfb00
  13.                     ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbed300
  14.                 ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbd1a20
  15.             ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbd06c0
  16.         struct sss_iface_addr          contains     80 bytes in   4 blocks (ref 0) 0xbd0eb0
  17.             struct sss_iface_addr          contains     40 bytes in   2 blocks (ref 0) 0xbd1900
  18.                 ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbec4f0
  19.             ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbeca10
  20.         ../src/providers/dp_dyndns.c:219 contains     16 bytes in   1 blocks (ref 0) 0xbe6ae0
* I was thinking whether it would be a good idea to handle the case when processing of interfaces provided in dyndns_iface yields no address at all by continuing to detect DYNDNS address from LDAP connection?

Thanks!