@@ -43,6 +43,7 @@ static const char sock_connect_usage_str[] =
4343 "Usage: sock connect -a <address> -p <port>\n"
4444 " [-f <family>] [-t <type>] [-b <port>] [-I <cid>] [-K]\n"
4545 " [-S] [-T <sec_tag>] [-c] [-V <level>] [-H <hostname>]\n"
46+ " [-C <dtls_cid>] [-F <dtls_frag_ext>]\n"
4647 "Options:\n"
4748 " -a, --address, [str] Address as ip address or hostname\n"
4849 " -p, --port, [int] Port\n"
@@ -57,10 +58,14 @@ static const char sock_connect_usage_str[] =
5758 " -S, --secure, Enable secure connection (TLS 1.2/DTLS 1.2).\n"
5859 " -T, --sec_tag, [int] Security tag for TLS certificate(s).\n"
5960 " -c, --cache, Enable TLS session cache.\n"
60- " -V, --peer_verify, [int] TLS peer verification level. None (0), \n"
61- " optional (1) or required (2). Default value is 2 .\n"
61+ " -V, --peer_verify, [int] TLS peer verification level: 0 (none), 1 (optional) or \n"
62+ " 2 ( required, default) .\n"
6263 " -H, --hostname, [str] Hostname for TLS peer verification.\n"
63- " -C, --dtls_cid, [int] DTLS CID setting: 0 (disabled), 1 (supported), 2 (enabled).\n"
64+ " -C, --dtls_cid, [int] DTLS CID setting: 0 (disabled, default), 1 (supported) or\n"
65+ " 2 (enabled).\n"
66+ " -F, --dtls_frag_ext, [int]\n"
67+ " DTLS fragmentation extension setting:\n"
68+ " 0 (disabled, default), 1 (512 bytes) or 2 (1024 bytes).\n"
6469 " -h, --help, Shows this help information" ;
6570
6671static const char sock_close_usage_str [] =
@@ -259,6 +264,7 @@ static struct option long_options[] = {
259264 { "peer_verify" , required_argument , 0 , 'V' },
260265 { "hostname" , required_argument , 0 , 'H' },
261266 { "dtls_cid" , required_argument , 0 , 'C' },
267+ { "dtls_frag_ext" , required_argument , 0 , 'F' },
262268 { "data" , required_argument , 0 , 'd' },
263269 { "length" , required_argument , 0 , 'l' },
264270 { "period" , required_argument , 0 , 'e' },
@@ -282,7 +288,7 @@ static struct option long_options[] = {
282288 { 0 , 0 , 0 , 0 }
283289};
284290
285- static const char short_options [] = "i:I:a:p:f:t:b:ST:cV:H:C:d:l:e:s:xrB:WKP:o:v:h" ;
291+ static const char short_options [] = "i:I:a:p:f:t:b:ST:cV:H:C:F: d:l:e:s:xrB:WKP:o:v:h" ;
286292
287293static void sock_print_usage (enum sock_shell_command command )
288294{
@@ -438,6 +444,7 @@ static int cmd_sock_connect(const struct shell *shell, size_t argc, char **argv)
438444 int arg_peer_verify = 2 ;
439445 char arg_peer_hostname [SOCK_MAX_ADDR_LEN + 1 ];
440446 int arg_dtls_cid = 0 ;
447+ int arg_dtls_frag_ext = 0 ;
441448
442449 memset (arg_address , 0 , SOCK_MAX_ADDR_LEN + 1 );
443450 memset (arg_peer_hostname , 0 , SOCK_MAX_ADDR_LEN + 1 );
@@ -565,7 +572,15 @@ static int cmd_sock_connect(const struct shell *shell, size_t argc, char **argv)
565572 return - EINVAL ;
566573 }
567574 break ;
568-
575+ case 'F' : /* DTLS fragmentation extension */
576+ arg_dtls_frag_ext = atoi (optarg );
577+ if (arg_dtls_frag_ext < 0 || arg_dtls_frag_ext > 2 ) {
578+ mosh_error (
579+ "Valid values for DTLS fragmentation extension (%d) are "
580+ "0, 1 and 2." , arg_dtls_frag_ext );
581+ return - EINVAL ;
582+ }
583+ break ;
569584 case 'h' :
570585 goto show_usage ;
571586 case '?' :
@@ -593,7 +608,8 @@ static int cmd_sock_connect(const struct shell *shell, size_t argc, char **argv)
593608 arg_keep_open ,
594609 arg_peer_verify ,
595610 arg_peer_hostname ,
596- arg_dtls_cid );
611+ arg_dtls_cid ,
612+ arg_dtls_frag_ext );
597613
598614 return err ;
599615
0 commit comments