diff options
author | rrs <rrs@FreeBSD.org> | 2007-06-02 11:05:08 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2007-06-02 11:05:08 +0000 |
commit | 18555b3d48ec06d96b44fa98539c6db54196054e (patch) | |
tree | c18f72f2ca85c02cfe7e378a329a507d80f9907b /sys/netinet/sctp_output.c | |
parent | c5c0761a84c2231d37094c3bc212e67e381f5fe0 (diff) | |
download | FreeBSD-src-18555b3d48ec06d96b44fa98539c6db54196054e.zip FreeBSD-src-18555b3d48ec06d96b44fa98539c6db54196054e.tar.gz |
- fix initial pcb vrf setting when the initial vrf is not the
default_vrf_id
- Missing lock/unlock of inp added as well in the v6 side.
- IFN hash table moves to sctppcbinfo since indexes are
unique across systems (including different VRFs) this makes it easier
to do ifn lookups.
Diffstat (limited to 'sys/netinet/sctp_output.c')
-rw-r--r-- | sys/netinet/sctp_output.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 022ffbe..fcc347b 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -2370,7 +2370,7 @@ sctp_choose_boundspecific_inp(struct sctp_inpcb *inp, ifn = SCTP_GET_IFN_VOID_FROM_ROUTE(ro); ifn_index = SCTP_GET_IF_INDEX_FROM_ROUTE(ro); - sctp_ifn = sctp_find_ifn(vrf, ifn, ifn_index); + sctp_ifn = sctp_find_ifn(ifn, ifn_index); /* * first question, is the ifn we will emit on in our list, if so, we * want such an address. Note that we first looked for a preferred @@ -2478,7 +2478,7 @@ sctp_choose_boundspecific_stcb(struct sctp_inpcb *inp, ifn = SCTP_GET_IFN_VOID_FROM_ROUTE(ro); ifn_index = SCTP_GET_IF_INDEX_FROM_ROUTE(ro); - sctp_ifn = sctp_find_ifn(vrf, ifn, ifn_index); + sctp_ifn = sctp_find_ifn(ifn, ifn_index); /* * first question, is the ifn we will emit on in our list? If so, @@ -2705,7 +2705,7 @@ sctp_choose_boundall(struct sctp_inpcb *inp, ifn = SCTP_GET_IFN_VOID_FROM_ROUTE(ro); ifn_index = SCTP_GET_IF_INDEX_FROM_ROUTE(ro); - emit_ifn = looked_at = sctp_ifn = sctp_find_ifn(vrf, ifn, ifn_index); + emit_ifn = looked_at = sctp_ifn = sctp_find_ifn(ifn, ifn_index); if (sctp_ifn == NULL) { /* ?? We don't have this guy ?? */ goto bound_all_plan_b; @@ -10572,7 +10572,7 @@ sctp_lower_sosend(struct socket *so, struct thread *p ) { - unsigned int sndlen, max_len; + unsigned int sndlen = 0, max_len; int error, len; struct mbuf *top = NULL; @@ -11747,6 +11747,7 @@ skip_out_eof: out: out_unlocked: + if (create_lock_applied) { SCTP_ASOC_CREATE_UNLOCK(inp); create_lock_applied = 0; |