fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/38215?usp=email )
Change subject: pfcp_peer: do not assign SEID=0, increment properly ......................................................................
pfcp_peer: do not assign SEID=0, increment properly
Change-Id: I76b921047784e727d67cd6c6a5aeb6d827b65e56 --- M src/pfcp_peer.erl 1 file changed, 9 insertions(+), 3 deletions(-)
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
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().