blob: ef63ef3c080ab000164c3c5c7db9fd66e4bd9c5e [file] [log] [blame]
#ifndef __URSP_PUBLIC_DEFS_H__
#define __URSP_PUBLIC_DEFS_H__
#include "d2pm_public_defs.h"
// Type denifitions
typedef enum
{
URSP_RES_FAIL = -1,
URSP_RES_NONE,
URSP_RES_SUCC,
URSP_RES_MAX = 0x7FFFFFFF
}ursp_res_enum;
typedef enum
{
URSP_ROUTE_SUPP_PROFILE_TYPE_NONE = 0,
URSP_ROUTE_SUPP_PROFILE_TYPE_REQ,
URSP_ROUTE_SUPP_PROFILE_TYPE_MAX = 0x7FFFFFFF
}ursp_route_supp_profile_type_enum;
typedef enum
{
URSP_REEVAL_EVENT_NONE = 0,
URSP_REEVAL_EVENT_PERIODIC,
URSP_REEVAL_EVENT_PDU_REL,
URSP_REEVAL_EVENT_PCF_UPDATE,
URSP_REEVAL_EVENT_INTER_SYS,
URSP_REEVAL_EVENT_REG,
URSP_REEVAL_EVENT_WLAN_EST,
URSP_REEVAL_EVENT_WLAN_REL,
URSP_REEVAL_EVENT_ALLOWED_NSSAI,
URSP_REEVAL_EVENT_LADN,
URSP_REEVAL_EVENT_MAX = 0x7FFFFFFF
}ursp_reeval_event_enum;
// => Internal
typedef enum {
TD_TYPE_MATACH_ALL = 0x00,
TD_TYPE_OS_APP_ID = 0x08,
TD_TYPE_IPV4_REMOTE_ADDR = 0x10,
TD_TYPE_IPV6_REMOTE_ADDR = 0x21,
TD_TYPE_PROTOCOL_ID = 0x30,
TD_TYPE_SINGLE_REMOTE_PORT = 0x50,
TD_TYPE_REMOTE_PORT_RANGE = 0x51,
TD_TYPE_SPI = 0x60,
TD_TYPE_TOS = 0x70,
TD_TYPE_FLOW_LABEL = 0x80,
TD_TYPE_DEST_MAC = 0x81,
TD_TYPE_C_TAG_VID = 0x83,
TD_TYPE_S_TAG_VID = 0x84,
TD_TYPE_C_TAG_PCP = 0x85,
TD_TYPE_S_TAG_PCP = 0x86,
TD_TYPE_ETHER_TYPE = 0x87,
TD_TYPE_DNN = 0x88,
TD_TYPE_CONN_CAPA = 0x90,
TD_TYPE_DEST_FQDN = 0x91,
TD_TYPE_APP_ID = 0xa0,
} traffic_descriptor_component_type_enum;
typedef enum {
RS_TYPE_SSC = 0x01,
RS_TYPE_SNSSAI = 0x02,
RS_TYPE_DNN = 0x04,
RS_TYPE_PDU_SESSION_TYPE = 0x08,
RS_TYPE_PREFER_ACCESS_TYPE = 0x10,
RS_TYPE_NON_SEAMLESS = 0x20,
} route_selection_descriptor_component_type_enum;
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
// Macro
#define URSP_CID_BITMAP_SIZE (D2PM_CID_BITMAP_SIZE)
#define URSP_UE_POLICY_MAX_RULE_LIST_SIZE (8) // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
#define URSP_RULE_MAX_ROUTE_SEL_DESC_LIST_SIZE (8) // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
// => LADN
#define URSP_MAX_LADN_DNN_NUM (8)
#define URSP_LADN_DNN_DELIM "\x1F"
#define URSP_LDAN_DNN_BITMAP_SIZE (((URSP_MAX_LADN_DNN_NUM - 1) >> 3) + 1)
// => Evaluation Flags
#define URSP_EVAL_FLAG_NONE (0x00000000)
#define URSP_EVAL_MATCH_ALL_DISALLOW (0x00000001)
// => Route attributes
#define URSP_ROUTE_ATTR_NONE (0x00000000)
#define URSP_ROUTE_ATTR_MATCH_ALL (0x00000001)
#define URSP_ROUTE_ATTR_UE_LOCAL_CONF (0x00000002)
// => Internal
#define URSP_DNN_SIZE (100) // APN in TS 23.003
// => => Traffic descriptor component type identifier
#define URSP_TDC_TYPE_MATCH_ALL (0x01)
#define URSP_TDC_TYPE_OS_ID (0x08)
#define URSP_TDC_TYPE_IPV4_REMOTE_ADDR (0x10)
#define URSP_TDC_TYPE_IPV6_REMOTE_ADDR (0x21)
#define URSP_TDC_TYPE_IPV4_PROT_ID (0x30)
#define URSP_TDC_TYPE_IPV6_NEXT_HDR (0x30)
#define URSP_TDC_TYPE_SINGLE_REMOTE_PORT (0x50)
#define URSP_TDC_TYPE_REMOTE_PORT_RANGE (0x51)
#define URSP_TDC_TYPE_IP_3_TUPLE (0x52) // max{(IPV4_REMOTE_ADDR, IPV4_REMOTE_MASK), (IPV6_REMOTE_ADDR, IPV6_PREFIX_LEN)} + IPV4_PROT_ID/IPV6_NEXT_HDR + max{SINGLE_REMOTE_PORT, (PORT_RANGE_LOW_LIMIT, PORT_RANGE_HIGH_LIMIT)}
#define URSP_TDC_TYPE_SEC_PARAM_IDX (0x60)
#define URSP_TDC_TYPE_TYPE_OF_SVC (0x70)
#define URSP_TDC_TYPE_TFC_CLASS (0x70)
#define URSP_TDC_TYPE_FLOW_LABEL (0x80)
#define URSP_TDC_TYPE_DST_MAC_ADDR (0x81)
#define URSP_TDC_TYPE_C_TAG_VID (0x83)
#define URSP_TDC_TYPE_S_TAG_VID (0x84)
#define URSP_TDC_TYPE_C_TAG_PCP_DEI (0x85)
#define URSP_TDC_TYPE_S_TAG_PCP_DEI (0x86)
#define URSP_TDC_TYPE_ETH_TYPE (0x87)
#define URSP_TDC_TYPE_DNN (0x88)
#define URSP_TDC_TYPE_CONN_CAP (0x90)
#define URSP_TDC_TYPE_DST_FQDN (0x91)
#define URSP_TDC_TYPE_OS_APP_ID (0xA0)
// => => Length of traffic descriptor component value field
#define URSP_TDC_LEN_MATCH_ALL (0)
#define URSP_TDC_LEN_OS_ID (16) // UUID in RFC 4122
#define URSP_TDC_LEN_IPV4_REMOTE_ADDR (4)
#define URSP_TDC_LEN_IPV4_REMOTE_MASK (4)
#define URSP_TDC_LEN_IPV6_REMOTE_ADDR (16)
#define URSP_TDC_LEN_IPV6_PREFIX_LEN (1)
#define URSP_TDC_LEN_IPV4_PROT_ID (1)
#define URSP_TDC_LEN_IPV6_NEXT_HDR (1)
#define URSP_TDC_LEN_SINGLE_REMOTE_PORT (2)
#define URSP_TDC_LEN_PORT_RANGE_LOW_LIMIT (2)
#define URSP_TDC_LEN_PORT_RANGE_HIGH_LIMIT (2)
#define URSP_TDC_LEN_IP_3_TUPLE (22) // max{(IPV4_REMOTE_ADDR, IPV4_REMOTE_MASK), (IPV6_REMOTE_ADDR, IPV6_PREFIX_LEN)} + IPV4_PROT_ID/IPV6_NEXT_HDR + max{SINGLE_REMOTE_PORT, (PORT_RANGE_LOW_LIMIT, PORT_RANGE_HIGH_LIMIT)}
#define URSP_TDC_LEN_SEC_PARAM_IDX (4)
#define URSP_TDC_LEN_TYPE_OF_SVC (1)
#define URSP_TDC_LEN_TFC_CLASS (1)
#define URSP_TDC_LEN_TYPE_OF_SVC_MASK (1)
#define URSP_TDC_LEN_TFC_CLASS_MASK (1)
#define URSP_TDC_LEN_FLOW_LABEL (3)
#define URSP_TDC_LEN_DST_MAC_ADDR (6)
#define URSP_TDC_LEN_C_TAG_VID (2)
#define URSP_TDC_LEN_S_TAG_VID (2)
#define URSP_TDC_LEN_C_TAG_PCP_DEI (1)
#define URSP_TDC_LEN_S_TAG_PCP_DEI (1)
#define URSP_TDC_LEN_ETH_TYPE (2)
#define URSP_TDC_LEN_DNN (URSP_DNN_SIZE)
#define URSP_TDC_LEN_CONN_CAP (255)
#define URSP_TDC_LEN_DST_FQDN (255)
#define URSP_TDC_LEN_OS_APP_ID (255)
// => => Route selection descriptor component type identifier
#define URSP_RSDC_TYPE_SSC_MODE (0x01)
#define URSP_RSDC_TYPE_S_NSSAI (0x02)
#define URSP_RSDC_TYPE_DNN (0x04)
#define URSP_RSDC_TYPE_PDU_SESSION_TYPE (0x08)
#define URSP_RSDC_TYPE_PREF_ACCESS_TYPE (0x10)
#define URSP_RSDC_TYPE_MULTI_ACCESS_PREF (0x11)
#define URSP_RSDC_TYPE_NON_SEAMLESS_NON_3GPP_OFFLOAD_IND (0x20)
#define URSP_RSDC_TYPE_LOC_CRITERIA (0x40)
#define URSP_RSDC_TYPE_TIME_WIN (0x80)
// => => Length of route selection descriptor component value field
#define URSP_RSDC_LEN_SSC_MODE (1)
#define URSP_RSDC_LEN_S_NSSAI (8) // S-NSSAI in TS 24.501
#define URSP_RSDC_LEN_DNN (URSP_DNN_SIZE)
#define URSP_RSDC_LEN_PDU_SESSION_TYPE (1)
#define URSP_RSDC_LEN_PREF_ACCESS_TYPE (1)
#define URSP_RSDC_LEN_NON_SEAMLESS_NON_3GPP_OFFLOAD_IND (0)
// APIs
// N/A
#endif