diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2013-10-24 01:33:23 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-24 10:01:18 +0200 |
commit | 5405a104bbe7d3711fe6f19ea7d0fce50ef91147 (patch) | |
tree | d0bac56348b47cb2bf698e8d794d2cb1bc2c8801 /include | |
parent | 81d7c14756ee17c2748c3d34a198c640655fd0c6 (diff) |
gb: Fix NS RESET/RESET_ACK abnormal cases
This changes the implementations for the reception of RESET and
RESET_ACK to be compatible with 3GPP TS 08.16, 7.3.1:
- Just send a RESET_ACK with correct values back to the SGSN when a
RESET with an invalid NSVCI or NSEI has been received.
- Check RESET_ACK for matching NSEI and NSVCI.
- Ignore unexpected RESET_ACKs.
In addition, use RESET_ACK from a BSS to update the BSS source
address based on the NSVCI to be tolerant with changing UDP source
addresses/ports.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'include')
-rw-r--r-- | include/osmocom/gprs/gprs_ns.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/osmocom/gprs/gprs_ns.h b/include/osmocom/gprs/gprs_ns.h index b28c58d6..296800e4 100644 --- a/include/osmocom/gprs/gprs_ns.h +++ b/include/osmocom/gprs/gprs_ns.h @@ -36,6 +36,7 @@ enum ns_timeout { #define NSE_S_BLOCKED 0x0001 #define NSE_S_ALIVE 0x0002 +#define NSE_S_RESET 0x0004 /*! \brief Osmocom NS link layer types */ enum gprs_ns_ll { @@ -199,12 +200,16 @@ enum signal_ns { S_NS_UNBLOCK, S_NS_ALIVE_EXP, /* Tns-alive expired more than N times */ S_NS_REPLACED, /* nsvc object is replaced (sets old_nsvc) */ + S_NS_MISMATCH, /* got an unexpected IE (sets msg, pdu_type, ie_type) */ }; struct ns_signal_data { struct gprs_nsvc *nsvc; struct gprs_nsvc *old_nsvc; uint8_t cause; + uint8_t pdu_type; + uint8_t ie_type; + struct msgb *msg; }; void gprs_ns_set_log_ss(int ss); |