git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7111 818b1a75-f10b-46b9-bf7c-635c3b92a50f
279 lines
9.7 KiB
C
279 lines
9.7 KiB
C
/*******************************************************************************
|
|
OpenAirInterface
|
|
Copyright(c) 1999 - 2014 Eurecom
|
|
|
|
OpenAirInterface is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
|
|
OpenAirInterface is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OpenAirInterface.The full GNU General Public License is
|
|
included in this distribution in the file called "COPYING". If not,
|
|
see <http://www.gnu.org/licenses/>.
|
|
|
|
Contact Information
|
|
OpenAirInterface Admin: openair_admin@eurecom.fr
|
|
OpenAirInterface Tech : openair_tech@eurecom.fr
|
|
OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
|
|
|
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
|
|
|
*******************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
|
|
Source networkDef.h
|
|
|
|
Version 0.1
|
|
|
|
Date 2012/09/21
|
|
|
|
Product NAS stack
|
|
|
|
Subsystem include
|
|
|
|
Author Frederic Maurel
|
|
|
|
Description Contains network's global definitions
|
|
|
|
*****************************************************************************/
|
|
#ifndef __NETWORKDEF_H__
|
|
#define __NETWORKDEF_H__
|
|
|
|
/****************************************************************************/
|
|
/********************* G L O B A L C O N S T A N T S *******************/
|
|
/****************************************************************************/
|
|
|
|
/*
|
|
* ----------------------
|
|
* Network selection mode
|
|
* ----------------------
|
|
*/
|
|
#define NET_PLMN_AUTO 0
|
|
#define NET_PLMN_MANUAL 1
|
|
|
|
/*
|
|
* ---------------------------
|
|
* Network registration status
|
|
* ---------------------------
|
|
*/
|
|
/* not registered, not currently searching an operator to register to */
|
|
#define NET_REG_STATE_OFF 0
|
|
/* registered, home network */
|
|
#define NET_REG_STATE_HN 1
|
|
/* not registered, currently trying to attach or searching an operator
|
|
* to register to */
|
|
#define NET_REG_STATE_ON 2
|
|
/* registration denied */
|
|
#define NET_REG_STATE_DENIED 3
|
|
/* unknown (e.g. out of GERAN/UTRAN/E-UTRAN coverage) */
|
|
#define NET_REG_STATE_UNKNOWN 4
|
|
/* registered, roaming */
|
|
#define NET_REG_STATE_ROAMING 5
|
|
/* registered for "SMS only", home network */
|
|
#define NET_REG_STATE_SMS_HN 6
|
|
/* registered, for "SMS only", roaming */
|
|
#define NET_REG_STATE_SMS_ROAMING 7
|
|
/* attached for emergency bearer services only (applicable to UTRAN) */
|
|
#define NET_REG_STATE_EMERGENCY 8
|
|
|
|
/*
|
|
* ------------------------------------
|
|
* Network access technology indicators
|
|
* ------------------------------------
|
|
*/
|
|
#define NET_ACCESS_UNAVAILABLE (-1) /* Not available */
|
|
#define NET_ACCESS_GSM 0 /* GSM */
|
|
#define NET_ACCESS_COMPACT 1 /* GSM Compact */
|
|
#define NET_ACCESS_UTRAN 2 /* UTRAN */
|
|
#define NET_ACCESS_EGPRS 3 /* GSM w/EGPRS */
|
|
#define NET_ACCESS_HSDPA 4 /* UTRAN w/HSDPA */
|
|
#define NET_ACCESS_HSUPA 5 /* UTRAN w/HSUPA */
|
|
#define NET_ACCESS_HSDUPA 6 /* UTRAN w/HSDPA and HSUPA */
|
|
#define NET_ACCESS_EUTRAN 7 /* E-UTRAN */
|
|
|
|
/*
|
|
* ---------------------------------------
|
|
* Network operator representation formats
|
|
* ---------------------------------------
|
|
*/
|
|
#define NET_FORMAT_LONG 0 /* long format alphanumeric */
|
|
#define NET_FORMAT_SHORT 1 /* short format alphanumeric */
|
|
#define NET_FORMAT_NUM 2 /* numeric format */
|
|
|
|
#define NET_FORMAT_MAX_SIZE NET_FORMAT_LONG_SIZE
|
|
|
|
/*
|
|
* -----------------------------
|
|
* Network operator availability
|
|
* -----------------------------
|
|
*/
|
|
#define NET_OPER_UNKNOWN 0 /* unknown operator */
|
|
#define NET_OPER_AVAILABLE 1 /* available operator */
|
|
#define NET_OPER_CURRENT 2 /* currently selected operator */
|
|
#define NET_OPER_FORBIDDEN 3 /* forbidden operator */
|
|
|
|
/*
|
|
* --------------------------------------
|
|
* Network connection establishment cause
|
|
* --------------------------------------
|
|
*/
|
|
#define NET_ESTABLISH_CAUSE_EMERGENCY 0x01
|
|
#define NET_ESTABLISH_CAUSE_HIGH_PRIO 0x02
|
|
#define NET_ESTABLISH_CAUSE_MT_ACCESS 0x03
|
|
#define NET_ESTABLISH_CAUSE_MO_SIGNAL 0x04
|
|
#define NET_ESTABLISH_CAUSE_MO_DATA 0x05
|
|
#define NET_ESTABLISH_CAUSE_V1020 0x06
|
|
|
|
/*
|
|
* --------------------------------------
|
|
* Network connection establishment type
|
|
* --------------------------------------
|
|
*/
|
|
#define NET_ESTABLISH_TYPE_ORIGINATING_SIGNAL 0x10
|
|
#define NET_ESTABLISH_TYPE_EMERGENCY_CALLS 0x20
|
|
#define NET_ESTABLISH_TYPE_ORIGINATING_CALLS 0x30
|
|
#define NET_ESTABLISH_TYPE_TERMINATING_CALLS 0x40
|
|
#define NET_ESTABLISH_TYPE_MO_CS_FALLBACK 0x50
|
|
|
|
/*
|
|
* -------------------
|
|
* PDN connection type
|
|
* -------------------
|
|
*/
|
|
#define NET_PDN_TYPE_IPV4 (0 + 1)
|
|
#define NET_PDN_TYPE_IPV6 (1 + 1)
|
|
#define NET_PDN_TYPE_IPV4V6 (2 + 1)
|
|
|
|
/****************************************************************************/
|
|
/************************ G L O B A L T Y P E S ************************/
|
|
/****************************************************************************/
|
|
|
|
/*
|
|
* ---------------------
|
|
* PDN connection status
|
|
* ---------------------
|
|
*/
|
|
typedef enum {
|
|
/* MT = The Mobile Terminal, NW = The Network */
|
|
NET_PDN_MT_DEFAULT_ACT = 1, /* MT has activated a PDN connection */
|
|
NET_PDN_NW_DEFAULT_DEACT, /* NW has deactivated a PDN connection */
|
|
NET_PDN_MT_DEFAULT_DEACT, /* MT has deactivated a PDN connection */
|
|
NET_PDN_NW_DEDICATED_ACT, /* NW has activated an EPS bearer context */
|
|
NET_PDN_MT_DEDICATED_ACT, /* MT has activated an EPS bearer context */
|
|
NET_PDN_NW_DEDICATED_DEACT, /* NW has deactivated an EPS bearer context */
|
|
NET_PDN_MT_DEDICATED_DEACT, /* MT has deactivated an EPS bearer context */
|
|
} network_pdn_state_t;
|
|
|
|
/*
|
|
* ---------------------------
|
|
* Network operator identifier
|
|
* ---------------------------
|
|
*/
|
|
typedef struct {
|
|
#define NET_FORMAT_LONG_SIZE 16 /* Long alphanumeric format */
|
|
#define NET_FORMAT_SHORT_SIZE 8 /* Short alphanumeric format */
|
|
#define NET_FORMAT_NUM_SIZE 6 /* Numeric format (PLMN identifier */
|
|
union {
|
|
unsigned char alpha_long[NET_FORMAT_LONG_SIZE+1];
|
|
unsigned char alpha_short[NET_FORMAT_SHORT_SIZE+1];
|
|
unsigned char num[NET_FORMAT_NUM_SIZE+1];
|
|
} id;
|
|
} network_plmn_t;
|
|
|
|
/*
|
|
* -------------------------------
|
|
* EPS bearer level QoS parameters
|
|
* -------------------------------
|
|
*/
|
|
typedef struct {
|
|
int gbrUL; /* Guaranteed Bit Rate for uplink */
|
|
int gbrDL; /* Guaranteed Bit Rate for downlink */
|
|
int mbrUL; /* Maximum Bit Rate for uplink */
|
|
int mbrDL; /* Maximum Bit Rate for downlink */
|
|
int qci; /* QoS Class Identifier */
|
|
} network_qos_t;
|
|
|
|
/*
|
|
* -----------------------------
|
|
* IPv4 packet filter parameters
|
|
* -----------------------------
|
|
*/
|
|
typedef struct {
|
|
unsigned char protocol; /* Protocol identifier */
|
|
unsigned char tos; /* Type of service */
|
|
#define NET_PACKET_FILTER_IPV4_ADDR_SIZE 4
|
|
unsigned char addr[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
|
|
unsigned char mask[NET_PACKET_FILTER_IPV4_ADDR_SIZE];
|
|
} network_ipv4_data_t;
|
|
|
|
/*
|
|
* -----------------------------
|
|
* IPv6 packet filter parameters
|
|
* -----------------------------
|
|
*/
|
|
typedef struct {
|
|
unsigned char nh; /* Next header type */
|
|
unsigned char tf; /* Traffic class */
|
|
#define NET_PACKET_FILTER_IPV6_ADDR_SIZE 16
|
|
unsigned char addr[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
|
|
unsigned char mask[NET_PACKET_FILTER_IPV6_ADDR_SIZE];
|
|
unsigned int ipsec; /* IPSec security parameter index */
|
|
unsigned int fl; /* Flow label */
|
|
} network_ipv6_data_t;
|
|
|
|
/*
|
|
* -------------
|
|
* Packet Filter
|
|
* -------------
|
|
*/
|
|
typedef struct {
|
|
unsigned char id; /* Packet filter identifier */
|
|
#define NET_PACKET_FILTER_DOWNLINK 0x01
|
|
#define NET_PACKET_FILTER_UPLINK 0x02
|
|
#define NET_PACKET_FILTER_BIDIR 0x03
|
|
unsigned char dir; /* Packet filter direction */
|
|
unsigned char precedence; /* Evaluation precedence */
|
|
union {
|
|
network_ipv4_data_t ipv4;
|
|
network_ipv6_data_t ipv6;
|
|
} data;
|
|
unsigned short lport; /* Local (UE) port number */
|
|
unsigned short rport; /* Remote (network) port number */
|
|
} network_pkf_t;
|
|
|
|
/*
|
|
* ---------------------
|
|
* Traffic Flow Template
|
|
* ---------------------
|
|
*/
|
|
typedef struct {
|
|
int n_pkfs;
|
|
#define NET_PACKET_FILTER_MAX 16
|
|
network_pkf_t* pkf[NET_PACKET_FILTER_MAX];
|
|
} network_tft_t;
|
|
|
|
/*
|
|
* User notification callback, executed whenever a change of status with
|
|
* respect of PDN connection or EPS bearer context is notified by the EPS
|
|
* Session Management sublayer
|
|
*/
|
|
typedef int (*esm_indication_callback_t) (int, network_pdn_state_t);
|
|
|
|
/****************************************************************************/
|
|
/******************** G L O B A L V A R I A B L E S ********************/
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/****************** E X P O R T E D F U N C T I O N S ******************/
|
|
/****************************************************************************/
|
|
|
|
#endif /* __NETWORKDEF_H__*/
|