diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-03-23 14:34:08 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:28:03 -0400 |
commit | a5a35e76753d27e782028843a5186f176b50dd16 (patch) | |
tree | 229cd1440150deca3893774dd837e901e88af960 /net/sctp/sm_statefuns.c | |
parent | bdf3092af601ccad765974652ab103162fbe14f4 (diff) |
[SCTP]: Implement sac_info field in SCTP_ASSOC_CHANGE notification.
As stated in the sctp socket api draft:
sac_info: variable
If the sac_state is SCTP_COMM_LOST and an ABORT chunk was received
for this association, sac_info[] contains the complete ABORT chunk as
defined in the SCTP specification RFC2960 [RFC2960] section 3.3.7.
We now save received ABORT chunks into the sac_info field and pass that
to the user.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/sm_statefuns.c')
-rw-r--r-- | net/sctp/sm_statefuns.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c index 438e5dc5c714..e0ec16dd678a 100644 --- a/net/sctp/sm_statefuns.c +++ b/net/sctp/sm_statefuns.c | |||
@@ -186,7 +186,7 @@ sctp_disposition_t sctp_sf_do_4_C(const struct sctp_endpoint *ep, | |||
186 | * notification is passed to the upper layer. | 186 | * notification is passed to the upper layer. |
187 | */ | 187 | */ |
188 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, | 188 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, |
189 | 0, 0, 0, GFP_ATOMIC); | 189 | 0, 0, 0, NULL, GFP_ATOMIC); |
190 | if (ev) | 190 | if (ev) |
191 | sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, | 191 | sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, |
192 | SCTP_ULPEVENT(ev)); | 192 | SCTP_ULPEVENT(ev)); |
@@ -661,7 +661,7 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep, | |||
661 | ev = sctp_ulpevent_make_assoc_change(new_asoc, 0, SCTP_COMM_UP, 0, | 661 | ev = sctp_ulpevent_make_assoc_change(new_asoc, 0, SCTP_COMM_UP, 0, |
662 | new_asoc->c.sinit_num_ostreams, | 662 | new_asoc->c.sinit_num_ostreams, |
663 | new_asoc->c.sinit_max_instreams, | 663 | new_asoc->c.sinit_max_instreams, |
664 | GFP_ATOMIC); | 664 | NULL, GFP_ATOMIC); |
665 | if (!ev) | 665 | if (!ev) |
666 | goto nomem_ev; | 666 | goto nomem_ev; |
667 | 667 | ||
@@ -790,7 +790,7 @@ sctp_disposition_t sctp_sf_do_5_1E_ca(const struct sctp_endpoint *ep, | |||
790 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP, | 790 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP, |
791 | 0, asoc->c.sinit_num_ostreams, | 791 | 0, asoc->c.sinit_num_ostreams, |
792 | asoc->c.sinit_max_instreams, | 792 | asoc->c.sinit_max_instreams, |
793 | GFP_ATOMIC); | 793 | NULL, GFP_ATOMIC); |
794 | 794 | ||
795 | if (!ev) | 795 | if (!ev) |
796 | goto nomem; | 796 | goto nomem; |
@@ -1625,7 +1625,7 @@ static sctp_disposition_t sctp_sf_do_dupcook_a(const struct sctp_endpoint *ep, | |||
1625 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0, | 1625 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0, |
1626 | new_asoc->c.sinit_num_ostreams, | 1626 | new_asoc->c.sinit_num_ostreams, |
1627 | new_asoc->c.sinit_max_instreams, | 1627 | new_asoc->c.sinit_max_instreams, |
1628 | GFP_ATOMIC); | 1628 | NULL, GFP_ATOMIC); |
1629 | if (!ev) | 1629 | if (!ev) |
1630 | goto nomem_ev; | 1630 | goto nomem_ev; |
1631 | 1631 | ||
@@ -1691,7 +1691,7 @@ static sctp_disposition_t sctp_sf_do_dupcook_b(const struct sctp_endpoint *ep, | |||
1691 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP, 0, | 1691 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP, 0, |
1692 | new_asoc->c.sinit_num_ostreams, | 1692 | new_asoc->c.sinit_num_ostreams, |
1693 | new_asoc->c.sinit_max_instreams, | 1693 | new_asoc->c.sinit_max_instreams, |
1694 | GFP_ATOMIC); | 1694 | NULL, GFP_ATOMIC); |
1695 | if (!ev) | 1695 | if (!ev) |
1696 | goto nomem_ev; | 1696 | goto nomem_ev; |
1697 | 1697 | ||
@@ -1786,7 +1786,7 @@ static sctp_disposition_t sctp_sf_do_dupcook_d(const struct sctp_endpoint *ep, | |||
1786 | SCTP_COMM_UP, 0, | 1786 | SCTP_COMM_UP, 0, |
1787 | asoc->c.sinit_num_ostreams, | 1787 | asoc->c.sinit_num_ostreams, |
1788 | asoc->c.sinit_max_instreams, | 1788 | asoc->c.sinit_max_instreams, |
1789 | GFP_ATOMIC); | 1789 | NULL, GFP_ATOMIC); |
1790 | if (!ev) | 1790 | if (!ev) |
1791 | goto nomem; | 1791 | goto nomem; |
1792 | 1792 | ||
@@ -3035,7 +3035,7 @@ sctp_disposition_t sctp_sf_do_9_2_final(const struct sctp_endpoint *ep, | |||
3035 | * notification is passed to the upper layer. | 3035 | * notification is passed to the upper layer. |
3036 | */ | 3036 | */ |
3037 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, | 3037 | ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, |
3038 | 0, 0, 0, GFP_ATOMIC); | 3038 | 0, 0, 0, NULL, GFP_ATOMIC); |
3039 | if (!ev) | 3039 | if (!ev) |
3040 | goto nomem; | 3040 | goto nomem; |
3041 | 3041 | ||