Make struct sctp_paddrthlds compliant to RFC 7829.
This commit is contained in:
parent
1447d404e0
commit
4f3b84b524
@ -590,6 +590,7 @@ struct sctp_paddrthlds {
|
|||||||
sctp_assoc_t spt_assoc_id;
|
sctp_assoc_t spt_assoc_id;
|
||||||
uint16_t spt_pathmaxrxt;
|
uint16_t spt_pathmaxrxt;
|
||||||
uint16_t spt_pathpfthld;
|
uint16_t spt_pathpfthld;
|
||||||
|
uint16_t spt_pathcpthld;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sctp_paddrinfo {
|
struct sctp_paddrinfo {
|
||||||
|
@ -3304,9 +3304,11 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize,
|
|||||||
if (net != NULL) {
|
if (net != NULL) {
|
||||||
thlds->spt_pathmaxrxt = net->failure_threshold;
|
thlds->spt_pathmaxrxt = net->failure_threshold;
|
||||||
thlds->spt_pathpfthld = net->pf_threshold;
|
thlds->spt_pathpfthld = net->pf_threshold;
|
||||||
|
thlds->spt_pathcpthld = 0xffff;
|
||||||
} else {
|
} else {
|
||||||
thlds->spt_pathmaxrxt = stcb->asoc.def_net_failure;
|
thlds->spt_pathmaxrxt = stcb->asoc.def_net_failure;
|
||||||
thlds->spt_pathpfthld = stcb->asoc.def_net_pf_threshold;
|
thlds->spt_pathpfthld = stcb->asoc.def_net_pf_threshold;
|
||||||
|
thlds->spt_pathcpthld = 0xffff;
|
||||||
}
|
}
|
||||||
thlds->spt_assoc_id = sctp_get_associd(stcb);
|
thlds->spt_assoc_id = sctp_get_associd(stcb);
|
||||||
SCTP_TCB_UNLOCK(stcb);
|
SCTP_TCB_UNLOCK(stcb);
|
||||||
@ -3318,6 +3320,7 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize,
|
|||||||
SCTP_INP_RLOCK(inp);
|
SCTP_INP_RLOCK(inp);
|
||||||
thlds->spt_pathmaxrxt = inp->sctp_ep.def_net_failure;
|
thlds->spt_pathmaxrxt = inp->sctp_ep.def_net_failure;
|
||||||
thlds->spt_pathpfthld = inp->sctp_ep.def_net_pf_threshold;
|
thlds->spt_pathpfthld = inp->sctp_ep.def_net_pf_threshold;
|
||||||
|
thlds->spt_pathcpthld = 0xffff;
|
||||||
SCTP_INP_RUNLOCK(inp);
|
SCTP_INP_RUNLOCK(inp);
|
||||||
} else {
|
} else {
|
||||||
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
|
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
|
||||||
@ -6345,6 +6348,11 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (thlds->spt_pathcpthld != 0xffff) {
|
||||||
|
error = EINVAL;
|
||||||
|
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (stcb != NULL) {
|
if (stcb != NULL) {
|
||||||
if (net != NULL) {
|
if (net != NULL) {
|
||||||
net->failure_threshold = thlds->spt_pathmaxrxt;
|
net->failure_threshold = thlds->spt_pathmaxrxt;
|
||||||
|
Loading…
Reference in New Issue
Block a user