diff options
-rw-r--r-- | gtp/gtp.c | 10 | ||||
-rw-r--r-- | sgsnemu/sgsnemu.c | 4 |
2 files changed, 7 insertions, 7 deletions
@@ -416,7 +416,7 @@ int gtp_req(struct gsn_t *gsn, int version, struct pdp_t *pdp, packet->gtp0.h.length = hton16(len - GTP0_HEADER_SIZE); packet->gtp0.h.seq = hton16(gsn->seq_next); if (pdp) - packet->gtp0.h.tid = (pdp->imsi & 0x0fffffffffffffff) + + packet->gtp0.h.tid = (pdp->imsi & 0x0fffffffffffffffull) + ((uint64_t)pdp->nsapi << 60); if (pdp && ((packet->gtp0.h.type == GTP_GPDU) || (packet->gtp0.h.type == GTP_ERROR))) @@ -1226,8 +1226,8 @@ int gtp_create_pdp_ind(struct gsn_t *gsn, int version, memset(pdp, 0, sizeof(struct pdp_t)); if (version == 0) { - pdp->imsi = ((union gtp_packet*)pack)->gtp0.h.tid & 0x0fffffffffffffff; - pdp->nsapi = (((union gtp_packet*)pack)->gtp0.h.tid & 0xf000000000000000) >> 60; + pdp->imsi = ((union gtp_packet*)pack)->gtp0.h.tid & 0x0fffffffffffffffull; + pdp->nsapi = (((union gtp_packet*)pack)->gtp0.h.tid & 0xf000000000000000ull) >> 60; } pdp->seq = seq; @@ -1899,8 +1899,8 @@ int gtp_update_pdp_ind(struct gsn_t *gsn, int version, /* For GTP1 we must use imsi and nsapi if imsi is present. Otherwise */ /* we have to use the tunnel endpoint identifier */ if (version == 0) { - imsi = ((union gtp_packet*)pack)->gtp0.h.tid & 0x0fffffffffffffff; - nsapi = (((union gtp_packet*)pack)->gtp0.h.tid & 0xf000000000000000) >> 60; + imsi = ((union gtp_packet*)pack)->gtp0.h.tid & 0x0fffffffffffffffull; + nsapi = (((union gtp_packet*)pack)->gtp0.h.tid & 0xf000000000000000ull) >> 60; /* Find the context in question */ if (pdp_getimsi(&pdp, imsi, nsapi)) { diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 53a1cc0..4915fcd 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -375,7 +375,7 @@ int process_options(int argc, char **argv) { return -1; } - options.imsi = 0xf000000000000000; + options.imsi = 0xf000000000000000ull; options.imsi |= ((uint64_t) (args_info.imsi_arg[ 0]-48)); options.imsi |= ((uint64_t) (args_info.imsi_arg[ 1]-48)) << 4; options.imsi |= ((uint64_t) (args_info.imsi_arg[ 2]-48)) << 8; @@ -657,7 +657,7 @@ int imsi_add(uint64_t src, uint64_t *dst, int add) { i64 = i64 / 10; } - *dst |= 0xf000000000000000; + *dst |= 0xf000000000000000ull; return 0; |