+static struct odhcpd_ipaddr *relay_link_address(struct interface *iface)
+{
+ struct odhcpd_ipaddr *addr = NULL;
+ time_t now = odhcpd_time();
+
+ for (size_t i = 0; i < iface->ia_addr_len; i++) {
+ if (iface->ia_addr[i].valid <= (uint32_t)now)
+ continue;
+
+ if (iface->ia_addr[i].preferred > (uint32_t)now) {
+ addr = &iface->ia_addr[i];
+ break;
+ }
+
+ if (!addr || (iface->ia_addr[i].valid > addr->valid))
+ addr = &iface->ia_addr[i];
+ }
+
+ return addr;
+}