pespin has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/40255?usp=email )
Change subject: Add required conversions for IPv6 and IPv4v6 support ...................................................................... Add required conversions for IPv6 and IPv4v6 support Change-Id: I2426e0dcee3ca92075b845f6b21a175a3d047c08 --- M src/conv.erl 1 file changed, 24 insertions(+), 6 deletions(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve diff --git a/src/conv.erl b/src/conv.erl index d45c41d..5832c64 100644 --- a/src/conv.erl +++ b/src/conv.erl @@ -62,6 +62,17 @@ bin_to_ip({_, _, _, _, _, _, _, _} = IP) -> IP. +%% Remove "IPv6 Prefix Length" from PAA (3GPP TS 29.274 Table 8.14). +remove_v6_prefix_len_byte(<<_:8, Rest/binary>>) -> Rest. + +get_6_from_bin(<< IPv6:16/binary >>) -> list_to_tuple(binary_to_list(IPv6)). + +get_v4v6(<< IPv6:16/binary >>, << IPv4:4/binary >>) -> << 8, IPv6/binary, IPv4/binary >>. + +get_4_from_v4v6(<< _:8, _IPv6:16/binary, IPv4:4/binary >>) -> IPv4. + +get_6_from_v4v6(<< _:8, IPv6:16/binary, _IPv4:4/binary >>) -> IPv6. + -spec cause_gtp2gsup(integer()) -> integer(). cause_gtp2gsup(?GTP2_CAUSE_REQUEST_ACCEPTED) -> 0; @@ -112,8 +123,11 @@ ipv4 = Addr}; gtp2_paa_to_epdg_eua(#v2_pdn_address_allocation{type = ipv6, address = Addr}) -> #epdg_eua{type_nr = ?GTP_PDP_ADDR_TYPE_NR_IPv6, - ipv6 = Addr}. -%TODO: IPv4v6 + ipv6 = remove_v6_prefix_len_byte(Addr)}; +gtp2_paa_to_epdg_eua(#v2_pdn_address_allocation{type = ipv4v6, address = Addr}) -> + #epdg_eua{type_nr = ?GTP_PDP_ADDR_TYPE_NR_IPv4v6, + ipv4 = get_4_from_v4v6(Addr), + ipv6 = get_6_from_v4v6(Addr)}. epdg_eua_to_gsup_pdp_address(#epdg_eua{type_nr = ?GTP_PDP_ADDR_TYPE_NR_IPv4, ipv4 = Addr}) -> #{pdp_type_org => 1, @@ -121,10 +135,14 @@ address => #{ ipv4 => Addr}}; epdg_eua_to_gsup_pdp_address(#epdg_eua{type_nr = ?GTP_PDP_ADDR_TYPE_NR_IPv6, ipv6 = Addr}) -> -#{pdp_type_org => 1, - pdp_type_nr => ?GTP_PDP_ADDR_TYPE_NR_IPv6, - address => #{ ipv6 => Addr}}. -%TODO: IPv4v6 + #{pdp_type_org => 1, + pdp_type_nr => ?GTP_PDP_ADDR_TYPE_NR_IPv6, + address => #{ ipv6 => Addr}}; + +epdg_eua_to_gsup_pdp_address(#epdg_eua{type_nr = ?GTP_PDP_ADDR_TYPE_NR_IPv4v6, ipv4 = Addr4, ipv6 = Addr6}) -> + #{pdp_type_org => 1, + pdp_type_nr => ?GTP_PDP_ADDR_TYPE_NR_IPv4v6, + address => #{ ipv4 => Addr4, ipv6 => Addr6}}. % 3GPP TS 23.003 clause 19 % Input: "<IMSI>@nai.epc.mnc<MNC>.mcc<MCC>.3gppnetwork.org" -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/40255?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: I2426e0dcee3ca92075b845f6b21a175a3d047c08 Gerrit-Change-Number: 40255 Gerrit-PatchSet: 9 Gerrit-Owner: clufn <callumfarrbenn...@yahoo.com> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: lynxis lazus <lyn...@fe80.eu> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-CC: laforge <lafo...@osmocom.org>