From: Rui Date: Mon, 16 Aug 2021 18:36:00 +0000 (+0100) Subject: MPTCP: Add missing MP_CAPABLE Flags X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/dcae3b01d76f9a040f2a6e3d2c861c25c2d60a73?hp=-c MPTCP: Add missing MP_CAPABLE Flags Parse previous ignored flags from MP_CAPABLE option --- dcae3b01d76f9a040f2a6e3d2c861c25c2d60a73 diff --git a/print-mptcp.c b/print-mptcp.c index b8af92db..de12f30e 100644 --- a/print-mptcp.c +++ b/print-mptcp.c @@ -66,6 +66,20 @@ struct mptcp_option { #define MPTCP_OPT_SUBTYPE(sub_etc) (((sub_etc) >> 4) & 0xF) +#define MP_CAPABLE_A 0x80 + +static const struct tok mp_capable_flags[] = { + { MP_CAPABLE_A, "A" }, + { 0x40, "B" }, + { 0x20, "C" }, + { 0x10, "D" }, + { 0x08, "E" }, + { 0x04, "F" }, + { 0x02, "G" }, + { 0x01, "H" }, + { 0, NULL } +}; + struct mp_capable { nd_uint8_t kind; nd_uint8_t len; @@ -77,8 +91,6 @@ struct mp_capable { }; #define MP_CAPABLE_OPT_VERSION(sub_ver) (((sub_ver) >> 0) & 0xF) -#define MP_CAPABLE_C 0x80 -#define MP_CAPABLE_S 0x01 struct mp_join { nd_uint8_t kind; @@ -238,8 +250,11 @@ mp_capable_print(netdissect_options *ndo, ND_PRINT(" Unknown Version (%u)", version); return 1; } + + ND_PRINT(" flags [%s]", bittok2str_nosep(mp_capable_flags, "none", + GET_U_1(mpc->flags))); - csum_enabled = GET_U_1(mpc->flags) & MP_CAPABLE_C; + csum_enabled = GET_U_1(mpc->flags) & MP_CAPABLE_A; if (csum_enabled) ND_PRINT(" csum"); if (opt_len == 12 || opt_len >= 20) { diff --git a/tests/mptcp-aa-v1.out b/tests/mptcp-aa-v1.out index 0fd8023e..55edf630 100644 --- a/tests/mptcp-aa-v1.out +++ b/tests/mptcp-aa-v1.out @@ -1,9 +1,9 @@ 1 18:44:15.949492 IP 192.168.125.165.43428 > 192.168.125.1.53: 61359+ A? proxy-chain.intel.com.network2. (48) 2 18:44:15.949675 IP 192.168.125.165.43428 > 192.168.125.1.53: 30665+ AAAA? proxy-chain.intel.com.network2. (48) - 3 18:44:24.039044 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [S], seq 653223703, win 64240, options [mss 1460,sackOK,TS val 2070300959 ecr 0,nop,wscale 7,mptcp 4 capable v1], length 0 - 4 18:44:24.039622 IP 192.168.125.165.55555 > 192.168.125.212.52278: Flags [S.], seq 3797229782, ack 653223704, win 65160, options [mss 1460,sackOK,TS val 938670159 ecr 2070300959,nop,wscale 7,mptcp 12 capable v1 {0x73bb150358a0aecb}], length 0 - 5 18:44:24.039910 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [.], ack 1, win 502, options [nop,nop,TS val 2070300960 ecr 938670159,mptcp 20 capable v1 {0x8f0c7c64a6a32ac1,0x73bb150358a0aecb}], length 0 - 6 18:44:24.042337 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [P.], seq 1:17, ack 1, win 502, options [nop,nop,TS val 2070300963 ecr 938670159,mptcp 22 capable v1 {0x8f0c7c64a6a32ac1,0x73bb150358a0aecb,data_len=16},nop,nop], length 16 + 3 18:44:24.039044 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [S], seq 653223703, win 64240, options [mss 1460,sackOK,TS val 2070300959 ecr 0,nop,wscale 7,mptcp 4 capable v1 flags [H]], length 0 + 4 18:44:24.039622 IP 192.168.125.165.55555 > 192.168.125.212.52278: Flags [S.], seq 3797229782, ack 653223704, win 65160, options [mss 1460,sackOK,TS val 938670159 ecr 2070300959,nop,wscale 7,mptcp 12 capable v1 flags [H] {0x73bb150358a0aecb}], length 0 + 5 18:44:24.039910 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [.], ack 1, win 502, options [nop,nop,TS val 2070300960 ecr 938670159,mptcp 20 capable v1 flags [H] {0x8f0c7c64a6a32ac1,0x73bb150358a0aecb}], length 0 + 6 18:44:24.042337 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [P.], seq 1:17, ack 1, win 502, options [nop,nop,TS val 2070300963 ecr 938670159,mptcp 22 capable v1 flags [H] {0x8f0c7c64a6a32ac1,0x73bb150358a0aecb,data_len=16},nop,nop], length 16 7 18:44:24.042622 IP 192.168.125.165.55555 > 192.168.125.212.52278: Flags [.], ack 17, win 509, options [nop,nop,TS val 938670162 ecr 2070300963,mptcp 12 dss ack 17186763219675866565], length 0 8 18:44:24.043277 IP 192.168.125.165.55555 > 192.168.125.212.52278: Flags [P.], seq 1:17, ack 17, win 509, options [nop,nop,TS val 938670163 ecr 2070300963,mptcp 26 dss ack 17186763219675866581 seq 12148165319181844526 subseq 1 len 16,nop,nop], length 16 9 18:44:24.043512 IP 192.168.125.212.52278 > 192.168.125.165.55555: Flags [.], ack 17, win 502, options [nop,nop,TS val 2070300964 ecr 938670163,mptcp 12 dss ack 12148165319181844526], length 0 diff --git a/tests/mptcp-fclose.out b/tests/mptcp-fclose.out index a9b4d99e..7136fc9d 100644 --- a/tests/mptcp-fclose.out +++ b/tests/mptcp-fclose.out @@ -1,8 +1,8 @@ 1 15:40:42.767916 ARP, Request who-has 10.2.1.2 tell 10.2.1.1, length 28 2 15:40:42.768169 ARP, Reply 10.2.1.2 is-at d6:06:3c:4a:35:7a, length 28 - 3 15:40:42.768187 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [S], seq 1895673170, win 14600, options [mss 1460,sackOK,TS val 38230 ecr 0,nop,wscale 6,mptcp 12 capable v0 csum {0x9b59be3d695e66a7}], length 0 - 4 15:40:42.768439 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [S.], seq 2868811558, ack 1895673171, win 14280, options [mss 1460,sackOK,TS val 4294943148 ecr 38230,nop,wscale 6,mptcp 12 capable v0 csum {0xd005b1ab34bad344}], length 0 - 5 15:40:42.768831 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [.], ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp 20 capable v0 csum {0x9b59be3d695e66a7,0xd005b1ab34bad344}], length 0 + 3 15:40:42.768187 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [S], seq 1895673170, win 14600, options [mss 1460,sackOK,TS val 38230 ecr 0,nop,wscale 6,mptcp 12 capable v0 flags [AH] csum {0x9b59be3d695e66a7}], length 0 + 4 15:40:42.768439 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [S.], seq 2868811558, ack 1895673171, win 14280, options [mss 1460,sackOK,TS val 4294943148 ecr 38230,nop,wscale 6,mptcp 12 capable v0 flags [AH] csum {0xd005b1ab34bad344}], length 0 + 5 15:40:42.768831 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [.], ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp 20 capable v0 flags [AH] csum {0x9b59be3d695e66a7,0xd005b1ab34bad344}], length 0 6 15:40:42.769130 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [P.], seq 1:2, ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp 20 dss ack 3386645601 seq 2976985014 subseq 1 len 1 csum 0x9e91], length 1 7 15:40:42.769364 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [.], ack 2, win 224, options [nop,nop,TS val 4294943148 ecr 38230,mptcp 8 dss ack 2976985015], length 0 8 15:40:43.780182 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [P.], seq 1:2, ack 2, win 224, options [nop,nop,TS val 4294943250 ecr 38230,mptcp 20 dss ack 2976985015 seq 3386645601 subseq 1 len 1 csum 0x54ab], length 1 diff --git a/tests/mptcp-v0.out b/tests/mptcp-v0.out index 6f793f42..88610c74 100644 --- a/tests/mptcp-v0.out +++ b/tests/mptcp-v0.out @@ -1,6 +1,6 @@ - 1 12:56:35.701161 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [S], seq 2912457561, win 14600, options [mss 1460,sackOK,TS val 4294943152 ecr 0,nop,wscale 6,mptcp 12 capable v0 csum {0x9c9eabd1e46a33b2}], length 0 - 2 12:56:35.701661 IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [S.], seq 125971326, ack 2912457562, win 14280, options [mss 1460,sackOK,TS val 4294943467 ecr 4294943152,nop,wscale 5,mptcp 12 capable v0 csum {0x967d2770b6960552}], length 0 - 3 12:56:35.702022 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294943152 ecr 4294943467,mptcp 20 capable v0 csum {0x9c9eabd1e46a33b2,0x967d2770b6960552}], length 0 + 1 12:56:35.701161 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [S], seq 2912457561, win 14600, options [mss 1460,sackOK,TS val 4294943152 ecr 0,nop,wscale 6,mptcp 12 capable v0 flags [AH] csum {0x9c9eabd1e46a33b2}], length 0 + 2 12:56:35.701661 IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [S.], seq 125971326, ack 2912457562, win 14280, options [mss 1460,sackOK,TS val 4294943467 ecr 4294943152,nop,wscale 5,mptcp 12 capable v0 flags [AH] csum {0x967d2770b6960552}], length 0 + 3 12:56:35.702022 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294943152 ecr 4294943467,mptcp 20 capable v0 flags [AH] csum {0x9c9eabd1e46a33b2,0x967d2770b6960552}], length 0 4 12:56:35.786074 IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [P.], seq 1:42, ack 1, win 447, options [nop,nop,TS val 4294943474 ecr 4294943152,mptcp 8 add-addr v0-ip4 id 1 10.1.2.2,mptcp 20 dss ack 3576348362 seq 3518592144 subseq 1 len 41 csum 0x82f], length 41: SSH: SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1 5 12:56:35.786240 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 42, win 229, options [nop,nop,TS val 4294943168 ecr 4294943474,mptcp 8 dss ack 3518592185], length 0 6 12:56:35.787634 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [P.], seq 1:42, ack 42, win 229, options [nop,nop,TS val 4294943168 ecr 4294943474,mptcp 20 dss ack 3518592185 seq 3576348362 subseq 1 len 41 csum 0x45c9], length 41: SSH: SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze2 diff --git a/tests/mptcp-v1.out b/tests/mptcp-v1.out index 6cdb4a11..14260790 100644 --- a/tests/mptcp-v1.out +++ b/tests/mptcp-v1.out @@ -1,7 +1,7 @@ - 1 15:51:06.676845 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [S], seq 2180756989, win 65535, options [mss 1460,sackOK,TS val 464494241 ecr 0,nop,wscale 8,mptcp 4 capable v1], length 0 - 2 15:51:06.676888 IP 10.0.2.1.10004 > 10.0.1.1.33306: Flags [S.], seq 791415661, ack 2180756990, win 65535, options [mss 1460,sackOK,TS val 3275212179 ecr 464494241,nop,wscale 8,mptcp 12 capable v1 {0x29a6c86981ad933c}], length 0 - 3 15:51:06.676958 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [.], ack 1, win 256, options [nop,nop,TS val 464494241 ecr 3275212179,mptcp 20 capable v1 {0x1fdb5df328bc3def,0x29a6c86981ad933c}], length 0 - 4 15:51:06.677099 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [P.], seq 1:7101, ack 1, win 256, options [nop,nop,TS val 464494241 ecr 3275212179,mptcp 22 capable v1 {0x1fdb5df328bc3def,0x29a6c86981ad933c,data_len=8192},nop,nop], length 7100 + 1 15:51:06.676845 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [S], seq 2180756989, win 65535, options [mss 1460,sackOK,TS val 464494241 ecr 0,nop,wscale 8,mptcp 4 capable v1 flags [H]], length 0 + 2 15:51:06.676888 IP 10.0.2.1.10004 > 10.0.1.1.33306: Flags [S.], seq 791415661, ack 2180756990, win 65535, options [mss 1460,sackOK,TS val 3275212179 ecr 464494241,nop,wscale 8,mptcp 12 capable v1 flags [H] {0x29a6c86981ad933c}], length 0 + 3 15:51:06.676958 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [.], ack 1, win 256, options [nop,nop,TS val 464494241 ecr 3275212179,mptcp 20 capable v1 flags [H] {0x1fdb5df328bc3def,0x29a6c86981ad933c}], length 0 + 4 15:51:06.677099 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [P.], seq 1:7101, ack 1, win 256, options [nop,nop,TS val 464494241 ecr 3275212179,mptcp 22 capable v1 flags [H] {0x1fdb5df328bc3def,0x29a6c86981ad933c,data_len=8192},nop,nop], length 7100 5 15:51:06.677113 IP 10.0.2.1.10004 > 10.0.1.1.33306: Flags [.], ack 7101, win 312, options [nop,nop,TS val 3275212179 ecr 464494241,mptcp 12 dss ack 14413541604287230030], length 0 6 15:51:06.677130 IP 10.0.1.1.33306 > 10.0.2.1.10004: Flags [P.], seq 7101:8193, ack 1, win 256, options [nop,nop,TS val 464494241 ecr 3275212179,mptcp 12 dss ack 11713449205243392242], length 1092 7 15:51:06.677136 IP 10.0.2.1.10004 > 10.0.1.1.33306: Flags [P.], seq 1:7101, ack 7101, win 312, options [nop,nop,TS val 3275212179 ecr 464494241,mptcp 26 dss ack 14413541604287230030 seq 11713449205243392242 subseq 1 len 8192,nop,nop], length 7100