Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ jobs:
name: Test (OTP ${{ matrix.otp }} / Elixir ${{ matrix.elixir }})
strategy:
matrix:
elixir: ["1.19", "1.18", "1.17", "1.16", "1.15"]
otp: ["28", "27", "26", "25", "24"]
elixir: ["1.20", "1.19", "1.18", "1.17", "1.16"]
otp: ["29", "28", "27", "26"]
exclude:
- { otp: "24", elixir: "1.19" }
- { otp: "24", elixir: "1.18" }
- { otp: "24", elixir: "1.17" }
- { otp: "25", elixir: "1.19" }
- { otp: "26", elixir: "1.20" }
- { otp: "27", elixir: "1.16" }
- { otp: "27", elixir: "1.15" }
- { otp: "28", elixir: "1.18" }
- { otp: "28", elixir: "1.17" }
- { otp: "28", elixir: "1.16" }
- { otp: "28", elixir: "1.15" }
- { otp: "29", elixir: "1.19" }
- { otp: "29", elixir: "1.18" }
- { otp: "29", elixir: "1.17" }
- { otp: "29", elixir: "1.16" }
steps:
- uses: actions/checkout@v6
- uses: erlef/setup-beam@v1
Expand Down
4 changes: 2 additions & 2 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
erlang 28.3
elixir 1.19.4-otp-28
erlang 29.0
elixir 1.20.0-otp-29
4 changes: 2 additions & 2 deletions lib/bgp/message.ex
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,15 @@ defmodule BGP.Message do
defp decode_prefixes(<<>>, prefixes), do: {:ok, Enum.reverse(prefixes)}

defp decode_prefixes(<<length::8, data::binary>>, prefixes) when rem(length, 8) == 0 do
<<prefix_data::binary-unit(1)-size(length), rest::binary>> = data
<<prefix_data::binary-unit(1)-size(^length), rest::binary>> = data

with {:ok, prefix} <- decode_prefix(length, prefix_data),
do: decode_prefixes(rest, [prefix | prefixes])
end

defp decode_prefixes(<<length::8, data::binary>>, prefixes) do
prefix_size = length + 8 - rem(length, 8)
<<prefix_data::binary-unit(1)-size(prefix_size), rest::binary>> = data
<<prefix_data::binary-unit(1)-size(^prefix_size), rest::binary>> = data

with {:ok, prefix} <- decode_prefix(length, prefix_data),
do: decode_prefixes(rest, [prefix | prefixes])
Expand Down
2 changes: 1 addition & 1 deletion lib/bgp/message/update.ex
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ defmodule BGP.Message.UPDATE do
defp decode_attributes(<<header::binary-size(2), data::binary>>, attributes, session) do
<<_other_flags::3, extended::1, _unused::4, _code::8>> = header
size = 8 + 8 * extended
<<length::size(size), attribute::binary-size(length), rest::binary>> = data
<<length::size(^size), attribute::binary-size(length), rest::binary>> = data

{attribute, session} =
Attribute.decode(<<header::binary, length::size(size), attribute::binary>>, session)
Expand Down
2 changes: 1 addition & 1 deletion lib/bgp/message/update/attribute/as4_path.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ defmodule BGP.Message.UPDATE.Attribute.AS4Path do

defp decode_path(<<type::8, length::8, data::binary>>, path) do
asns_length = length * 4
<<asns::binary-size(asns_length), rest::binary>> = data
<<asns::binary-size(^asns_length), rest::binary>> = data
decode_path(rest, [{decode_type(type), length, decode_asns(asns, [])} | path])
end

Expand Down
4 changes: 2 additions & 2 deletions lib/bgp/message/update/attribute/as_path.ex
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ defmodule BGP.Message.UPDATE.Attribute.ASPath do
path
) do
asn_size = length * 4
<<asns::binary-size(asn_size), rest::binary>> = data
<<asns::binary-size(^asn_size), rest::binary>> = data

