osmith has uploaded this change for review.

View Change

Decode S1AP PDUs and log them while forwarding

Change-Id: Iac1db3dbbf9b72fbd301b4c4133df3cb8c85cf89
---
A src/s1ap_proxy.erl
M src/sctp_proxy.erl
2 files changed, 44 insertions(+), 2 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-s1gw refs/changes/39/37039/1
diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl
new file mode 100644
index 0000000..62701ef
--- /dev/null
+++ b/src/s1ap_proxy.erl
@@ -0,0 +1,31 @@
+-module(s1ap_proxy).
+
+-export([handle_pdu/1]).
+
+%% ------------------------------------------------------------------
+%% public API
+%% ------------------------------------------------------------------
+
+%% Process an S1AP PDU
+handle_pdu(Data) ->
+ case decode_pdu(Data) of
+ {ok, Pdu} ->
+ logger:info("S1AP PDU: ~p", [Pdu]),
+ Data;
+ {error, {asn1, Error}} ->
+ logger:error("S1AP PDU decoding failed: ~p", [Error]),
+ Data
+ end.
+
+
+%% ------------------------------------------------------------------
+%% private API
+%% ------------------------------------------------------------------
+
+%% Decode an S1AP PDU
+-spec decode_pdu(binary()) -> {ok, tuple()} |
+ {error, {asn1, tuple()}}.
+decode_pdu(Data) ->
+ 'S1AP-PDU-Descriptions':decode('S1AP-PDU', Data).
+
+%% vim:set ts=4 sw=4 et:
diff --git a/src/sctp_proxy.erl b/src/sctp_proxy.erl
index e09720c..2cc6165 100644
--- a/src/sctp_proxy.erl
+++ b/src/sctp_proxy.erl
@@ -121,7 +121,8 @@
{[#sctp_sndrcvinfo{assoc_id = Aid}], Data}}, S) ->
logger:info("MME connection (id=~p, ~p:~p) Rx ~p",
[Aid, MmeAddr, MmePort, Data]),
- sctp_server:send_data(maps:get(enb_aid, S), Data),
+ sctp_server:send_data(maps:get(enb_aid, S),
+ s1ap_proxy:handle_pdu(Data)),
{keep_state, S};

%% Catch-all for other kinds of SCTP events
@@ -160,7 +161,8 @@

%% Send a single message to the MME
sctp_send(#{sock := Sock, mme_aid := Aid}, Data) ->
- sctp_client:send_data({Sock, Aid}, Data).
+ sctp_client:send_data({Sock, Aid},
+ s1ap_proxy:handle_pdu(Data)).


%% Send pending messages to the MME

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

Gerrit-Project: osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: Iac1db3dbbf9b72fbd301b4c4133df3cb8c85cf89
Gerrit-Change-Number: 37039
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith@sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy@sysmocom.de>
Gerrit-MessageType: newchange