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>

Reply via email to