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);  | 
