Harald Welte | d24566a | 2012-06-17 13:12:51 +0800 | [diff] [blame] | 1 | #ifndef _OSMO_08_16_H |
| 2 | #define _OSMO_08_16_H |
| 3 | |
| 4 | /* GPRS Networks Service (NS) messages on the Gb interface |
| 5 | * 3GPP TS 08.16 version 8.0.1 Release 1999 / ETSI TS 101 299 V8.0.1 (2002-05) |
| 6 | * 3GPP TS 48.016 version 6.5.0 Release 6 / ETSI TS 148 016 V6.5.0 (2005-11) */ |
| 7 | |
| 8 | #include <stdint.h> |
| 9 | |
| 10 | /*! \addtogroup libgb |
| 11 | * @{ |
| 12 | */ |
| 13 | |
| 14 | /*! \file gprs_ns.h */ |
| 15 | |
| 16 | /*! \brief Common header of GPRS NS */ |
| 17 | struct gprs_ns_hdr { |
| 18 | uint8_t pdu_type; /*!< NS PDU type */ |
| 19 | uint8_t data[0]; /*!< variable-length payload */ |
| 20 | } __attribute__((packed)); |
| 21 | |
| 22 | /*! \brief NS PDU Type (TS 08.16, Section 10.3.7, Table 14) */ |
| 23 | enum ns_pdu_type { |
| 24 | NS_PDUT_UNITDATA = 0x00, |
| 25 | NS_PDUT_RESET = 0x02, |
| 26 | NS_PDUT_RESET_ACK = 0x03, |
| 27 | NS_PDUT_BLOCK = 0x04, |
| 28 | NS_PDUT_BLOCK_ACK = 0x05, |
| 29 | NS_PDUT_UNBLOCK = 0x06, |
| 30 | NS_PDUT_UNBLOCK_ACK = 0x07, |
| 31 | NS_PDUT_STATUS = 0x08, |
| 32 | NS_PDUT_ALIVE = 0x0a, |
| 33 | NS_PDUT_ALIVE_ACK = 0x0b, |
| 34 | /* TS 48.016 Section 10.3.7, Table 10.3.7.1 */ |
| 35 | SNS_PDUT_ACK = 0x0c, |
| 36 | SNS_PDUT_ADD = 0x0d, |
| 37 | SNS_PDUT_CHANGE_WEIGHT = 0x0e, |
| 38 | SNS_PDUT_CONFIG = 0x0f, |
| 39 | SNS_PDUT_CONFIG_ACK = 0x10, |
| 40 | SNS_PDUT_DELETE = 0x11, |
| 41 | SNS_PDUT_SIZE = 0x12, |
| 42 | SNS_PDUT_SIZE_ACK = 0x13, |
| 43 | }; |
| 44 | |
| 45 | /*! \brief NS Control IE (TS 08.16, Section 10.3, Table 12) */ |
| 46 | enum ns_ctrl_ie { |
| 47 | NS_IE_CAUSE = 0x00, |
| 48 | NS_IE_VCI = 0x01, |
| 49 | NS_IE_PDU = 0x02, |
| 50 | NS_IE_BVCI = 0x03, |
| 51 | NS_IE_NSEI = 0x04, |
| 52 | /* TS 48.016 Section 10.3, Table 10.3.1 */ |
| 53 | NS_IE_IPv4_LIST = 0x05, |
| 54 | NS_IE_IPv6_LIST = 0x06, |
| 55 | NS_IE_MAX_NR_NSVC = 0x07, |
| 56 | NS_IE_IPv4_EP_NR = 0x08, |
| 57 | NS_IE_IPv6_EP_NR = 0x09, |
| 58 | NS_IE_RESET_FLAG = 0x0a, |
| 59 | NS_IE_IP_ADDR = 0x0b, |
| 60 | }; |
| 61 | |
| 62 | /*! \brief NS Cause (TS 08.16, Section 10.3.2, Table 13) */ |
| 63 | enum ns_cause { |
| 64 | NS_CAUSE_TRANSIT_FAIL = 0x00, |
| 65 | NS_CAUSE_OM_INTERVENTION = 0x01, |
| 66 | NS_CAUSE_EQUIP_FAIL = 0x02, |
| 67 | NS_CAUSE_NSVC_BLOCKED = 0x03, |
| 68 | NS_CAUSE_NSVC_UNKNOWN = 0x04, |
| 69 | NS_CAUSE_BVCI_UNKNOWN = 0x05, |
| 70 | NS_CAUSE_SEM_INCORR_PDU = 0x08, |
| 71 | NS_CAUSE_PDU_INCOMP_PSTATE = 0x0a, |
| 72 | NS_CAUSE_PROTO_ERR_UNSPEC = 0x0b, |
| 73 | NS_CAUSE_INVAL_ESSENT_IE = 0x0c, |
| 74 | NS_CAUSE_MISSING_ESSENT_IE = 0x0d, |
| 75 | /* TS 48.016 Section 10.3.2, Table 10.3.2.1 */ |
| 76 | NS_CAUSE_INVAL_NR_IPv4_EP = 0x0e, |
| 77 | NS_CAUSE_INVAL_NR_IPv6_EP = 0x0f, |
| 78 | NS_CAUSE_INVAL_NR_NS_VC = 0x10, |
| 79 | NS_CAUSE_INVAL_WEIGH = 0x11, |
| 80 | NS_CAUSE_UNKN_IP_EP = 0x12, |
| 81 | NS_CAUSE_UNKN_IP_ADDR = 0x13, |
| 82 | NS_CAUSE_UNKN_IP_TEST_FAILED = 0x14, |
| 83 | }; |
| 84 | |
| 85 | #endif |