fixeria submitted this change.

View Change

Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved
pfcp_peer: do not assign SEID=0, increment properly

Change-Id: I76b921047784e727d67cd6c6a5aeb6d827b65e56
---
M src/pfcp_peer.erl
1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/pfcp_peer.erl b/src/pfcp_peer.erl
index f379e69..aa33e3a 100644
--- a/src/pfcp_peer.erl
+++ b/src/pfcp_peer.erl
@@ -54,11 +54,13 @@
%% 3GPP TS 29.244, section 4.2 "UDP Header and Port Numbers"
-define(PFCP_PORT, 8805).

+-define(PFCP_SEID_MAX, 16#ffffffffffffffff).
+
-type pfcp_session_rsp() :: ok | {error, term()}.

-type pfcp_msg_type() :: atom().
-type pfcp_seq_nr() :: 0..16#ffffff.
--type pfcp_seid() :: 0..16#ffffffffffffffff.
+-type pfcp_seid() :: 0..?PFCP_SEID_MAX.
-type pfcp_f_seid() :: #f_seid{}.
-type pfcp_ies() :: [term()] | map() | binary().
-type pfcp_msg() :: {pfcp_msg_type(), pfcp_ies()}.
@@ -139,7 +141,7 @@
{reuseaddr, true},
{active, true}]),
?LOG_INFO("PFCP peer @ ~p will talk to UPF @ ~p", [LocAddr, RemAddr]),
- {ok, connecting, #peer_state{seid = 0,
+ {ok, connecting, #peer_state{seid = 1, %% SEID=0 is special, see 7.2.2.4.2
sock = Sock,
loc_addr = LocAddr,
rem_addr = RemAddr,
@@ -288,8 +290,12 @@
Ref = erlang:monitor(process, Pid),
NReg = dict:store(SEID, {Pid, Ref}, Reg),
?LOG_DEBUG("Allocated SEID ~p to process ~p", [SEID, Pid]),
+ NSEID = case SEID of
+ ?PFCP_SEID_MAX -> 1;
+ _ -> SEID + 1
+ end,
S#peer_state{registry = NReg,
- seid = SEID + 1}.
+ seid = NSEID}.


-spec registry_del({pid(), reference()}, peer_state()) -> peer_state().

To view, visit change 38215. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I76b921047784e727d67cd6c6a5aeb6d827b65e56
Gerrit-Change-Number: 38215
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>