fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37795?usp=email )

Change subject: erab_fsm: include Network Instance IE in PDRs and FARs
......................................................................

erab_fsm: include Network Instance IE in PDRs and FARs

Change-Id: I4dbe8e0b1d14eed5fdb3f9f3f2543c44fd543d22
---
M config/sys.config
M src/erab_fsm.erl
2 files changed, 20 insertions(+), 0 deletions(-)

Approvals:
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/config/sys.config b/config/sys.config
index 993176b..66fbdc9 100644
--- a/config/sys.config
+++ b/config/sys.config
@@ -16,6 +16,9 @@
    {mme_rem_addr, "127.0.2.10"}, %% remote address for outgoing connections to 
the MME
    {pfcp_loc_addr, "127.0.1.1"}, %% local address for incoming PFCP PDUs from 
UPF
    {pfcp_rem_addr, "127.0.1.2"} %% remote address for outgoing PFCP PDUs to UPF
+%% Optional PFCP Network Instance IEs (omitted if not configured)
+%% {pfcp_net_inst_core, << 16#09, "core-side" >>}, %% PFCP Network Instance IE 
value (to core)
+%% {pfcp_net_inst_access, << 16#0a, "radio-side" >>} %% PFCP Network Instance 
IE value (to access)
   ]},
  %% 
================================================================================
  %% kernel config
diff --git a/src/erab_fsm.erl b/src/erab_fsm.erl
index 5290b93..753d1bf 100644
--- a/src/erab_fsm.erl
+++ b/src/erab_fsm.erl
@@ -375,9 +375,20 @@
     logger:set_process_metadata(#{prefix => Prefix}).


+-spec net_inst(atom()) -> undefined | binary().
+net_inst(Param) ->
+    case application:get_env(osmo_s1gw, Param) of
+        {ok, Val} -> Val;
+        undefined -> undefined
+    end.
+
+
 -spec session_establish_req(erab_state()) -> pfcp_peer:pfcp_session_rsp().
 session_establish_req(#erab_state{seid_loc = F_SEID, %% used as F-SEID
                                   u2c = U2C}) ->
+    %% Network Instance IE values for core/access
+    NI_Core = net_inst(pfcp_net_inst_core),
+    NI_Access = net_inst(pfcp_net_inst_access),
     %% Packet Detection Rules
     OHR = #outer_header_removal{header = 'GTP-U/UDP/IPv4'},
     PDRs = [#{pdr_id => {pdr_id, 1}, %% -- for Core -> Access
@@ -386,6 +397,7 @@
               outer_header_removal => OHR,
               pdi => #{f_teid => #f_teid{teid = choose,
                                          ipv4 = choose},
+                       network_instance => NI_Core,
                        source_interface => {source_interface, 'Core'}}},
             #{pdr_id => {pdr_id, 2}, %% -- for Access -> Core
               far_id => {far_id, 2}, %% see FARs below
@@ -393,6 +405,7 @@
               outer_header_removal => OHR,
               pdi => #{f_teid => #f_teid{teid = choose,
                                          ipv4 = choose},
+                       network_instance => NI_Access,
                        source_interface => {source_interface, 'Access'}}}],
     %% Forwarding Action Rules
     FARs = [#{far_id => {far_id, 1}, %% -- for Core -> Access
@@ -403,6 +416,7 @@
               apply_action => #{'FORW' => []},
               forwarding_parameters =>
                 #{outer_header_creation => ohc(U2C),
+                  network_instance => NI_Core,
                   destination_interface => {destination_interface, 'Core'}}}],
     pfcp_peer:session_establish_req(F_SEID, PDRs, FARs).

@@ -410,6 +424,8 @@
 -spec session_modify_req(erab_state()) -> pfcp_peer:pfcp_session_rsp().
 session_modify_req(#erab_state{seid_rem = SEID, %% SEID allocated to us
                                u2a = U2A}) ->
+    %% Network Instance IE value for access
+    NI_Access = net_inst(pfcp_net_inst_access),
     %% Forwarding Action Rules
     FARs = [#{far_id => {far_id, 1}, %% -- for Core -> Access
               %% Now we know the Access side TEID / GTP-U address, so we modify
@@ -417,6 +433,7 @@
               apply_action => #{'FORW' => []},
               forwarding_parameters =>
                 #{outer_header_creation => ohc(U2A),
+                  network_instance => NI_Access,
                   destination_interface => {destination_interface, 
'Access'}}}],
     pfcp_peer:session_modify_req(SEID, [], FARs).


--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37795?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-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I4dbe8e0b1d14eed5fdb3f9f3f2543c44fd543d22
Gerrit-Change-Number: 37795
Gerrit-PatchSet: 6
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: neels <[email protected]>

Reply via email to