decode_path(rest, session, [
{decode_type(type), length, decode_asns(asns, [], session)} | path
Expand All @@ -37,7 +37,7 @@ defmodule BGP.Message.UPDATE.Attribute.ASPath do

defp decode_path(<<type::8, length::8, data::binary>>, session, path) do
asn_size = length * 2
<<asns::binary-size(asn_size), rest::binary>> = data
<<asns::binary-size(^asn_size), rest::binary>> = data

decode_path(rest, session, [
{decode_type(type), length, decode_asns(asns, [], session)} | path
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ defmodule BGP.MixProject do
[
app: :bgp,
version: "0.1.0",
elixir: "~> 1.13",
elixir: "~> 1.16",
start_permanent: Mix.env() == :prod,
deps: deps(),
dialyzer: dialyzer(),
Expand Down
8 changes: 4 additions & 4 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
%{
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"credo": {:hex, :credo, "1.7.18", "5c5596bf7aedf9c8c227f13272ac499fe8eae6237bd326f2f07dfc173786f042", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "a189d164685fd945809e862fe76a7420c4398fa288d76257662aecb909d6b3e5"},
"credo": {:hex, :credo, "1.7.19", "cc52129665fc7c15143d47838fda0f9cd6dac9ceced7bf4da6f85fcbfe64b12a", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "2d8bc95d5a7bb99dd2613621d4f08c6a3575c3fd4b62e6a2b48a100352a557b8"},
"dialyxir": {:hex, :dialyxir, "1.4.7", "dda948fcee52962e4b6c5b4b16b2d8fa7d50d8645bbae8b8685c3f9ecb7f5f4d", [:mix], [{:erlex, ">= 0.2.8", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b34527202e6eb8cee198efec110996c25c5898f43a4094df157f8d28f27d9efe"},
"earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"},
"erlex": {:hex, :erlex, "0.2.8", "cd8116f20f3c0afe376d1e8d1f0ae2452337729f68be016ea544a72f767d9c12", [:mix], [], "hexpm", "9d66ff9fedf69e49dc3fd12831e12a8a37b76f8651dd21cd45fcf5561a8a7590"},
"erlex": {:hex, :erlex, "0.2.9", "7debbbaa9f4f368b8cd648983e0f1d7963028508e9c59e9d4ed504e94ef52a55", [:mix], [], "hexpm", "8cfffc0ec7159e6d73de2ab28a588064de80f88b2798d5cbe4482cbbc200178b"},
"ex_doc": {:hex, :ex_doc, "0.40.3", "4a972ffe64bc07dc605af487e98fc19b72a4185f55ca031b94c0552d6071c1d9", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "2756e357742fecd9749b489b85d67c9ce99c465f2e75728d9e6dc8d704b973de"},
"file_system": {:hex, :file_system, "1.1.1", "31864f4685b0148f25bd3fbef2b1228457c0c89024ad67f7a81a3ffbc0bbad3a", [:mix], [], "hexpm", "7a15ff97dfe526aeefb090a7a9d3d03aa907e100e262a0f8f7746b78f8f87a5d"},
"ip": {:hex, :ip, "2.1.3", "7d7e4d6ae764f9eea166401ca233df1ff859bfc869039f99837f09b255cc3cf3", [:mix], [{:saxy, "~> 1.6", [hex: :saxy, repo: "hexpm", optional: false]}], "hexpm", "206e1733e1bc3840412ea0e9af4f1195f87138a5f0b345cabac1099c85ab7674"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"},
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
"makeup_erlang": {:hex, :makeup_erlang, "1.1.0", "835f7e60792e08824cda445639555d7bf1bbbddb1b60b306e33cb6f6db24dc74", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "1cd6780fb1dd1a03979abaed0fe82712b0625118fd5257d3ebbf73f960c73c3c"},
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
"saxy": {:hex, :saxy, "1.6.0", "02cb4e9bd045f25ac0c70fae8164754878327ee393c338a090288210b02317ee", [:mix], [], "hexpm", "ef42eb4ac983ca77d650fbdb68368b26570f6cc5895f0faa04d34a6f384abad3"},
"telemetry": {:hex, :telemetry, "1.4.2", "a0cb522801dffb1c49fe6e30561badffc7b6d0e180db1300df759faa22062855", [:rebar3], [], "hexpm", "928f6495066506077862c0d1646609eed891a4326bee3126ba54b60af61febb1"},
"thousand_island": {:hex, :thousand_island, "1.4.3", "2158209580f633be38d43ec4e3ce0a01079592b9657afff9080d5d8ca149a3af", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6e4ce09b0fd761a58594d02814d40f77daff460c48a7354a15ab353bb998ea0b"},
"thousand_island": {:hex, :thousand_island, "1.5.0", "f50a213cac97262b6d5ebb85745aa2c00fec1413191e6e66834788d45425cecb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "708923d40523e43cf99041ab37a0d4b0ec426ac6438fa3716ab23d919eaeb412"},
}