list_for_each_entry(c, &iface->ia_assignments, head) {
if (c->length != 128 || c->assigned > a->assigned) {
list_add_tail(&a->head, &c->head);
+ break;
} else if (c->assigned == a->assigned) {
// Already an assignment with that number
break;
if (iface->dhcpv6 != RELAYD_SERVER && iface->dhcpv4 != RELAYD_SERVER)
continue;
- if (iface->dhcpv6 == RELAYD_SERVER) {
+ if (iface->dhcpv6 == RELAYD_SERVER && iface->ia_assignments.next) {
struct dhcpv6_assignment *c;
list_for_each_entry(c, &iface->ia_assignments, head) {
if (c->clid_len == 0)
}
}
- if (iface->dhcpv4 == RELAYD_SERVER) {
+ if (iface->dhcpv4 == RELAYD_SERVER && iface->dhcpv4_assignments.next) {
struct dhcpv4_assignment *c;
list_for_each_entry(c, &iface->dhcpv4_assignments, head) {
char ipbuf[INET6_ADDRSTRLEN];