gtp: Fix initialization of Flags octet in GTPv1 header
authorHarald Welte <laforge@gnumonks.org>
Thu, 15 Dec 2016 21:35:53 +0000 (22:35 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 Dec 2016 17:00:25 +0000 (12:00 -0500)
When generating a GTPv1 header in gtp1_push_header(), initialize the
'reserved' bit to zero.  All 3GPP specifications for GTPv1 from Release
99 through Release 13 agree that a transmitter shall set this bit to
zero, see e.g. Note 0 of Figure 2 in Section 6 of 3GPP TS 29.060 v13.5.0
Release 13, available from
http://www.etsi.org/deliver/etsi_ts/129000_129099/129060/13.05.00_60/ts_129060v130500p.pdf

Signed-off-by: Harald Welte <laforge@gnumonks.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/gtp.c

index 6031d499f2beb4c936620bf9aff10eb908f6092d..8b6810bad54b73fc90da579521e1e20050933aac 100644 (file)
@@ -423,11 +423,11 @@ static inline void gtp1_push_header(struct sk_buff *skb, struct pdp_ctx *pctx)
 
        /* Bits    8  7  6  5  4  3  2  1
         *        +--+--+--+--+--+--+--+--+
-        *        |version |PT| 1| E| S|PN|
+        *        |version |PT| 0| E| S|PN|
         *        +--+--+--+--+--+--+--+--+
         *          0  0  1  1  1  0  0  0
         */
-       gtp1->flags     = 0x38; /* v1, GTP-non-prime. */
+       gtp1->flags     = 0x30; /* v1, GTP-non-prime. */
        gtp1->type      = GTP_TPDU;
        gtp1->length    = htons(payload_len);
        gtp1->tid       = htonl(pctx->u.v1.o_tei);