Author: tuexen
Date: Mon Jun 22 05:34:13 2015
New Revision: 284693
URL: https://svnweb.freebsd.org/changeset/base/284693
Log:
MFC r284596:
When setting the primary address, return an error whenever it fails.
Modified:
stable/10/sys/netinet/sctp_usrreq.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/netinet/sctp_usrreq.c
==============================================================================
--- stable/10/sys/netinet/sctp_usrreq.c Mon Jun 22 05:31:29 2015
(r284692)
+++ stable/10/sys/netinet/sctp_usrreq.c Mon Jun 22 05:34:13 2015
(r284693)
@@ -5678,16 +5678,23 @@ sctp_setopt(struct socket *so, int optna
}
if ((stcb != NULL) && (net != NULL)) {
- if ((net != stcb->asoc.primary_destination) &&
- (!(net->dest_state &
SCTP_ADDR_UNCONFIRMED))) {
- /* Ok we need to set it */
- if (sctp_set_primary_addr(stcb, (struct
sockaddr *)NULL, net) == 0) {
- if ((stcb->asoc.alternate) &&
- (!(net->dest_state &
SCTP_ADDR_PF)) &&
- (net->dest_state &
SCTP_ADDR_REACHABLE)) {
-
sctp_free_remote_addr(stcb->asoc.alternate);
- stcb->asoc.alternate =
NULL;
+ if (net != stcb->asoc.primary_destination) {
+ if (!(net->dest_state &
SCTP_ADDR_UNCONFIRMED)) {
+ /* Ok we need to set it */
+ if (sctp_set_primary_addr(stcb,
(struct sockaddr *)NULL, net) == 0) {
+ if
((stcb->asoc.alternate) &&
+ (!(net->dest_state
& SCTP_ADDR_PF)) &&
+ (net->dest_state &
SCTP_ADDR_REACHABLE)) {
+
sctp_free_remote_addr(stcb->asoc.alternate);
+
stcb->asoc.alternate = NULL;
+ }
+ } else {
+
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
+ error = EINVAL;
}
+ } else {
+ SCTP_LTRACE_ERR_RET(inp, NULL,
NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
+ error = EINVAL;
}
}
} else {
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"