This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/4041 to look at the new patch set (#4). libgtp: Allow each PDP context to specify if it transmits G-PDU sequence numbers GTP sequence numbers on GTP-U are optional for G-PDU type messages (i.e. user-ip messages). Let's allow the user to specify this behavior by a new pdu_t.tx_gpdu_seq flag. The flag is enabled by default to stay compatible with the prior behaviour. Related: OS#2519 Change-Id: Icf22a2ddd5c4a968ef5bda7c202b921d93fb49e6 --- M TODO-RELEASE M gtp/gtp.c M gtp/pdp.c M gtp/pdp.h 4 files changed, 23 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/41/4041/4 diff --git a/TODO-RELEASE b/TODO-RELEASE index d0852fc..e38e18c 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -7,3 +7,4 @@ # If any interfaces have been added since the last public release: c:r:a + 1. # If any interfaces have been removed or changed since the last public release: c:r:0. #library what description / commit summary line +libgtp pdp.h Addition of new tx_gpdu_seq struct member member diff --git a/gtp/gtp.c b/gtp/gtp.c index ebbad91..fee49b5 100644 --- a/gtp/gtp.c +++ b/gtp/gtp.c @@ -3186,20 +3186,30 @@ get_default_gtp(0, GTP_GPDU, &packet); packet.gtp0.h.length = hton16(len); - packet.gtp0.h.seq = hton16(pdp->gtpsntx++); + if (pdp->tx_gpdu_seq) + packet.gtp0.h.seq = hton16(pdp->gtpsntx++); + else + packet.gtp0.h.seq = 0; packet.gtp0.h.flow = hton16(pdp->flru); packet.gtp0.h.tid = htobe64(pdp_gettid(pdp->imsi, pdp->nsapi)); } else if (pdp->version == 1) { - iov[0].iov_len = GTP1_HEADER_SIZE_LONG; addr.sin_port = htons(GTP1U_PORT); fd = gsn->fd1u; get_default_gtp(1, GTP_GPDU, &packet); - packet.gtp1l.h.length = hton16(len - GTP1_HEADER_SIZE_SHORT + - GTP1_HEADER_SIZE_LONG); - packet.gtp1l.h.seq = hton16(pdp->gtpsntx++); - packet.gtp1l.h.tei = hton32(pdp->teid_gn); + if (pdp->tx_gpdu_seq) { + packet.gtp1l.h.seq = hton16(pdp->gtpsntx++); + packet.gtp1l.h.length = hton16(len - GTP1_HEADER_SIZE_SHORT + + GTP1_HEADER_SIZE_LONG); + packet.gtp1l.h.tei = hton32(pdp->teid_gn); + iov[0].iov_len = GTP1_HEADER_SIZE_LONG; + } else { + packet.gtp1s.h.flags &= ~GTP1HDR_F_SEQ; + packet.gtp1s.h.length = hton16(len); + packet.gtp1s.h.tei = hton32(pdp->teid_gn); + iov[0].iov_len = GTP1_HEADER_SIZE_SHORT; + } } else { LOGP(DLGTP, LOGL_ERROR, "Unknown version: %d\n", pdp->version); return EOF; diff --git a/gtp/pdp.c b/gtp/pdp.c index ff9c681..d3e9232 100644 --- a/gtp/pdp.c +++ b/gtp/pdp.c @@ -149,6 +149,8 @@ 1].secondary_tei[(*pdp)->nsapi & 0x0f] = (*pdp)->teid_own; } + /* Default: Generate G-PDU sequence numbers on Tx */ + (*pdp)->tx_gpdu_seq = true; return 0; } diff --git a/gtp/pdp.h b/gtp/pdp.h index cb98920..f8b0df8 100644 --- a/gtp/pdp.h +++ b/gtp/pdp.h @@ -13,6 +13,8 @@ #ifndef _PDP_H #define _PDP_H +#include <stdbool.h> + struct gsn_t; #define PDP_MAX 1024 /* Max number of PDP contexts */ @@ -226,6 +228,8 @@ void *priv; struct gsn_t *gsn; + + bool tx_gpdu_seq; /* Transmit (true) or suppress G-PDU sequence numbers */ }; /* functions related to pdp_t management */ -- To view, visit https://gerrit.osmocom.org/4041 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Icf22a2ddd5c4a968ef5bda7c202b921d93fb49e6 Gerrit-PatchSet: 4 Gerrit-Project: osmo-ggsn Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder