From b5994c1089023e32ec8ed8cb5cc5fd95cf8cc448 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 24 Oct 2024 22:19:49 +0200 Subject: [PATCH 1/5] feat: add basic mqtt packet parsing support --- erts/emulator/beam/atom.names | 1 + erts/emulator/beam/erl_bif_port.c | 1 + erts/emulator/beam/packet_parser.c | 34 +++++++++++++++++++++++++++++ erts/emulator/beam/packet_parser.h | 3 ++- erts/preloaded/ebin/prim_inet.beam | Bin 102496 -> 102528 bytes erts/preloaded/src/erlang.erl | 3 ++- erts/preloaded/src/prim_inet.erl | 1 + lib/kernel/src/gen_tcp.erl | 3 ++- lib/kernel/src/inet_int.hrl | 1 + 9 files changed, 44 insertions(+), 3 deletions(-) diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names index f0fa834d493a..0d82e102f15d 100644 --- a/erts/emulator/beam/atom.names +++ b/erts/emulator/beam/atom.names @@ -457,6 +457,7 @@ atom monitors atom monotonic atom monotonic_timestamp atom more +atom mqtt atom multi_scheduling atom multiline atom nano_seconds diff --git a/erts/emulator/beam/erl_bif_port.c b/erts/emulator/beam/erl_bif_port.c index 5c32ba2cd6bc..3d471c80eac2 100644 --- a/erts/emulator/beam/erl_bif_port.c +++ b/erts/emulator/beam/erl_bif_port.c @@ -1570,6 +1570,7 @@ BIF_RETTYPE decode_packet_3(BIF_ALIST_3) case am_httph: type = TCP_PB_HTTPH; break; case am_http_bin: type = TCP_PB_HTTP_BIN; break; case am_httph_bin: type = TCP_PB_HTTPH_BIN; break; + case am_mqtt: type = TCP_PB_MQTT; break; case am_ssl_tls: type = TCP_PB_SSL_TLS; break; default: BIF_P->fvalue = am_badopt; diff --git a/erts/emulator/beam/packet_parser.c b/erts/emulator/beam/packet_parser.c index a349c3ff8446..f33a6669c310 100644 --- a/erts/emulator/beam/packet_parser.c +++ b/erts/emulator/beam/packet_parser.c @@ -471,6 +471,40 @@ int packet_get_length(enum PacketParseType htype, plen = get_int16(&ptr[3]); } goto remain; + + case TCP_PB_MQTT: { + /* Byte 1: MQTT Control Packet fixed header + * Bytes 2-2/3/4/5: Remaining Length (variable byte integer) + */ + byte vb, ptype; + hlen = 2; + plen = 0; + if (n < 1) goto more; + /* Bits 4-8: Packet type */ + ptype = ptr[0] >> 4; + /* ERROR: Type 0 is reserved, forbidden */ + if (ptype == 0) + goto error; + while (hlen <= 1 + 4) { + if (hlen > n) goto more; + vb = ptr[hlen - 1] & 0x7F; + plen |= vb << (7 * (hlen - 2)); + if (ptr[hlen - 1] & 0x80) { + hlen = hlen + 1; + } + else { + /* NOTE: Tolerate minumum-number-of-bytes rule violation + * [MQTT-1.5.5-1] + */ + goto packet; + } + } + /* ERROR: variable byte integer >4 bytes long */ + goto error; + packet: + /* No special parsing for now */ + goto remain; + } default: DEBUGF((" => case error\r\n")); diff --git a/erts/emulator/beam/packet_parser.h b/erts/emulator/beam/packet_parser.h index 633e3794c5d4..432a2728700d 100644 --- a/erts/emulator/beam/packet_parser.h +++ b/erts/emulator/beam/packet_parser.h @@ -44,7 +44,8 @@ enum PacketParseType { TCP_PB_HTTPH = 11, TCP_PB_SSL_TLS = 12, TCP_PB_HTTP_BIN = 13, - TCP_PB_HTTPH_BIN = 14 + TCP_PB_HTTPH_BIN = 14, + TCP_PB_MQTT = 15 }; typedef struct http_atom { diff --git a/erts/preloaded/ebin/prim_inet.beam b/erts/preloaded/ebin/prim_inet.beam index 960065c0d80fbc4fad95a24b3a58ea346df0401a..3d3be91fe4f176fc5be2dd6895e03ecbc21187e0 100644 GIT binary patch delta 60936 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

x`K*)C_cq-jtZQBP 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 K?orrioc{sR(c^3Y delta 60917 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

y>yWhTd_A*{u>$n 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 C;YB3? diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl index 1ba97db9e034..b40c6d5b1f74 100644 --- a/erts/preloaded/src/erlang.erl +++ b/erts/preloaded/src/erlang.erl @@ -866,7 +866,8 @@ date() -> {more, Length} | {error, Reason} when Type :: 'raw' | 0 | 1 | 2 | 4 | 'asn1' | 'cdr' | 'sunrm' | 'fcgi' - | 'tpkt' | 'line' | 'http' | 'http_bin' | 'httph' | 'httph_bin', + | 'tpkt' | 'line' | 'http' | 'http_bin' | 'httph' | 'httph_bin' + | 'mqtt', Bin :: binary(), Options :: [Opt], Opt :: {packet_size, non_neg_integer()} diff --git a/erts/preloaded/src/prim_inet.erl b/erts/preloaded/src/prim_inet.erl index b12a29bf83b2..d97914ddffde 100644 --- a/erts/preloaded/src/prim_inet.erl +++ b/erts/preloaded/src/prim_inet.erl @@ -1737,6 +1737,7 @@ type_opt_1(packet) -> {httph,?TCP_PB_HTTPH}, {http_bin, ?TCP_PB_HTTP_BIN}, {httph_bin,?TCP_PB_HTTPH_BIN}, + {mqtt, ?TCP_PB_MQTT}, {ssl, ?TCP_PB_SSL_TLS}, % obsolete {ssl_tls, ?TCP_PB_SSL_TLS}]}; type_opt_1(line_delimiter) -> int; diff --git a/lib/kernel/src/gen_tcp.erl b/lib/kernel/src/gen_tcp.erl index a272d779e162..896c4a2eed73 100644 --- a/lib/kernel/src/gen_tcp.erl +++ b/lib/kernel/src/gen_tcp.erl @@ -56,7 +56,8 @@ {nodelay, boolean()} | {packet, 0 | 1 | 2 | 4 | raw | sunrm | asn1 | - cdr | fcgi | line | tpkt | http | httph | http_bin | httph_bin } | + cdr | fcgi | line | tpkt | http | httph | http_bin | httph_bin | + mqtt } | {packet_size, non_neg_integer()} | {priority, non_neg_integer()} | {raw, diff --git a/lib/kernel/src/inet_int.hrl b/lib/kernel/src/inet_int.hrl index 2f50f2c23cbd..2dcceabb3743 100644 --- a/lib/kernel/src/inet_int.hrl +++ b/lib/kernel/src/inet_int.hrl @@ -212,6 +212,7 @@ -define(TCP_PB_SSL_TLS, 12). -define(TCP_PB_HTTP_BIN,13). -define(TCP_PB_HTTPH_BIN,14). +-define(TCP_PB_MQTT, 15). %% getstat, INET_REQ_GETSTAT From c05cb81c6648aada24e76c3919b21ef5d4f18c07 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Wed, 27 Nov 2024 15:44:06 +0100 Subject: [PATCH 2/5] test: add testcases for `mqtt` packet decoding --- erts/emulator/test/decode_packet_SUITE.erl | 34 ++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/erts/emulator/test/decode_packet_SUITE.erl b/erts/emulator/test/decode_packet_SUITE.erl index 55bc6eb06be8..63b131fd36ce 100644 --- a/erts/emulator/test/decode_packet_SUITE.erl +++ b/erts/emulator/test/decode_packet_SUITE.erl @@ -26,15 +26,15 @@ -export([all/0, suite/0,groups/0, init_per_testcase/2,end_per_testcase/2, - basic/1, ipv6/1, packet_size/1, neg/1, http/1, line/1, ssl/1, otp_8536/1, - otp_9389/1, otp_9389_line/1]). + basic/1, ipv6/1, packet_size/1, neg/1, http/1, line/1, mqtt/1, ssl/1, + otp_8536/1, otp_9389/1, otp_9389_line/1]). suite() -> [{ct_hooks,[ts_install_cth]}, {timetrap, {minutes, 1}}]. all() -> - [basic, packet_size, neg, http, line, ssl, otp_8536, + [basic, packet_size, neg, http, line, mqtt, ssl, otp_8536, otp_9389, otp_9389_line, ipv6]. groups() -> @@ -62,7 +62,7 @@ basic(Config) when is_list(Config) -> {more, undefined} = decode_pkt(2,<<0>>), {more, undefined} = decode_pkt(4,<<0,0,0>>), - Types = [1,2,4,asn1,sunrm,cdr,fcgi,tpkt,ssl_tls], + Types = [1,2,4,asn1,sunrm,cdr,fcgi,tpkt,mqtt,ssl_tls], %% Run tests for different header types and bit offsets. @@ -183,6 +183,11 @@ pack(tpkt,Bin) -> Size = byte_size(Bin) + 4, Res = <>, {Res, Res}; +pack(mqtt,Bin) -> + Type = 3, % PUBLISH + Size = pack_mqtt_vbi(byte_size(Bin)), + Res = <>, + {Res, Res}; pack(ssl_tls,Bin) -> Content = case (rand:uniform(256) - 1) of C when C<128 -> C; @@ -206,6 +211,11 @@ pack_ssl(Content, Major, Minor, Body) -> end, {Res, {ssl_tls,[],C,{Major,Minor}, Data}}. +pack_mqtt_vbi(N) when N =< 2#01111111 -> + <<0:1, N:7>>; +pack_mqtt_vbi(N) -> + <<1:1, (N rem 2#10000000):7, (pack_mqtt_vbi(N div 2#10000000))/binary>>. + ipv6(Config) when is_list(Config) -> %% Test with port Packet = <<"GET http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:4000/echo_components HTTP/1.1\r\nhost: orange\r\n\r\n">>, @@ -240,7 +250,7 @@ packet_size(Config) when is_list(Config) -> ok end end, - lists:foreach(F, [{T,D} || T<-[1,2,4,asn1,sunrm,cdr,fcgi,tpkt,ssl_tls], + lists:foreach(F, [{T,D} || T<-[1,2,4,asn1,sunrm,cdr,fcgi,tpkt,mqtt,ssl_tls], D<-lists:seq(0, byte_size(Packet)*2)]), %% Test OTP-8102, "negative" 4-byte sizes. @@ -301,6 +311,20 @@ neg(Config) when is_list(Config) -> ok. +mqtt(_Config) -> + Type = 1, % CONNECT + {more, undefined} = decode_pkt(mqtt,<<>>), + {error, invalid} = decode_pkt(mqtt,<<0>>), + {more, undefined} = decode_pkt(mqtt,<>), + {more, 2 + 10} = decode_pkt(mqtt,<>), + {more, undefined} = decode_pkt(mqtt,<>), + {more, 3 + 138} = decode_pkt(mqtt,<>), + {more, 5 + 13*128*128*128 + 12*128*128 + 11*128 + 10} = + decode_pkt(mqtt,<>), + {error, invalid} = + decode_pkt(mqtt,<>). + + http(Config) when is_list(Config) -> <<"foo">> = http_do(http_request("foo")), <<" bar">> = http_do(http_request(" bar")), From 6d775b002476509c0add3737b64c9497c48c72c4 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Wed, 27 Nov 2024 15:51:01 +0100 Subject: [PATCH 3/5] feat: consider `mqtt` valid packet type in `gen_tcp_socket` --- lib/kernel/src/gen_tcp_socket.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/kernel/src/gen_tcp_socket.erl b/lib/kernel/src/gen_tcp_socket.erl index 38be596b4495..8bcda8524465 100644 --- a/lib/kernel/src/gen_tcp_socket.erl +++ b/lib/kernel/src/gen_tcp_socket.erl @@ -1637,7 +1637,8 @@ module_socket(#params{socket = Socket}) -> %% -type packet_option_value() :: %% 0 | 1 | 2 | 4 | raw | sunrm | asn1 | -%% cdr | fcgi | line | tpkt | http | httph | http_bin | httph_bin. +%% cdr | fcgi | line | tpkt | mqtt | http | httph | http_bin | +%% httph_bin. -compile({inline, [is_packet_option_value/1]}). is_packet_option_value(Value) -> @@ -1650,6 +1651,7 @@ is_packet_option_value(Value) -> fcgi -> true; line -> true; tpkt -> true; + mqtt -> true; http -> true; httph -> true; http_bin -> true; From adfb96e15f3ae2c043f2a4abf661ebbe296eb6a3 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Wed, 27 Nov 2024 15:51:36 +0100 Subject: [PATCH 4/5] docs: mention `mqtt` as valid packet type in module docs --- erts/doc/src/erlang.xml | 3 ++- lib/kernel/doc/src/inet.xml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 1c8efffa54eb..c86a5e93ec37 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -1554,7 +1554,7 @@ Z = erlang:crc32_combine(X,Y,iolist_size(Data2)). byte is included in the returned packet unless the line was truncated according to option line_length.

- asn1 | cdr | sunrm | fcgi | tpkt + asn1 | cdr | sunrm | fcgi | tpkt | mqtt

The header is not stripped off.

The meanings of the packet types are as follows:

@@ -1564,6 +1564,7 @@ Z = erlang:crc32_combine(X,Y,iolist_size(Data2)). cdr - CORBA (GIOP 1.1) fcgi - Fast CGI tpkt - TPKT format [RFC1006] + mqtt - MQTT packet [mqtt-v5.0] / [mqtt-v3.1.1]
http | httph | http_bin | httph_bin diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index 1707d4dec5f1..a90ff253cac9 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -1433,7 +1433,7 @@ setcap cap_sys_admin,cap_sys_ptrace,cap_dac_read_search+epi beam.smp is stripped off on each receive operation.

The 4-byte header is limited to 2Gb.

- asn1 | cdr | sunrm | fcgi | tpkt | line + asn1 | cdr | sunrm | fcgi | tpkt | mqtt | line

These packet types only have effect on receiving. When sending a packet, it is the responsibility of @@ -1450,6 +1450,7 @@ setcap cap_sys_admin,cap_sys_ptrace,cap_dac_read_search+epi beam.smp cdr - CORBA (GIOP 1.1) fcgi - Fast CGI tpkt - TPKT format [RFC1006] + mqtt - MQTT packet [mqtt-v5.0] / [mqtt-v3.1.1] line - Line mode, a packet is a line-terminated with newline, lines longer than the receive buffer are truncated From 44cf4015c76a8989a618f074df0686bb7f816d26 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 28 Nov 2024 13:30:11 +0100 Subject: [PATCH 5/5] chore: bump OTP_VERSION to prepare patch release --- OTP_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OTP_VERSION b/OTP_VERSION index 079fd12e43d8..8a459ff6aedc 100644 --- a/OTP_VERSION +++ b/OTP_VERSION @@ -1 +1 @@ -26.2.5-4 +26.2.5-5