sctp: make heartbeat information in sctp_make_heartbeat()
Subsystems (2)
PATCH 2/3 sctp: make heartbeat information in sctp_make_heartbeat()
Make heartbeat information in sctp_make_heartbeat() instead of make it in sctp_sf_heartbeat() directly for common using.
Signed-off-by Wei Yongjun <[email protected]>
--- include/net/sctp/sm.h | 4 +--- net/sctp/sm_make_chunk.c | 18 +++++++++++++----- net/sctp/sm_statefuns.c | 11 +---------- 3 files changed, 15 insertions(+), 18 deletions(-)
include/net/sctp/sm.h +1 -3
@@ -232,9 +232,7 @@ struct sctp_chunk *sctp_make_violation_paramlen(const struct sctp_association *, const struct sctp_chunk *, struct sctp_paramhdr *);struct sctp_chunk *sctp_make_heartbeat (const struct sctp_association *, -const struct sctp_transport *, -const void *payload, -const size_t paylen); +const struct sctp_transport *); struct sctp_chunk *sctp_make_heartbeat_ack(const struct sctp_association *, const struct sctp_chunk *, const void *payload,
net/sctp/sm_make_chunk.c +13 -5
@@ -1073,20 +1073,28 @@ nodata:/* Make a HEARTBEAT chunk. */ struct sctp_chunk *sctp_make_heartbeat (const struct sctp_association *asoc, -const struct sctp_transport *transport, -const void *payload,const size_t paylen) +const struct sctp_transport *transport) { -struct sctp_chunk *retval =sctp_make_chunk (asoc,SCTP_CID_HEARTBEAT , -0 , paylen); +struct sctp_chunk *retval; +sctp_sender_hb_info_t hbinfo; + + retval =sctp_make_chunk (asoc,SCTP_CID_HEARTBEAT ,0 ,sizeof (hbinfo));if (!retval) goto nodata; + hbinfo.param_hdr.type =SCTP_PARAM_HEARTBEAT_INFO ; + hbinfo.param_hdr.length =htons (sizeof (sctp_sender_hb_info_t)); + hbinfo.daddr = transport->ipaddr; + hbinfo.sent_at = jiffies; + hbinfo.hb_nonce = transport->hb_nonce; +/* Cast away the 'const', as this is just telling the chunk * what transport it belongs to. */ retval->transport = (struct sctp_transport *) transport; - retval->subh.hbs_hdr =sctp_addto_chunk (retval, paylen, payload); + retval->subh.hbs_hdr =sctp_addto_chunk (retval,sizeof (hbinfo), + &hbinfo); nodata:return retval;
net/sctp/sm_statefuns.c +1 -10
@@ -939,18 +939,9 @@ static sctp_disposition_t sctp_sf_heartbeat(const struct sctp_endpoint *ep, {struct sctp_transport *transport = (struct sctp_transport *) arg;struct sctp_chunk *reply; -sctp_sender_hb_info_t hbinfo; -size_t paylen =0 ; - - hbinfo.param_hdr.type =SCTP_PARAM_HEARTBEAT_INFO ; - hbinfo.param_hdr.length =htons (sizeof (sctp_sender_hb_info_t)); - hbinfo.daddr = transport->ipaddr; - hbinfo.sent_at = jiffies; - hbinfo.hb_nonce = transport->hb_nonce;/* Send a heartbeat to our peer. */ - paylen =sizeof (sctp_sender_hb_info_t); - reply =sctp_make_heartbeat (asoc, transport, &hbinfo, paylen); + reply =sctp_make_heartbeat (asoc, transport);if (!reply)return SCTP_DISPOSITION_NOMEM ;
Signature · 1 line
1.6.5.2