@@ -1241,7 +1241,7 @@ static int sctp_sf_check_restart_addrs(const struct sctp_association *new_asoc,
sctp_cmd_seq_t *commands)
{
struct sctp_transport *new_addr, *addr;
- int found;
+ int ret = 1;
/* Implementor's Guide - Sectin 5.2.2
* ...
@@ -1254,31 +1254,28 @@ static int sctp_sf_check_restart_addrs(const struct sctp_association *new_asoc,
/* Search through all current addresses and make sure
* we aren't adding any new ones.
*/
- new_addr = NULL;
- found = 0;
-
list_for_each_entry(new_addr, &new_asoc->peer.transport_addr_list,
transports) {
- found = 0;
list_for_each_entry(addr, &asoc->peer.transport_addr_list,
transports) {
if (sctp_cmp_addr_exact(&new_addr->ipaddr,
- &addr->ipaddr)) {
- found = 1;
- break;
- }
+ &addr->ipaddr))
+ goto next;
}
- if (!found)
- break;
- }
- /* If a new address was added, ABORT the sender. */
- if (!found && new_addr) {
+ /* 'new_addr' could not be found in the transport address
+ * list of 'asoc', abort.
+ */
sctp_sf_send_restart_abort(&new_addr->ipaddr, init, commands);
+ ret = 0;
+ break;
+
+ next:
+ ;
}
/* Return success if all addresses were found. */
- return found;
+ return ret;
}
/* Populate the verification/tie tags based on overlapping INIT