osmith has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/41247?usp=email )
Change subject: fix SCCP_MAX_OPTIONAL_DATA 128
......................................................................
fix SCCP_MAX_OPTIONAL_DATA 128
Related: SYS#7600
Change-Id: I841dbb2e8cbc13708ba7f5593f6bdd3b8da4329c
(cherry picked from commit 6ea68a2308f8ad008e1e75959d2411999bc8c3eb)
---
M include/osmocom/sccp/sccp_types.h
M src/sccp_vty.c
M tests/vty/osmo_stp_test.vty
M tests/vty/ss7_asp_test.vty
4 files changed, 26 insertions(+), 8 deletions(-)
Approvals:
osmith: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/include/osmocom/sccp/sccp_types.h b/include/osmocom/sccp/sccp_types.h
index 5be0392..ab688b3 100644
--- a/include/osmocom/sccp/sccp_types.h
+++ b/include/osmocom/sccp/sccp_types.h
@@ -24,7 +24,25 @@
#include <osmocom/core/endian.h>
#include <osmocom/core/utils.h>
-#define SCCP_MAX_OPTIONAL_DATA 130
+/* ITU Q.713 3.16 Data is a variable-length IE, meaning it has two header
+ * octets:
+ * - one octet of "Parameter name code",
+ * - plus one octet of length.
+ *
+ * In
+ * - 4.2 CR,
+ * - 4.3 CC,
+ * - 4.4 CREF,
+ * - 4.5 RLSD,
+ * there are optional "Data" IEs with length indicated as "3-130" octets: the
+ * minimum of 3 stems from the two header octets plus one data octet. Note that
+ * when there are zero data octets, the entire "Data" IE is omitted.
+ *
+ * Hence, the maximum of 130 includes the two header octets, and the actual
+ * maximum data length is 128.
+ */
+#define SCCP_MAX_OPTIONAL_DATA 128
+
#define SCCP_MAX_DATA 256
/* Table 1/Q.713 - SCCP message types */
diff --git a/src/sccp_vty.c b/src/sccp_vty.c
index 49f3577..a969423 100644
--- a/src/sccp_vty.c
+++ b/src/sccp_vty.c
@@ -174,10 +174,10 @@
"Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages."
" For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD"
" messages without any payload, and send the data payload in a separate Data Form 1 message."
- " ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 130 bytes for the 'Data' parameter. This limit can be"
+ " ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 128 bytes for the 'Data' parameter. This limit can be"
" adjusted here. May be useful for interop with nonstandard SCCP peers.\n"
"Set a non-standard maximum allowed number of bytes\n"
- "Use the ITU-T Q.713 4.2 to 4.5 standard value of 130\n",
+ "Use the ITU-T Q.713 4.2 to 4.5 standard value of 128\n",
CMD_ATTR_IMMEDIATE)
{
struct osmo_ss7_instance *ss7 = vty->index;
diff --git a/tests/vty/osmo_stp_test.vty b/tests/vty/osmo_stp_test.vty
index cb24560..56b48c5 100644
--- a/tests/vty/osmo_stp_test.vty
+++ b/tests/vty/osmo_stp_test.vty
@@ -528,11 +528,11 @@
<1-999999> Timer value, in seconds
OsmoSTP(config-cs7)# sccp ?
- max-optional-data Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages. For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD messages without any payload, and send the data payload in a separate Data Form 1 message. ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 130 bytes for the 'Data' parameter. This limit can be adjusted here. May be useful for interop with nonstandard SCCP peers.
+ max-optional-data Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages. For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD messages without any payload, and send the data payload in a separate Data Form 1 message. ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 128 bytes for the 'Data' parameter. This limit can be adjusted here. May be useful for interop with nonstandard SCCP peers.
OsmoSTP(config-cs7)# sccp max-optional-data ?
<0-999999> Set a non-standard maximum allowed number of bytes
- standard Use the ITU-T Q.713 4.2 to 4.5 standard value of 130
+ standard Use the ITU-T Q.713 4.2 to 4.5 standard value of 128
OsmoSTP(config-cs7)# show running-config
... !sccp max-optional-data
@@ -563,7 +563,7 @@
OsmoSTP(config-cs7)# show running-config
... !sccp max-optional-data
-OsmoSTP(config-cs7)# sccp max-optional-data 130
+OsmoSTP(config-cs7)# sccp max-optional-data 128
OsmoSTP(config-cs7)# show running-config
... !sccp max-optional-data
diff --git a/tests/vty/ss7_asp_test.vty b/tests/vty/ss7_asp_test.vty
index b565557..f83a452 100644
--- a/tests/vty/ss7_asp_test.vty
+++ b/tests/vty/ss7_asp_test.vty
@@ -513,11 +513,11 @@
<1-999999> Timer value, in seconds
ss7_asp_vty_test(config-cs7)# sccp ?
- max-optional-data Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages. For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD messages without any payload, and send the data payload in a separate Data Form 1 message. ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 130 bytes for the 'Data' parameter. This limit can be adjusted here. May be useful for interop with nonstandard SCCP peers.
+ max-optional-data Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages. For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD messages without any payload, and send the data payload in a separate Data Form 1 message. ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 128 bytes for the 'Data' parameter. This limit can be adjusted here. May be useful for interop with nonstandard SCCP peers.
ss7_asp_vty_test(config-cs7)# sccp max-optional-data ?
<0-999999> Set a non-standard maximum allowed number of bytes
- standard Use the ITU-T Q.713 4.2 to 4.5 standard value of 130
+ standard Use the ITU-T Q.713 4.2 to 4.5 standard value of 128
ss7_asp_vty_test(config-cs7)# show running-config
... !sccp max-optional-data
--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/41247?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: osmith/2.1.2
Gerrit-Change-Id: I841dbb2e8cbc13708ba7f5593f6bdd3b8da4329c
Gerrit-Change-Number: 41247
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>