From patchwork Fri Jan 20 18:00:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xin Long X-Patchwork-Id: 717849 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v4pRW5lmdz9sQw for ; Sat, 21 Jan 2017 05:01:11 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ap1l4/K5"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752731AbdATSBK (ORCPT ); Fri, 20 Jan 2017 13:01:10 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:33382 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752670AbdATSBI (ORCPT ); Fri, 20 Jan 2017 13:01:08 -0500 Received: by mail-pg0-f68.google.com with SMTP id 194so7433295pgd.0; Fri, 20 Jan 2017 10:01:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=ue+LeP+iAem2XZDGp+oGbwGosPuOtKj0hunCinvLQK4=; b=Ap1l4/K5SQhGJHDT27ymriQzthfu9blnlSSSlmWfv1R9p1K7a5QibigAWpKMhvVYPl xEujmhoxWZgBaHtOZkFMT50s7zSUDXCnAvDWRTrpybRkKywwjJULGYHEwF/B5c42yH0m pB1IBbuOWtTHVU4YeWPZLKez2ZAfcSHbKLjIgUtizS/S5ZGGR1pA4aA/Pihfj+w0ec27 RavwGxfydWt8oz/vMm7xlqX9W23SCdmEShJiAevneiaEwEyP4eA9Ru8fAVlr46zqSVkp Rzllo2qmL9eF7LDrnyzfCWG4aeUzuOb1IGDEJApY0IY9/nAwB5kbeCbnkhANdb3zONm3 Mf6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=ue+LeP+iAem2XZDGp+oGbwGosPuOtKj0hunCinvLQK4=; b=WQxHDk3qHUlOZUwR8DX/EJdplhBpVg28rBtlENoH1l3wrFTYNhKc1iN0LuXVVLFT8r XYgldSTLzWTBCXOtfhvge6GUfPoG7Q78n4DwXXg1oKrsfGSPSi4GTVqUJP0HqU8aL0Ba ePqvSd5pnM1XEOeHvrSoVZg1aAgkPbyEFE/ge3djdKb0AZtKYiaB5cXCKChKRchxiX7C eY9feKP+4DxTR0rha2Lnydfoep8+/qXy0WaW5QwPIlUVTV1tgdBGYF89O0/hjlfSXnLN eiDRybk/TRefzIzVwpP8vppAU4y58az2FBTzdEeFwPCpVKKjARhknKvgiVQqQ6rWZ4M8 qCGQ== X-Gm-Message-State: AIkVDXIlM/0J1ecDEHrxg95GEOIFgw1206E479upmmPZbaTpQOj+6oK7bKhwI6/FzXLzMg== X-Received: by 10.84.140.133 with SMTP id 5mr22258472plt.178.1484935262903; Fri, 20 Jan 2017 10:01:02 -0800 (PST) Received: from localhost ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id 18sm18488795pgf.28.2017.01.20.10.01.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Jan 2017 10:01:02 -0800 (PST) From: Xin Long To: network dev , linux-sctp@vger.kernel.org Cc: Marcelo Ricardo Leitner , Neil Horman , Vlad Yasevich , davem@davemloft.net Subject: [PATCHv4 net-next 2/5] sctp: add support for generating stream reconf ssn/tsn reset request chunk Date: Sat, 21 Jan 2017 02:00:36 +0800 Message-Id: <94a2321ec900105a1e4822a2489dd4fd20a37ca4.1484934853.git.lucien.xin@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <162aa3d0e82a2224ea08f2adc8bf4c0eb99b5cac.1484934853.git.lucien.xin@gmail.com> References: <162aa3d0e82a2224ea08f2adc8bf4c0eb99b5cac.1484934853.git.lucien.xin@gmail.com> In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch is to define SSN/TSN Reset Request Parameter described in rfc6525 section 4.3. Signed-off-by: Xin Long --- include/linux/sctp.h | 5 +++++ include/net/sctp/sm.h | 2 ++ net/sctp/sm_make_chunk.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/include/linux/sctp.h b/include/linux/sctp.h index a9e7906..95b8ed3 100644 --- a/include/linux/sctp.h +++ b/include/linux/sctp.h @@ -737,4 +737,9 @@ struct sctp_strreset_inreq { __u16 list_of_streams[0]; } __packed; +struct sctp_strreset_tsnreq { + sctp_paramhdr_t param_hdr; + __u32 request_seq; +} __packed; + #endif /* __LINUX_SCTP_H__ */ diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index 430ed13..ac37c17 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h @@ -265,6 +265,8 @@ struct sctp_chunk *sctp_make_strreset_req( const struct sctp_association *asoc, __u16 stream_num, __u16 *stream_list, bool out, bool in); +struct sctp_chunk *sctp_make_strreset_tsnreq( + const struct sctp_association *asoc); void sctp_chunk_assign_tsn(struct sctp_chunk *); void sctp_chunk_assign_ssn(struct sctp_chunk *); diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index ad3445b..801450c 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c @@ -3660,3 +3660,32 @@ struct sctp_chunk *sctp_make_strreset_req( return retval; } + +/* RE-CONFIG 4.3 (SSN/TSN RESET ALL) + * 0 1 2 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Parameter Type = 15 | Parameter Length = 8 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Re-configuration Request Sequence Number | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct sctp_chunk *sctp_make_strreset_tsnreq( + const struct sctp_association *asoc) +{ + struct sctp_strreset_tsnreq tsnreq; + __u16 length = sizeof(tsnreq); + struct sctp_chunk *retval; + + retval = sctp_make_reconf(asoc, length); + if (!retval) + return NULL; + + tsnreq.param_hdr.type = SCTP_PARAM_RESET_TSN_REQUEST; + tsnreq.param_hdr.length = htons(length); + tsnreq.request_seq = htonl(asoc->strreset_outseq); + + sctp_addto_chunk(retval, sizeof(tsnreq), &tsnreq); + + return retval; +}