pespin has uploaded this change for review.

View Change

GTPv2_Emulation: routing improvements: Prioritize response, fallback to TEID

First try forwarding to component transmitting the originating request,
since this is the most fine-grained match.
Finally, if no specific match was found and if messages belongs to
TEID0, send it over that port as a fallback.

Fixes: 1d2cc67036e95a0c3ee3ac7738d7e15d5f76b8a2
Change-Id: Ie96d65085fb352489150183415dbd6cc8237a47c
---
M library/GTPv2_Emulation.ttcn
1 file changed, 24 insertions(+), 6 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/15/35515/1
diff --git a/library/GTPv2_Emulation.ttcn b/library/GTPv2_Emulation.ttcn
index eb2b977..240cce4 100644
--- a/library/GTPv2_Emulation.ttcn
+++ b/library/GTPv2_Emulation.ttcn
@@ -560,7 +560,12 @@
/* route inbound GTP2-C based on TEID, SEQ or IMSI */
[] GTP2C.receive(Gtp2cUnitdata:?) -> value g2c_ud {
var template hexstring imsi_t := f_gtp2c_extract_imsi(g2c_ud.gtpc);
- if (isvalue(imsi_t) and f_imsi_known(valueof(imsi_t))) {
+ /* if this is a response, route by SEQ: */
+ if (match(g2c_ud.gtpc, tr_PDU_GTP2C_msgtypes(gtp2_responses))
+ and f_seq_known(g2c_ud.gtpc.sequenceNumber)) {
+ vc_conn := f_comp_by_seq(g2c_ud.gtpc.sequenceNumber);
+ CLIENT.send(g2c_ud.gtpc) to vc_conn;
+ }else if (isvalue(imsi_t) and f_imsi_known(valueof(imsi_t))) {
vc_conn := f_comp_by_imsi(valueof(imsi_t));
CLIENT.send(g2c_ud.gtpc) to vc_conn;
} else if ((ispresent(g2c_ud.gtpc.tEID) and g2c_ud.gtpc.tEID != '00000000'O)
@@ -571,13 +576,11 @@
and f_teid_known('00000000'O)) {
vc_conn := f_comp_by_teid(g2c_ud.gtpc.tEID);
CLIENT.send(g2c_ud.gtpc) to vc_conn;
- /* if this is a response, route by SEQ: */
- } else if (match(g2c_ud.gtpc, tr_PDU_GTP2C_msgtypes(gtp2_responses))
- and f_seq_known(g2c_ud.gtpc.sequenceNumber)) {
- vc_conn := f_comp_by_seq(g2c_ud.gtpc.sequenceNumber);
- CLIENT.send(g2c_ud.gtpc) to vc_conn;
} else {
SendToUdMsgTable(g2c_ud);
+ if (not ispresent(g2c_ud.gtpc.tEID) or g2c_ud.gtpc.tEID == '00000000'O) {
+ TEID0.send(g2c_ud.gtpc);
+ }
}

/* remove sequence number if response was received */

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

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ie96d65085fb352489150183415dbd6cc8237a47c
Gerrit-Change-Number: 35515
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-MessageType: newchange