diff --git a/include/osmocom/pfcp/Makefile.am b/include/osmocom/pfcp/Makefile.am index e69de29..ff7df5e 100644 --- a/include/osmocom/pfcp/Makefile.am +++ b/include/osmocom/pfcp/Makefile.am @@ -0,0 +1,6 @@ +pfcp_HEADERS = \ + pfcp_proto.h \ + pfcp_strs.h \ + $(NULL) + +pfcpdir = $(includedir)/osmocom/pfcp diff --git a/include/osmocom/pfcp/pfcp_proto.h b/include/osmocom/pfcp/pfcp_proto.h new file mode 100644 index 0000000..d387b1b --- /dev/null +++ b/include/osmocom/pfcp/pfcp_proto.h @@ -0,0 +1,528 @@ +/* 3GPP TS 29.244: Packet Forwarding Control Protocol */ +/* + * (C) 2021-2022 by sysmocom - s.f.m.c. GmbH + * All Rights Reserved. + * + * Author: Neels Janosch Hofmeyr + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program. If not, see . + * + */ + +#pragma once + +#define OSMO_PFCP_PORT 8805 + +/* Section 7.3 / Table 7.3-1 */ +enum osmo_pfcp_message_type { + OSMO_PFCP_MSGT_NONE = 0, + + /* Node related messages */ + OSMO_PFCP_MSGT_HEARTBEAT_REQ = 1, + OSMO_PFCP_MSGT_HEARTBEAT_RESP = 2, + OSMO_PFCP_MSGT_PFD_MGMT_REQ = 3, + OSMO_PFCP_MSGT_PFD_MGMT_RESP = 4, + OSMO_PFCP_MSGT_ASSOC_SETUP_REQ = 5, + OSMO_PFCP_MSGT_ASSOC_SETUP_RESP = 6, + OSMO_PFCP_MSGT_ASSOC_UPDATE_REQ = 7, + OSMO_PFCP_MSGT_ASSOC_UPDATE_RESP = 8, + OSMO_PFCP_MSGT_ASSOC_RELEASE_REQ = 9, + OSMO_PFCP_MSGT_ASSOC_RELEASE_RESP = 10, + OSMO_PFCP_MSGT_VERSION_NOT_SUPP_RESP = 11, + OSMO_PFCP_MSGT_NODE_REPORT_REQ = 12, + OSMO_PFCP_MSGT_NODE_REPORT_RESP = 13, + OSMO_PFCP_MSGT_SESSION_SET_DEL_REQ = 14, + OSMO_PFCP_MSGT_SESSION_SET_DEL_RESP = 15, + + /* Session related messages */ + OSMO_PFCP_MSGT_SESSION_EST_REQ = 50, + OSMO_PFCP_MSGT_SESSION_EST_RESP = 51, + OSMO_PFCP_MSGT_SESSION_MOD_REQ = 52, + OSMO_PFCP_MSGT_SESSION_MOD_RESP = 53, + OSMO_PFCP_MSGT_SESSION_DEL_REQ = 54, + OSMO_PFCP_MSGT_SESSION_DEL_RESP = 55, + OSMO_PFCP_MSGT_SESSION_REP_REQ = 56, + OSMO_PFCP_MSGT_SESSION_REP_RESP = 57, +}; + +/* Section 8.1.2 / Table 8.1.2-1 */ +enum osmo_pfcp_iei { + OSMO_PFCP_INVALID_IEI = 0, + OSMO_PFCP_IEI_CREATE_PDR = 1, + OSMO_PFCP_IEI_PDI = 2, + OSMO_PFCP_IEI_CREATE_FAR = 3, + OSMO_PFCP_IEI_FORW_PARAMS = 4, + OSMO_PFCP_IEI_DUPL_PARAMS = 5, + OSMO_PFCP_IEI_CREATE_URR = 6, + OSMO_PFCP_IEI_CREATE_QER = 7, + OSMO_PFCP_IEI_CREATED_PDR = 8, + OSMO_PFCP_IEI_UPD_PDR = 9, + OSMO_PFCP_IEI_UPD_FAR = 10, + OSMO_PFCP_IEI_UPD_FORW_PARAMS = 11, + OSMO_PFCP_IEI_UPD_BAR_SESS_REP_RESP = 12, + OSMO_PFCP_IEI_UPD_URR = 13, + OSMO_PFCP_IEI_UPD_QER = 14, + OSMO_PFCP_IEI_REMOVE_PDR = 15, + OSMO_PFCP_IEI_REMOVE_FAR = 16, + OSMO_PFCP_IEI_REMOVE_URR = 17, + OSMO_PFCP_IEI_REMOVE_QER = 18, + OSMO_PFCP_IEI_CAUSE = 19, + OSMO_PFCP_IEI_SOURCE_IFACE = 20, + OSMO_PFCP_IEI_F_TEID = 21, + OSMO_PFCP_IEI_NETWORK_INST = 22, + OSMO_PFCP_IEI_SDF_FILTER = 23, + OSMO_PFCP_IEI_APPLICATION_ID = 24, + OSMO_PFCP_IEI_GATE_STATUS = 25, + OSMO_PFCP_IEI_MBR = 26, + OSMO_PFCP_IEI_GBR = 27, + OSMO_PFCP_IEI_QER_CORRELATION_ID = 28, + OSMO_PFCP_IEI_PRECEDENCE = 29, + OSMO_PFCP_IEI_TRANSPORT_LEVEL_MARKING = 30, + OSMO_PFCP_IEI_VOLUME_THRESH = 31, + OSMO_PFCP_IEI_TIME_THRESH = 32, + OSMO_PFCP_IEI_MONITORING_TIME = 33, + OSMO_PFCP_IEI_SUBSEQUENT_VOLUME_THRESH = 34, + OSMO_PFCP_IEI_SUBSEQUENT_TIME_THRESH = 35, + OSMO_PFCP_IEI_INACT_DETECTION_TIME = 36, + OSMO_PFCP_IEI_REPORTING_TRIGGERS = 37, + OSMO_PFCP_IEI_REDIRECT_INFO = 38, + OSMO_PFCP_IEI_REP_TYPE = 39, + OSMO_PFCP_IEI_OFFENDING_IE = 40, + OSMO_PFCP_IEI_FORW_POLICY = 41, + OSMO_PFCP_IEI_DESTINATION_IFACE = 42, + OSMO_PFCP_IEI_UP_FUNCTION_FEATURES = 43, + OSMO_PFCP_IEI_APPLY_ACTION = 44, + OSMO_PFCP_IEI_DL_DATA_SERVICE_INFO = 45, + OSMO_PFCP_IEI_DL_DATA_NOTIFICATION_DELAY = 46, + OSMO_PFCP_IEI_DL_BUFF_DURATION = 47, + OSMO_PFCP_IEI_DL_BUFF_SUGGESTED_PACKET_COUNT = 48, + OSMO_PFCP_IEI_PFCPSMREQ_FLAGS = 49, + OSMO_PFCP_IEI_PFCPSRRSP_FLAGS = 50, + OSMO_PFCP_IEI_LOAD_CTRL_INFO = 51, + OSMO_PFCP_IEI_SEQUENCE_NUMBER = 52, + OSMO_PFCP_IEI_METRIC = 53, + OSMO_PFCP_IEI_OVERLOAD_CTRL_INFO = 54, + OSMO_PFCP_IEI_TIMER = 55, + OSMO_PFCP_IEI_PDR_ID = 56, + OSMO_PFCP_IEI_F_SEID = 57, + OSMO_PFCP_IEI_APPLICATION_IDS_PFDS = 58, + OSMO_PFCP_IEI_PFD_CONTEXT = 59, + OSMO_PFCP_IEI_NODE_ID = 60, + OSMO_PFCP_IEI_PFD_CONTENTS = 61, + OSMO_PFCP_IEI_MEAS_METHOD = 62, + OSMO_PFCP_IEI_USAGE_REP_TRIGGER = 63, + OSMO_PFCP_IEI_MEAS_PERIOD = 64, + OSMO_PFCP_IEI_FQ_CSID = 65, + OSMO_PFCP_IEI_VOLUME_MEAS = 66, + OSMO_PFCP_IEI_DURATION_MEAS = 67, + OSMO_PFCP_IEI_APPLICATION_DETECTION_INFO = 68, + OSMO_PFCP_IEI_TIME_OF_FIRST_PACKET = 69, + OSMO_PFCP_IEI_TIME_OF_LAST_PACKET = 70, + OSMO_PFCP_IEI_QUOTA_HOLDING_TIME = 71, + OSMO_PFCP_IEI_DROPPED_DL_TRAFFIC_THRESH = 72, + OSMO_PFCP_IEI_VOLUME_QUOTA = 73, + OSMO_PFCP_IEI_TIME_QUOTA = 74, + OSMO_PFCP_IEI_START_TIME = 75, + OSMO_PFCP_IEI_END_TIME = 76, + OSMO_PFCP_IEI_QUERY_URR = 77, + OSMO_PFCP_IEI_USAGE_REP_SESS_MOD_RESP = 78, + OSMO_PFCP_IEI_USAGE_REP_SESS_DEL_RESP = 79, + OSMO_PFCP_IEI_USAGE_REP_SESS_REP_REQ = 80, + OSMO_PFCP_IEI_URR_ID = 81, + OSMO_PFCP_IEI_LINKED_URR_ID = 82, + OSMO_PFCP_IEI_DL_DATA_REP = 83, + OSMO_PFCP_IEI_OUTER_HEADER_CREATION = 84, + OSMO_PFCP_IEI_CREATE_BAR = 85, + OSMO_PFCP_IEI_UPD_BAR_SESS_MOD_REQ = 86, + OSMO_PFCP_IEI_REMOVE_BAR = 87, + OSMO_PFCP_IEI_BAR_ID = 88, + OSMO_PFCP_IEI_CP_FUNCTION_FEATURES = 89, + OSMO_PFCP_IEI_USAGE_INFO = 90, + OSMO_PFCP_IEI_APPLICATION_INST_ID = 91, + OSMO_PFCP_IEI_FLOW_INFO = 92, + OSMO_PFCP_IEI_UE_IP_ADDRESS = 93, + OSMO_PFCP_IEI_PACKET_RATE = 94, + OSMO_PFCP_IEI_OUTER_HEADER_REMOVAL = 95, + OSMO_PFCP_IEI_RECOVERY_TIME_STAMP = 96, + OSMO_PFCP_IEI_DL_FLOW_LEVEL_MARKING = 97, + OSMO_PFCP_IEI_HEADER_ENRICHMENT = 98, + OSMO_PFCP_IEI_ERROR_IND_REP = 99, + OSMO_PFCP_IEI_MEAS_INFO = 100, + OSMO_PFCP_IEI_NODE_REP_TYPE = 101, + OSMO_PFCP_IEI_USER_PLANE_PATH_FAILURE_REP = 102, + OSMO_PFCP_IEI_REMOTE_GTP_U_PEER = 103, + OSMO_PFCP_IEI_UR_SEQN = 104, + OSMO_PFCP_IEI_UPD_DUPL_PARAMS = 105, + OSMO_PFCP_IEI_ACTIVATE_PREDEFINED_RULES = 106, + OSMO_PFCP_IEI_DEACTIVATE_PREDEFINED_RULES = 107, + OSMO_PFCP_IEI_FAR_ID = 108, + OSMO_PFCP_IEI_QER_ID = 109, + OSMO_PFCP_IEI_OCI_FLAGS = 110, + OSMO_PFCP_IEI_PFCP_ASSOC_RELEASE_REQ = 111, + OSMO_PFCP_IEI_GRACEFUL_RELEASE_PERIOD = 112, + OSMO_PFCP_IEI_PDN_TYPE = 113, + OSMO_PFCP_IEI_FAILED_RULE_ID = 114, + OSMO_PFCP_IEI_TIME_QUOTA_MECHANISM = 115, + OSMO_PFCP_IEI_RESERVED = 116, + OSMO_PFCP_IEI_USER_PLANE_INACT_TIMER = 117, + OSMO_PFCP_IEI_AGGREGATED_URRS = 118, + OSMO_PFCP_IEI_MULTIPLIER = 119, + OSMO_PFCP_IEI_AGGREGATED_URR_ID = 120, + OSMO_PFCP_IEI_SUBSEQUENT_VOLUME_QUOTA = 121, + OSMO_PFCP_IEI_SUBSEQUENT_TIME_QUOTA = 122, + OSMO_PFCP_IEI_RQI = 123, + OSMO_PFCP_IEI_QFI = 124, + OSMO_PFCP_IEI_QUERY_URR_REFERENCE = 125, + OSMO_PFCP_IEI_ADDITIONAL_USAGE_REPS_INFO = 126, + OSMO_PFCP_IEI_CREATE_TRAFFIC_ENDPOINT = 127, + OSMO_PFCP_IEI_CREATED_TRAFFIC_ENDPOINT = 128, + OSMO_PFCP_IEI_UPD_TRAFFIC_ENDPOINT = 129, + OSMO_PFCP_IEI_REMOVE_TRAFFIC_ENDPOINT = 130, + OSMO_PFCP_IEI_TRAFFIC_ENDPOINT_ID = 131, + OSMO_PFCP_IEI_ETHERNET_PACKET_FILTER = 132, + OSMO_PFCP_IEI_MAC_ADDRESS = 133, + OSMO_PFCP_IEI_C_TAG = 134, + OSMO_PFCP_IEI_S_TAG = 135, + OSMO_PFCP_IEI_ETHERTYPE = 136, + OSMO_PFCP_IEI_PROXYING = 137, + OSMO_PFCP_IEI_ETHERNET_FILTER_ID = 138, + OSMO_PFCP_IEI_ETHERNET_FILTER_PROPERTIES = 139, + OSMO_PFCP_IEI_SUGGESTED_BUFF_PACKETS_COUNT = 140, + OSMO_PFCP_IEI_USER_ID = 141, + OSMO_PFCP_IEI_ETHERNET_PDU_SESS_INFO = 142, + OSMO_PFCP_IEI_ETHERNET_TRAFFIC_INFO = 143, + OSMO_PFCP_IEI_MAC_ADDRS_DETECTED = 144, + OSMO_PFCP_IEI_MAC_ADDRS_REMOVED = 145, + OSMO_PFCP_IEI_ETHERNET_INACT_TIMER = 146, + OSMO_PFCP_IEI_ADDITIONAL_MONITORING_TIME = 147, + OSMO_PFCP_IEI_EVENT_QUOTA = 148, + OSMO_PFCP_IEI_EVENT_THRESH = 149, + OSMO_PFCP_IEI_SUBSEQUENT_EVENT_QUOTA = 150, + OSMO_PFCP_IEI_SUBSEQUENT_EVENT_THRESH = 151, + OSMO_PFCP_IEI_TRACE_INFO = 152, + OSMO_PFCP_IEI_FRAMED_ROUTE = 153, + OSMO_PFCP_IEI_FRAMED_ROUTING = 154, + OSMO_PFCP_IEI_FRAMED_IPV6_ROUTE = 155, + OSMO_PFCP_IEI_TIME_STAMP = 156, + OSMO_PFCP_IEI_AVERAGING_WINDOW = 157, + OSMO_PFCP_IEI_PAGING_POLICY_INDICATOR = 158, + OSMO_PFCP_IEI_APN_DNN = 159, + OSMO_PFCP_IEI_3GPP_IFACE_TYPE = 160, + OSMO_PFCP_IEI_PFCPSRREQ_FLAGS = 161, + OSMO_PFCP_IEI_PFCPAUREQ_FLAGS = 162, + OSMO_PFCP_IEI_ACTIVATION_TIME = 163, + OSMO_PFCP_IEI_DEACTIVATION_TIME = 164, + OSMO_PFCP_IEI_CREATE_MAR = 165, + OSMO_PFCP_IEI_3GPP_ACCESS_FORW_ACTION_INFO = 166, + OSMO_PFCP_IEI_NON_3GPP_ACCESS_FORW_ACTION_INFO = 167, + OSMO_PFCP_IEI_REMOVE_MAR = 168, + OSMO_PFCP_IEI_UPD_MAR = 169, + OSMO_PFCP_IEI_MAR_ID = 170, + OSMO_PFCP_IEI_STEERING_FUNCTIONALITY = 171, + OSMO_PFCP_IEI_STEERING_MODE = 172, + OSMO_PFCP_IEI_WEIGHT = 173, + OSMO_PFCP_IEI_PRIORITY = 174, + OSMO_PFCP_IEI_UPD_3GPP_ACCESS_FORW_ACTION_INFO = 175, + OSMO_PFCP_IEI_UPD_NON_3GPP_ACCESS_FORW_ACTION_INFO = 176, + OSMO_PFCP_IEI_UE_IP_ADDRESS_POOL_IDENTITY = 177, + OSMO_PFCP_IEI_ALTERNATIVE_SMF_IP_ADDRESS = 178, + OSMO_PFCP_IEI_PACKET_REPLICATION_AND_DETECTION_CARRY_ON_INFO = 179, + OSMO_PFCP_IEI_SMF_SET_ID = 180, + OSMO_PFCP_IEI_QUOTA_VALIDITY_TIME = 181, + OSMO_PFCP_IEI_NUMBER_OF_REPS = 182, + OSMO_PFCP_IEI_PFCP_SESS_RETENTION_INFO_IN_ASSOC_SETUP_REQ = 183, + OSMO_PFCP_IEI_PFCPASRSP_FLAGS = 184, + OSMO_PFCP_IEI_CP_ENTITY_IP_ADDRESS = 185, + OSMO_PFCP_IEI_PFCPSEREQ_FLAGS = 186, + OSMO_PFCP_IEI_USER_PLANE_PATH_RECOVERY_REP = 187, + OSMO_PFCP_IEI_IP_MULTICAST_ADDR_INFO_IN_SESS_EST_REQ = 188, + OSMO_PFCP_IEI_JOIN_IP_MULTICAST_INFO_IE_IN_USAGE_REP = 189, + OSMO_PFCP_IEI_LEAVE_IP_MULTICAST_INFO_IE_IN_USAGE_REP = 190, + OSMO_PFCP_IEI_IP_MULTICAST_ADDRESS = 191, + OSMO_PFCP_IEI_SOURCE_IP_ADDRESS = 192, + OSMO_PFCP_IEI_PACKET_RATE_STATUS = 193, + OSMO_PFCP_IEI_CREATE_BRIDGE_INFO_FOR_TSC = 194, + OSMO_PFCP_IEI_CREATED_BRIDGE_INFO_FOR_TSC = 195, + OSMO_PFCP_IEI_DS_TT_PORT_NUMBER = 196, + OSMO_PFCP_IEI_NW_TT_PORT_NUMBER = 197, + OSMO_PFCP_IEI_TSN_BRIDGE_ID = 198, + OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_MOD_REQ = 199, + OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_MOD_RESP = 200, + OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_REP_REQ = 201, + OSMO_PFCP_IEI_PORT_MGMT_INFO_CONTAINER = 202, + OSMO_PFCP_IEI_CLOCK_DRIFT_CTRL_INFO = 203, + OSMO_PFCP_IEI_REQUESTED_CLOCK_DRIFT_INFO = 204, + OSMO_PFCP_IEI_CLOCK_DRIFT_REP = 205, + OSMO_PFCP_IEI_TSN_TIME_DOMAIN_NUMBER = 206, + OSMO_PFCP_IEI_TIME_OFFSET_THRESH = 207, + OSMO_PFCP_IEI_CUMULATIVE_RATERATIO_THRESH = 208, + OSMO_PFCP_IEI_TIME_OFFSET_MEAS = 209, + OSMO_PFCP_IEI_CUMULATIVE_RATERATIO_MEAS = 210, + OSMO_PFCP_IEI_REMOVE_SRR = 211, + OSMO_PFCP_IEI_CREATE_SRR = 212, + OSMO_PFCP_IEI_UPD_SRR = 213, + OSMO_PFCP_IEI_SESS_REP = 214, + OSMO_PFCP_IEI_SRR_ID = 215, + OSMO_PFCP_IEI_ACCESS_AVAIL_CTRL_INFO = 216, + OSMO_PFCP_IEI_REQUESTED_ACCESS_AVAIL_INFO = 217, + OSMO_PFCP_IEI_ACCESS_AVAIL_REP = 218, + OSMO_PFCP_IEI_ACCESS_AVAIL_INFO = 219, + OSMO_PFCP_IEI_PROVIDE_ATSSS_CTRL_INFO = 220, + OSMO_PFCP_IEI_ATSSS_CTRL_PARAMS = 221, + OSMO_PFCP_IEI_MPTCP_CTRL_INFO = 222, + OSMO_PFCP_IEI_ATSSS_LL_CTRL_INFO = 223, + OSMO_PFCP_IEI_PMF_CTRL_INFO = 224, + OSMO_PFCP_IEI_MPTCP_PARAMS = 225, + OSMO_PFCP_IEI_ATSSS_LL_PARAMS = 226, + OSMO_PFCP_IEI_PMF_PARAMS = 227, + OSMO_PFCP_IEI_MPTCP_ADDRESS_INFO = 228, + OSMO_PFCP_IEI_UE_LINK_SPECIFIC_IP_ADDRESS = 229, + OSMO_PFCP_IEI_PMF_ADDRESS_INFO = 230, + OSMO_PFCP_IEI_ATSSS_LL_INFO = 231, + OSMO_PFCP_IEI_DATA_NETWORK_ACCESS_IDENTIFIER = 232, + OSMO_PFCP_IEI_UE_IP_ADDRESS_POOL_INFO = 233, + OSMO_PFCP_IEI_AVERAGE_PACKET_DELAY = 234, + OSMO_PFCP_IEI_MIN_PACKET_DELAY = 235, + OSMO_PFCP_IEI_MAX_PACKET_DELAY = 236, + OSMO_PFCP_IEI_QOS_REP_TRIGGER = 237, + OSMO_PFCP_IEI_GTP_U_PATH_QOS_CTRL_INFO = 238, + OSMO_PFCP_IEI_GTP_U_PATH_QOS_REP_NODE_REP_REQ = 239, + OSMO_PFCP_IEI_QOS_INFO_IN_GTP_U_PATH_QOS_REP = 240, + OSMO_PFCP_IEI_GTP_U_PATH_IFACE_TYPE = 241, + OSMO_PFCP_IEI_QOS_MONITORING_PER_QOS_FLOW_CTRL_INFO = 242, + OSMO_PFCP_IEI_REQUESTED_QOS_MONITORING = 243, + OSMO_PFCP_IEI_REPORTING_FREQUENCY = 244, + OSMO_PFCP_IEI_PACKET_DELAY_THRESHOLDS = 245, + OSMO_PFCP_IEI_MIN_WAIT_TIME = 246, + OSMO_PFCP_IEI_QOS_MONITORING_REP = 247, + OSMO_PFCP_IEI_QOS_MONITORING_MEAS = 248, + OSMO_PFCP_IEI_MT_EDT_CTRL_INFO = 249, + OSMO_PFCP_IEI_DL_DATA_PACKETS_SIZE = 250, + OSMO_PFCP_IEI_QER_CTRL_INDICATIONS = 251, + OSMO_PFCP_IEI_PACKET_RATE_STATUS_REP = 252, + OSMO_PFCP_IEI_NF_INST_ID = 253, + OSMO_PFCP_IEI_ETHERNET_CONTEXT_INFO = 254, + OSMO_PFCP_IEI_REDUNDANT_TRANSMISSION_PARAMS = 255, + OSMO_PFCP_IEI_UPDATED_PDR = 256, + OSMO_PFCP_IEI_S_NSSAI = 257, + OSMO_PFCP_IEI_IP_VERSION = 258, + OSMO_PFCP_IEI_PFCPASREQ_FLAGS = 259, + OSMO_PFCP_IEI_DATA_STATUS = 260, + OSMO_PFCP_IEI_PROVIDE_RDS_CONF_INFO = 261, + OSMO_PFCP_IEI_RDS_CONF_INFO = 262, + OSMO_PFCP_IEI_QUERY_PACKET_RATE_STATUS_IE_IN_SESS_MOD_REQ = 263, + OSMO_PFCP_IEI_PACKET_RATE_STATUS_REP_IE_IN_SESS_MOD_RESP = 264, + OSMO_PFCP_IEI_MPTCP_APPLICABLE_IND = 265, + OSMO_PFCP_IEI_BRIDGE_MGMT_INFO_CONTAINER = 266, + OSMO_PFCP_IEI_UE_IP_ADDRESS_USAGE_INFO = 267, + OSMO_PFCP_IEI_NUMBER_OF_UE_IP_ADDRS = 268, + OSMO_PFCP_IEI_VALIDITY_TIMER = 269, + OSMO_PFCP_IEI_REDUNDANT_TRANSMISSION_FORW_PARAMS = 270, + OSMO_PFCP_IEI_TRANSPORT_DELAY_REPORTING = 271, +}; + +/* Section 8.2.1 / Table 8.2.1-1 */ +enum osmo_pfcp_cause { + OSMO_PFCP_CAUSE_RESERVED = 0, + OSMO_PFCP_CAUSE_REQUEST_ACCEPTED = 1, + OSMO_PFCP_CAUSE_MORE_USAGE_REPORT_TO_SEND = 2, + OSMO_PFCP_CAUSE_REQUEST_REJECTED = 64, + OSMO_PFCP_CAUSE_SESSION_CTX_NOT_FOUND = 65, + OSMO_PFCP_CAUSE_MANDATORY_IE_MISSING = 66, + OSMO_PFCP_CAUSE_CONDITIONAL_IE_MISSING = 67, + OSMO_PFCP_CAUSE_INVALID_LENGTH = 68, + OSMO_PFCP_CAUSE_MANDATORY_IE_INCORRECT = 69, + OSMO_PFCP_CAUSE_INVALID_FORW_POLICY = 70, + OSMO_PFCP_CAUSE_INVALID_F_TEID_ALLOC_OPTION = 71, + OSMO_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOC = 72, + OSMO_PFCP_CAUSE_RULE_CREATION_MOD_FAILURE = 73, + OSMO_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION = 74, + OSMO_PFCP_CAUSE_NO_RESOURCES_AVAILABLE = 75, + OSMO_PFCP_CAUSE_SERVICE_NOT_SUPPORTED = 76, + OSMO_PFCP_CAUSE_SYSTEM_FAILURE = 77, + OSMO_PFCP_CAUSE_REDIRECTION_REQUESTED = 78, + OSMO_PFCP_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED = 79, +}; + +/* Section 8.2.38 */ +enum osmo_pfcp_node_id_type { + OSMO_PFCP_NODE_ID_T_IPV4 = 0, + OSMO_PFCP_NODE_ID_T_IPV6 = 1, + OSMO_PFCP_NODE_ID_T_FQDN = 2, +}; + +enum osmo_pfcp_3gpp_iface_type { + OSMO_PFCP_3GPP_IFACE_TYPE_S1_U = 0, + OSMO_PFCP_3GPP_IFACE_TYPE_S5_S8_U = 1, + OSMO_PFCP_3GPP_IFACE_TYPE_S4_U = 2, + OSMO_PFCP_3GPP_IFACE_TYPE_S11_U = 3, + OSMO_PFCP_3GPP_IFACE_TYPE_S12_U = 4, + OSMO_PFCP_3GPP_IFACE_TYPE_GN_GP_U = 5, + OSMO_PFCP_3GPP_IFACE_TYPE_S2A_U = 6, + OSMO_PFCP_3GPP_IFACE_TYPE_S2B_U = 7, + OSMO_PFCP_3GPP_IFACE_TYPE_ENODEB_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING = 8, + OSMO_PFCP_3GPP_IFACE_TYPE_ENODEB_GTP_U_INTERFACE_FOR_UL_DATA_FORWARDING = 9, + OSMO_PFCP_3GPP_IFACE_TYPE_SGW_UPF_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING = 10, + OSMO_PFCP_3GPP_IFACE_TYPE_N3_3GPP_ACCESS = 11, + OSMO_PFCP_3GPP_IFACE_TYPE_N3_TRUSTED_NON_3GPP_ACCESS = 12, + OSMO_PFCP_3GPP_IFACE_TYPE_N3_UNTRUSTED_NON_3GPP_ACCESS = 13, + OSMO_PFCP_3GPP_IFACE_TYPE_N3_FOR_DATA_FORWARDING = 14, + OSMO_PFCP_3GPP_IFACE_TYPE_N9 = 15, + OSMO_PFCP_3GPP_IFACE_TYPE_SGI = 16, + OSMO_PFCP_3GPP_IFACE_TYPE_N6 = 17, + OSMO_PFCP_3GPP_IFACE_TYPE_N19 = 18, + OSMO_PFCP_3GPP_IFACE_TYPE_S8_U = 19, + OSMO_PFCP_3GPP_IFACE_TYPE_GP_U = 20, +}; + +enum osmo_pfcp_source_iface { + OSMO_PFCP_SOURCE_IFACE_ACCESS = 0, + OSMO_PFCP_SOURCE_IFACE_CORE = 1, + OSMO_PFCP_SOURCE_IFACE_SGI_LAN_N6_LAN = 2, + OSMO_PFCP_SOURCE_IFACE_CP_FUNCTION = 3, + OSMO_PFCP_SOURCE_IFACE_5G_VN_INTERNAL = 4, +}; + +enum osmo_pfcp_dest_iface { + OSMO_PFCP_DEST_IFACE_ACCESS = 0, + OSMO_PFCP_DEST_IFACE_CORE = 1, + OSMO_PFCP_DEST_IFACE_SGI_LAN_N6_LAN = 2, + OSMO_PFCP_DEST_IFACE_CP_FUNCTION = 3, + OSMO_PFCP_DEST_IFACE_LI_FUNCTION = 4, + OSMO_PFCP_DEST_IFACE_5G_VN_INTERNAL = 5, +}; + +/* The enum values correspond to the bit index in the supported features bitmask in the PFCP UP Function Features IE. + * 0 means first octet and first bit, "Octet 5 Bit 1" as in spec; + * 7 means first octet last bit, "Octet 5 Bit 8"; + * 8 means second octet first bit, "Octet 6 Bit 1"; + * and so on. + * Intended for use with osmo_pfcp_bits_get(), osmo_pfcp_bits_set(), osmo_pfcp_bits_to_str_c(). + */ +enum osmo_pfcp_up_feature { + OSMO_PFCP_UP_FEAT_BUCP = 0, + OSMO_PFCP_UP_FEAT_DDND, + OSMO_PFCP_UP_FEAT_DLBD, + OSMO_PFCP_UP_FEAT_TRST, + OSMO_PFCP_UP_FEAT_FTUP, + OSMO_PFCP_UP_FEAT_PFDM, + OSMO_PFCP_UP_FEAT_HEEU, + OSMO_PFCP_UP_FEAT_TREU, + OSMO_PFCP_UP_FEAT_EMPU, + OSMO_PFCP_UP_FEAT_PDIU, + OSMO_PFCP_UP_FEAT_UDBC, + OSMO_PFCP_UP_FEAT_QUOAC, + OSMO_PFCP_UP_FEAT_TRACE, + OSMO_PFCP_UP_FEAT_FRRT, + OSMO_PFCP_UP_FEAT_PFDE, + OSMO_PFCP_UP_FEAT_EPFAR, + OSMO_PFCP_UP_FEAT_DPDRA, + OSMO_PFCP_UP_FEAT_ADPDP, + OSMO_PFCP_UP_FEAT_UEIP, + OSMO_PFCP_UP_FEAT_SSET, + OSMO_PFCP_UP_FEAT_MNOP, + OSMO_PFCP_UP_FEAT_MTE, + OSMO_PFCP_UP_FEAT_BUNDL, + OSMO_PFCP_UP_FEAT_GCOM, + OSMO_PFCP_UP_FEAT_MPAS, + OSMO_PFCP_UP_FEAT_RTTL, + OSMO_PFCP_UP_FEAT_VTIME, + OSMO_PFCP_UP_FEAT_NORP, + OSMO_PFCP_UP_FEAT_IP6PL, + OSMO_PFCP_UP_FEAT_TSCU, + OSMO_PFCP_UP_FEAT_MPTCP, + OSMO_PFCP_UP_FEAT_ATSSSLL, + OSMO_PFCP_UP_FEAT_QFQM, + OSMO_PFCP_UP_FEAT_GPQM, + OSMO_PFCP_UP_FEAT_MTEDT, + OSMO_PFCP_UP_FEAT_CIOT, + OSMO_PFCP_UP_FEAT_ETHAR, + OSMO_PFCP_UP_FEAT_DDDS, + OSMO_PFCP_UP_FEAT_RDS, + OSMO_PFCP_UP_FEAT_RTTWP, +}; + +/* The enum values correspond to the bit index in the supported features bitmask in the PFCP CP Function Features IE. + * 0 means first octet and first bit, "Octet 5 Bit 1" as in spec; + * 7 means first octet last bit, "Octet 5 Bit 8"; + * 8 means second octet first bit, "Octet 6 Bit 1"; + * and so on. + * Intended for use with osmo_pfcp_bits_get(), osmo_pfcp_bits_set(), osmo_pfcp_bits_to_str_c(). + */ +enum osmo_pfcp_cp_feature { + OSMO_PFCP_CP_FEAT_LOAD = 0, + OSMO_PFCP_CP_FEAT_OVRL, + OSMO_PFCP_CP_FEAT_EPFAR, + OSMO_PFCP_CP_FEAT_SSET, + OSMO_PFCP_CP_FEAT_BUNDL, + OSMO_PFCP_CP_FEAT_MPAS, + OSMO_PFCP_CP_FEAT_ARDR, + OSMO_PFCP_CP_FEAT_UIAUR, +}; + +/* The enum values correspond to the bit index in the PFCP Apply Action IE. + * 0 means first octet and first bit, "Octet 5 Bit 1" as in spec; + * 7 means first octet last bit, "Octet 5 Bit 8"; + * 8 means second octet first bit, "Octet 6 Bit 1"; + * and so on. + * Intended for use with osmo_pfcp_bits_get(), osmo_pfcp_bits_set(), osmo_pfcp_bits_to_str_c(). + */ +enum osmo_pfcp_apply_action { + OSMO_PFCP_APPLY_ACTION_DROP = 0, + OSMO_PFCP_APPLY_ACTION_FORW, + OSMO_PFCP_APPLY_ACTION_BUFF, + OSMO_PFCP_APPLY_ACTION_NOCP, + OSMO_PFCP_APPLY_ACTION_DUPL, + OSMO_PFCP_APPLY_ACTION_IPMA, + OSMO_PFCP_APPLY_ACTION_IPMD, + OSMO_PFCP_APPLY_ACTION_DFRT, + OSMO_PFCP_APPLY_ACTION_EDRT, + OSMO_PFCP_APPLY_ACTION_BDPN, + OSMO_PFCP_APPLY_ACTION_DDPN, +}; + +/* The enum values correspond to the bit index in the description bitmask in the PFCP Outer Header Creation IE. + * 0 means first octet and first bit, "Octet 5 Bit 1" as in spec; + * 7 means first octet last bit, "Octet 5 Bit 8"; + * 8 means second octet first bit, "Octet 6 Bit 1"; + * and so on. + * Intended for use with osmo_pfcp_bits_get(), osmo_pfcp_bits_set(), osmo_pfcp_bits_to_str_c(). + */ +enum osmo_pfcp_outer_header_creation { + OSMO_PFCP_OUTER_HEADER_CREATION_GTP_U_UDP_IPV4 = 0, + OSMO_PFCP_OUTER_HEADER_CREATION_GTP_U_UDP_IPV6, + OSMO_PFCP_OUTER_HEADER_CREATION_UDP_IPV4, + OSMO_PFCP_OUTER_HEADER_CREATION_UDP_IPV6, + OSMO_PFCP_OUTER_HEADER_CREATION_IPV4, + OSMO_PFCP_OUTER_HEADER_CREATION_IPV6, + OSMO_PFCP_OUTER_HEADER_CREATION_C_TAG, + OSMO_PFCP_OUTER_HEADER_CREATION_S_TAG, + OSMO_PFCP_OUTER_HEADER_CREATION_N19_INDICATION, + OSMO_PFCP_OUTER_HEADER_CREATION_N6_INDICATION, +}; + +/* 3GPP TS 29.244 8.2.64 */ +enum osmo_pfcp_outer_header_removal_desc { + OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IPV4 = 0, + OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IPV6 = 1, + OSMO_PFCP_OUTER_HEADER_REMOVAL_UDP_IPV4 = 2, + OSMO_PFCP_OUTER_HEADER_REMOVAL_UDP_IPV6 = 3, + OSMO_PFCP_OUTER_HEADER_REMOVAL_IPV4 = 4, + OSMO_PFCP_OUTER_HEADER_REMOVAL_IPV6 = 5, + OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IP = 6, + OSMO_PFCP_OUTER_HEADER_REMOVAL_VLAN_S_TAG = 7, + OSMO_PFCP_OUTER_HEADER_REMOVAL_S_TAG_AND_C_TAG = 8, +}; diff --git a/include/osmocom/pfcp/pfcp_strs.h b/include/osmocom/pfcp/pfcp_strs.h new file mode 100644 index 0000000..d0b106a --- /dev/null +++ b/include/osmocom/pfcp/pfcp_strs.h @@ -0,0 +1,94 @@ +/* + * (C) 2021-2022 by sysmocom - s.f.m.c. GmbH + * All Rights Reserved. + * + * Author: Neels Janosch Hofmeyr + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program. If not, see . + * + */ + +#pragma once + +#include + +#include + +extern const struct value_string osmo_pfcp_message_type_strs[]; +static inline const char *osmo_pfcp_message_type_str(enum osmo_pfcp_message_type val) +{ + return get_value_string(osmo_pfcp_message_type_strs, val); +} + +extern const struct value_string osmo_pfcp_iei_strs[]; +static inline const char *osmo_pfcp_iei_str(enum osmo_pfcp_iei val) +{ + return get_value_string(osmo_pfcp_iei_strs, val); +} + +extern const struct value_string osmo_pfcp_cause_strs[]; +static inline const char *osmo_pfcp_cause_str(enum osmo_pfcp_cause val) +{ + return get_value_string(osmo_pfcp_cause_strs, val); +} + +extern const struct value_string osmo_pfcp_up_feature_strs[]; +static inline const char *osmo_pfcp_up_feature_str(enum osmo_pfcp_up_feature val) +{ + return get_value_string(osmo_pfcp_up_feature_strs, val); +} + +extern const struct value_string osmo_pfcp_cp_feature_strs[]; +static inline const char *osmo_pfcp_cp_feature_str(enum osmo_pfcp_cp_feature val) +{ + return get_value_string(osmo_pfcp_cp_feature_strs, val); +} + +extern const struct value_string osmo_pfcp_apply_action_strs[]; +static inline const char *osmo_pfcp_apply_action_str(enum osmo_pfcp_apply_action val) +{ + return get_value_string(osmo_pfcp_apply_action_strs, val); +} + +extern const struct value_string osmo_pfcp_outer_header_creation_strs[]; +static inline const char *osmo_pfcp_outer_header_creation_str(enum osmo_pfcp_outer_header_creation val) +{ + return get_value_string(osmo_pfcp_outer_header_creation_strs, val); +} + +extern const struct value_string osmo_pfcp_outer_header_removal_desc_strs[]; +static inline const char *osmo_pfcp_outer_header_removal_desc_str(enum osmo_pfcp_outer_header_removal_desc val) +{ + return get_value_string(osmo_pfcp_outer_header_removal_desc_strs, val); +} + +extern const struct value_string osmo_pfcp_source_iface_strs[]; +static inline const char *osmo_pfcp_source_iface_str(enum osmo_pfcp_source_iface val) +{ + return get_value_string(osmo_pfcp_source_iface_strs, val); +} + +extern const struct value_string osmo_pfcp_dest_iface_strs[]; +static inline const char *osmo_pfcp_dest_iface_str(enum osmo_pfcp_dest_iface val) +{ + return get_value_string(osmo_pfcp_dest_iface_strs, val); +} + +extern const struct value_string osmo_pfcp_3gpp_iface_type_strs[]; +static inline const char *osmo_pfcp_3gpp_iface_type_str(enum osmo_pfcp_3gpp_iface_type val) +{ + return get_value_string(osmo_pfcp_3gpp_iface_type_strs, val); +} diff --git a/src/libosmo-pfcp/Makefile.am b/src/libosmo-pfcp/Makefile.am index e69de29..f2dacfe 100644 --- a/src/libosmo-pfcp/Makefile.am +++ b/src/libosmo-pfcp/Makefile.am @@ -0,0 +1,28 @@ +AM_CPPFLAGS = \ + $(all_includes) \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/include \ + -I$(top_builddir) \ + -I$(builddir) \ + $(NULL) + +AM_CFLAGS = \ + -Wall \ + $(LIBOSMOCORE_CFLAGS) \ + $(LIBOSMOVTY_CFLAGS) \ + $(COVERAGE_CFLAGS) \ + $(NULL) + +AM_LDFLAGS = \ + $(LIBOSMOCORE_LIBS) \ + $(LIBOSMOVTY_LIBS) \ + $(COVERAGE_LDFLAGS) \ + $(NULL) + +noinst_LIBRARIES = \ + libosmo-pfcp.a \ + $(NULL) + +libosmo_pfcp_a_SOURCES = \ + pfcp_strs.c \ + $(NULL) diff --git a/src/libosmo-pfcp/pfcp_strs.c b/src/libosmo-pfcp/pfcp_strs.c new file mode 100644 index 0000000..bd53aa0 --- /dev/null +++ b/src/libosmo-pfcp/pfcp_strs.c @@ -0,0 +1,492 @@ +/* + * (C) 2021-2022 by sysmocom - s.f.m.c. GmbH + * All Rights Reserved. + * + * Author: Neels Janosch Hofmeyr + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program. If not, see . + * + */ + +#include + +const struct value_string osmo_pfcp_message_type_strs[] = { + { OSMO_PFCP_MSGT_HEARTBEAT_REQ, "HEARTBEAT_REQ" }, + { OSMO_PFCP_MSGT_HEARTBEAT_RESP, "HEARTBEAT_RESP" }, + { OSMO_PFCP_MSGT_PFD_MGMT_REQ, "PFD_MGMT_REQ" }, + { OSMO_PFCP_MSGT_PFD_MGMT_RESP, "PFD_MGMT_RESP" }, + { OSMO_PFCP_MSGT_ASSOC_SETUP_REQ, "ASSOC_SETUP_REQ" }, + { OSMO_PFCP_MSGT_ASSOC_SETUP_RESP, "ASSOC_SETUP_RESP" }, + { OSMO_PFCP_MSGT_ASSOC_UPDATE_REQ, "ASSOC_UPDATE_REQ" }, + { OSMO_PFCP_MSGT_ASSOC_UPDATE_RESP, "ASSOC_UPDATE_RESP" }, + { OSMO_PFCP_MSGT_ASSOC_RELEASE_REQ, "ASSOC_RELEASE_REQ" }, + { OSMO_PFCP_MSGT_ASSOC_RELEASE_RESP, "ASSOC_RELEASE_RESP" }, + { OSMO_PFCP_MSGT_VERSION_NOT_SUPP_RESP, "VERSION_NOT_SUPP_RESP" }, + { OSMO_PFCP_MSGT_NODE_REPORT_REQ, "NODE_REPORT_REQ" }, + { OSMO_PFCP_MSGT_NODE_REPORT_RESP, "NODE_REPORT_RESP" }, + { OSMO_PFCP_MSGT_SESSION_SET_DEL_REQ, "SESSION_SET_DEL_REQ" }, + { OSMO_PFCP_MSGT_SESSION_SET_DEL_RESP, "SESSION_SET_DEL_RESP" }, + { OSMO_PFCP_MSGT_SESSION_EST_REQ, "SESSION_EST_REQ" }, + { OSMO_PFCP_MSGT_SESSION_EST_RESP, "SESSION_EST_RESP" }, + { OSMO_PFCP_MSGT_SESSION_MOD_REQ, "SESSION_MOD_REQ" }, + { OSMO_PFCP_MSGT_SESSION_MOD_RESP, "SESSION_MOD_RESP" }, + { OSMO_PFCP_MSGT_SESSION_DEL_REQ, "SESSION_DEL_REQ" }, + { OSMO_PFCP_MSGT_SESSION_DEL_RESP, "SESSION_DEL_RESP" }, + { OSMO_PFCP_MSGT_SESSION_REP_REQ, "SESSION_REP_REQ" }, + { OSMO_PFCP_MSGT_SESSION_REP_RESP, "SESSION_REP_RESP" }, + { 0 } +}; + +const struct value_string osmo_pfcp_iei_strs[] = { + { OSMO_PFCP_IEI_CREATE_PDR, "Create PDR" }, + { OSMO_PFCP_IEI_PDI, "PDI" }, + { OSMO_PFCP_IEI_CREATE_FAR, "Create FAR" }, + { OSMO_PFCP_IEI_FORW_PARAMS, "Forwarding Parameters" }, + { OSMO_PFCP_IEI_DUPL_PARAMS, "Duplicating Parameters" }, + { OSMO_PFCP_IEI_CREATE_URR, "Create URR" }, + { OSMO_PFCP_IEI_CREATE_QER, "Create QER" }, + { OSMO_PFCP_IEI_CREATED_PDR, "Created PDR" }, + { OSMO_PFCP_IEI_UPD_PDR, "Update PDR" }, + { OSMO_PFCP_IEI_UPD_FAR, "Update FAR" }, + { OSMO_PFCP_IEI_UPD_FORW_PARAMS, "Update Forwarding Parameters" }, + { OSMO_PFCP_IEI_UPD_BAR_SESS_REP_RESP, "Update BAR (PFCP Session Report Response)" }, + { OSMO_PFCP_IEI_UPD_URR, "Update URR" }, + { OSMO_PFCP_IEI_UPD_QER, "Update QER" }, + { OSMO_PFCP_IEI_REMOVE_PDR, "Remove PDR" }, + { OSMO_PFCP_IEI_REMOVE_FAR, "Remove FAR" }, + { OSMO_PFCP_IEI_REMOVE_URR, "Remove URR" }, + { OSMO_PFCP_IEI_REMOVE_QER, "Remove QER" }, + { OSMO_PFCP_IEI_CAUSE, "Cause" }, + { OSMO_PFCP_IEI_SOURCE_IFACE, "Source Interface" }, + { OSMO_PFCP_IEI_F_TEID, "F-TEID" }, + { OSMO_PFCP_IEI_NETWORK_INST, "Network Instance" }, + { OSMO_PFCP_IEI_SDF_FILTER, "SDF Filter" }, + { OSMO_PFCP_IEI_APPLICATION_ID, "Application ID" }, + { OSMO_PFCP_IEI_GATE_STATUS, "Gate Status" }, + { OSMO_PFCP_IEI_MBR, "MBR" }, + { OSMO_PFCP_IEI_GBR, "GBR" }, + { OSMO_PFCP_IEI_QER_CORRELATION_ID, "QER Correlation ID" }, + { OSMO_PFCP_IEI_PRECEDENCE, "Precedence" }, + { OSMO_PFCP_IEI_TRANSPORT_LEVEL_MARKING, "Transport Level Marking" }, + { OSMO_PFCP_IEI_VOLUME_THRESH, "Volume Threshold" }, + { OSMO_PFCP_IEI_TIME_THRESH, "Time Threshold" }, + { OSMO_PFCP_IEI_MONITORING_TIME, "Monitoring Time" }, + { OSMO_PFCP_IEI_SUBSEQUENT_VOLUME_THRESH, "Subsequent Volume Threshold" }, + { OSMO_PFCP_IEI_SUBSEQUENT_TIME_THRESH, "Subsequent Time Threshold" }, + { OSMO_PFCP_IEI_INACT_DETECTION_TIME, "Inactivity Detection Time" }, + { OSMO_PFCP_IEI_REPORTING_TRIGGERS, "Reporting Triggers" }, + { OSMO_PFCP_IEI_REDIRECT_INFO, "Redirect Information" }, + { OSMO_PFCP_IEI_REP_TYPE, "Report Type" }, + { OSMO_PFCP_IEI_OFFENDING_IE, "Offending IE" }, + { OSMO_PFCP_IEI_FORW_POLICY, "Forwarding Policy" }, + { OSMO_PFCP_IEI_DESTINATION_IFACE, "Destination Interface" }, + { OSMO_PFCP_IEI_UP_FUNCTION_FEATURES, "UP Function Features" }, + { OSMO_PFCP_IEI_APPLY_ACTION, "Apply Action" }, + { OSMO_PFCP_IEI_DL_DATA_SERVICE_INFO, "Downlink Data Service Information" }, + { OSMO_PFCP_IEI_DL_DATA_NOTIFICATION_DELAY, "Downlink Data Notification Delay" }, + { OSMO_PFCP_IEI_DL_BUFF_DURATION, "DL Buffering Duration" }, + { OSMO_PFCP_IEI_DL_BUFF_SUGGESTED_PACKET_COUNT, "DL Buffering Suggested Packet Count" }, + { OSMO_PFCP_IEI_PFCPSMREQ_FLAGS, "PFCPSMReq-Flags" }, + { OSMO_PFCP_IEI_PFCPSRRSP_FLAGS, "PFCPSRRsp-Flags" }, + { OSMO_PFCP_IEI_LOAD_CTRL_INFO, "Load Control Information" }, + { OSMO_PFCP_IEI_SEQUENCE_NUMBER, "Sequence Number" }, + { OSMO_PFCP_IEI_METRIC, "Metric" }, + { OSMO_PFCP_IEI_OVERLOAD_CTRL_INFO, "Overload Control Information" }, + { OSMO_PFCP_IEI_TIMER, "Timer" }, + { OSMO_PFCP_IEI_PDR_ID, "PDR ID" }, + { OSMO_PFCP_IEI_F_SEID, "F-SEID" }, + { OSMO_PFCP_IEI_APPLICATION_IDS_PFDS, "Application ID's PFDs" }, + { OSMO_PFCP_IEI_PFD_CONTEXT, "PFD context" }, + { OSMO_PFCP_IEI_NODE_ID, "Node ID" }, + { OSMO_PFCP_IEI_PFD_CONTENTS, "PFD contents" }, + { OSMO_PFCP_IEI_MEAS_METHOD, "Measurement Method" }, + { OSMO_PFCP_IEI_USAGE_REP_TRIGGER, "Usage Report Trigger" }, + { OSMO_PFCP_IEI_MEAS_PERIOD, "Measurement Period" }, + { OSMO_PFCP_IEI_FQ_CSID, "FQ-CSID" }, + { OSMO_PFCP_IEI_VOLUME_MEAS, "Volume Measurement" }, + { OSMO_PFCP_IEI_DURATION_MEAS, "Duration Measurement" }, + { OSMO_PFCP_IEI_APPLICATION_DETECTION_INFO, "Application Detection Information" }, + { OSMO_PFCP_IEI_TIME_OF_FIRST_PACKET, "Time of First Packet" }, + { OSMO_PFCP_IEI_TIME_OF_LAST_PACKET, "Time of Last Packet" }, + { OSMO_PFCP_IEI_QUOTA_HOLDING_TIME, "Quota Holding Time" }, + { OSMO_PFCP_IEI_DROPPED_DL_TRAFFIC_THRESH, "Dropped DL Traffic Threshold" }, + { OSMO_PFCP_IEI_VOLUME_QUOTA, "Volume Quota" }, + { OSMO_PFCP_IEI_TIME_QUOTA, "Time Quota" }, + { OSMO_PFCP_IEI_START_TIME, "Start Time" }, + { OSMO_PFCP_IEI_END_TIME, "End Time" }, + { OSMO_PFCP_IEI_QUERY_URR, "Query URR" }, + { OSMO_PFCP_IEI_USAGE_REP_SESS_MOD_RESP, "Usage Report (Session Modification Response)" }, + { OSMO_PFCP_IEI_USAGE_REP_SESS_DEL_RESP, "Usage Report (Session Deletion Response)" }, + { OSMO_PFCP_IEI_USAGE_REP_SESS_REP_REQ, "Usage Report (Session Report Request)" }, + { OSMO_PFCP_IEI_URR_ID, "URR ID" }, + { OSMO_PFCP_IEI_LINKED_URR_ID, "Linked URR ID" }, + { OSMO_PFCP_IEI_DL_DATA_REP, "Downlink Data Report" }, + { OSMO_PFCP_IEI_OUTER_HEADER_CREATION, "Outer Header Creation" }, + { OSMO_PFCP_IEI_CREATE_BAR, "Create BAR" }, + { OSMO_PFCP_IEI_UPD_BAR_SESS_MOD_REQ, "Update BAR (Session Modification Request)" }, + { OSMO_PFCP_IEI_REMOVE_BAR, "Remove BAR" }, + { OSMO_PFCP_IEI_BAR_ID, "BAR ID" }, + { OSMO_PFCP_IEI_CP_FUNCTION_FEATURES, "CP Function Features" }, + { OSMO_PFCP_IEI_USAGE_INFO, "Usage Information" }, + { OSMO_PFCP_IEI_APPLICATION_INST_ID, "Application Instance ID" }, + { OSMO_PFCP_IEI_FLOW_INFO, "Flow Information" }, + { OSMO_PFCP_IEI_UE_IP_ADDRESS, "UE IP Address" }, + { OSMO_PFCP_IEI_PACKET_RATE, "Packet Rate" }, + { OSMO_PFCP_IEI_OUTER_HEADER_REMOVAL, "Outer Header Removal" }, + { OSMO_PFCP_IEI_RECOVERY_TIME_STAMP, "Recovery Time Stamp" }, + { OSMO_PFCP_IEI_DL_FLOW_LEVEL_MARKING, "DL Flow Level Marking" }, + { OSMO_PFCP_IEI_HEADER_ENRICHMENT, "Header Enrichment" }, + { OSMO_PFCP_IEI_ERROR_IND_REP, "Error Indication Report" }, + { OSMO_PFCP_IEI_MEAS_INFO, "Measurement Information" }, + { OSMO_PFCP_IEI_NODE_REP_TYPE, "Node Report Type" }, + { OSMO_PFCP_IEI_USER_PLANE_PATH_FAILURE_REP, "User Plane Path Failure Report" }, + { OSMO_PFCP_IEI_REMOTE_GTP_U_PEER, "Remote GTP-U Peer" }, + { OSMO_PFCP_IEI_UR_SEQN, "UR-SEQN" }, + { OSMO_PFCP_IEI_UPD_DUPL_PARAMS, "Update Duplicating Parameters" }, + { OSMO_PFCP_IEI_ACTIVATE_PREDEFINED_RULES, "Activate Predefined Rules" }, + { OSMO_PFCP_IEI_DEACTIVATE_PREDEFINED_RULES, "Deactivate Predefined Rules" }, + { OSMO_PFCP_IEI_FAR_ID, "FAR ID" }, + { OSMO_PFCP_IEI_QER_ID, "QER ID" }, + { OSMO_PFCP_IEI_OCI_FLAGS, "OCI Flags" }, + { OSMO_PFCP_IEI_PFCP_ASSOC_RELEASE_REQ, "PFCP Association Release Request" }, + { OSMO_PFCP_IEI_GRACEFUL_RELEASE_PERIOD, "Graceful Release Period" }, + { OSMO_PFCP_IEI_PDN_TYPE, "PDN Type" }, + { OSMO_PFCP_IEI_FAILED_RULE_ID, "Failed Rule ID" }, + { OSMO_PFCP_IEI_TIME_QUOTA_MECHANISM, "Time Quota Mechanism" }, + { OSMO_PFCP_IEI_RESERVED, "Reserved" }, + { OSMO_PFCP_IEI_USER_PLANE_INACT_TIMER, "User Plane Inactivity Timer" }, + { OSMO_PFCP_IEI_AGGREGATED_URRS, "Aggregated URRs" }, + { OSMO_PFCP_IEI_MULTIPLIER, "Multiplier" }, + { OSMO_PFCP_IEI_AGGREGATED_URR_ID, "Aggregated URR ID" }, + { OSMO_PFCP_IEI_SUBSEQUENT_VOLUME_QUOTA, "Subsequent Volume Quota" }, + { OSMO_PFCP_IEI_SUBSEQUENT_TIME_QUOTA, "Subsequent Time Quota" }, + { OSMO_PFCP_IEI_RQI, "RQI" }, + { OSMO_PFCP_IEI_QFI, "QFI" }, + { OSMO_PFCP_IEI_QUERY_URR_REFERENCE, "Query URR Reference" }, + { OSMO_PFCP_IEI_ADDITIONAL_USAGE_REPS_INFO, "Additional Usage Reports Information" }, + { OSMO_PFCP_IEI_CREATE_TRAFFIC_ENDPOINT, "Create Traffic Endpoint" }, + { OSMO_PFCP_IEI_CREATED_TRAFFIC_ENDPOINT, "Created Traffic Endpoint" }, + { OSMO_PFCP_IEI_UPD_TRAFFIC_ENDPOINT, "Update Traffic Endpoint" }, + { OSMO_PFCP_IEI_REMOVE_TRAFFIC_ENDPOINT, "Remove Traffic Endpoint" }, + { OSMO_PFCP_IEI_TRAFFIC_ENDPOINT_ID, "Traffic Endpoint ID" }, + { OSMO_PFCP_IEI_ETHERNET_PACKET_FILTER, "Ethernet Packet Filter" }, + { OSMO_PFCP_IEI_MAC_ADDRESS, "MAC address" }, + { OSMO_PFCP_IEI_C_TAG, "C-TAG" }, + { OSMO_PFCP_IEI_S_TAG, "S-TAG" }, + { OSMO_PFCP_IEI_ETHERTYPE, "Ethertype" }, + { OSMO_PFCP_IEI_PROXYING, "Proxying" }, + { OSMO_PFCP_IEI_ETHERNET_FILTER_ID, "Ethernet Filter ID" }, + { OSMO_PFCP_IEI_ETHERNET_FILTER_PROPERTIES, "Ethernet Filter Properties" }, + { OSMO_PFCP_IEI_SUGGESTED_BUFF_PACKETS_COUNT, "Suggested Buffering Packets Count" }, + { OSMO_PFCP_IEI_USER_ID, "User ID" }, + { OSMO_PFCP_IEI_ETHERNET_PDU_SESS_INFO, "Ethernet PDU Session Information" }, + { OSMO_PFCP_IEI_ETHERNET_TRAFFIC_INFO, "Ethernet Traffic Information" }, + { OSMO_PFCP_IEI_MAC_ADDRS_DETECTED, "MAC Addresses Detected" }, + { OSMO_PFCP_IEI_MAC_ADDRS_REMOVED, "MAC Addresses Removed" }, + { OSMO_PFCP_IEI_ETHERNET_INACT_TIMER, "Ethernet Inactivity Timer" }, + { OSMO_PFCP_IEI_ADDITIONAL_MONITORING_TIME, "Additional Monitoring Time" }, + { OSMO_PFCP_IEI_EVENT_QUOTA, "Event Quota" }, + { OSMO_PFCP_IEI_EVENT_THRESH, "Event Threshold" }, + { OSMO_PFCP_IEI_SUBSEQUENT_EVENT_QUOTA, "Subsequent Event Quota" }, + { OSMO_PFCP_IEI_SUBSEQUENT_EVENT_THRESH, "Subsequent Event Threshold" }, + { OSMO_PFCP_IEI_TRACE_INFO, "Trace Information" }, + { OSMO_PFCP_IEI_FRAMED_ROUTE, "Framed-Route" }, + { OSMO_PFCP_IEI_FRAMED_ROUTING, "Framed-Routing" }, + { OSMO_PFCP_IEI_FRAMED_IPV6_ROUTE, "Framed-IPv6-Route" }, + { OSMO_PFCP_IEI_TIME_STAMP, "Time Stamp" }, + { OSMO_PFCP_IEI_AVERAGING_WINDOW, "Averaging Window" }, + { OSMO_PFCP_IEI_PAGING_POLICY_INDICATOR, "Paging Policy Indicator" }, + { OSMO_PFCP_IEI_APN_DNN, "APN/DNN" }, + { OSMO_PFCP_IEI_3GPP_IFACE_TYPE, "3GPP Interface Type" }, + { OSMO_PFCP_IEI_PFCPSRREQ_FLAGS, "PFCPSRReq-Flags" }, + { OSMO_PFCP_IEI_PFCPAUREQ_FLAGS, "PFCPAUReq-Flags" }, + { OSMO_PFCP_IEI_ACTIVATION_TIME, "Activation Time" }, + { OSMO_PFCP_IEI_DEACTIVATION_TIME, "Deactivation Time" }, + { OSMO_PFCP_IEI_CREATE_MAR, "Create MAR" }, + { OSMO_PFCP_IEI_3GPP_ACCESS_FORW_ACTION_INFO, "3GPP Access Forwarding Action Information" }, + { OSMO_PFCP_IEI_NON_3GPP_ACCESS_FORW_ACTION_INFO, "Non-3GPP Access Forwarding Action Information" }, + { OSMO_PFCP_IEI_REMOVE_MAR, "Remove MAR" }, + { OSMO_PFCP_IEI_UPD_MAR, "Update MAR" }, + { OSMO_PFCP_IEI_MAR_ID, "MAR ID" }, + { OSMO_PFCP_IEI_STEERING_FUNCTIONALITY, "Steering Functionality" }, + { OSMO_PFCP_IEI_STEERING_MODE, "Steering Mode" }, + { OSMO_PFCP_IEI_WEIGHT, "Weight" }, + { OSMO_PFCP_IEI_PRIORITY, "Priority" }, + { OSMO_PFCP_IEI_UPD_3GPP_ACCESS_FORW_ACTION_INFO, "Update 3GPP Access Forwarding Action Information" }, + { OSMO_PFCP_IEI_UPD_NON_3GPP_ACCESS_FORW_ACTION_INFO, "Update Non 3GPP Access Forwarding Action Information" }, + { OSMO_PFCP_IEI_UE_IP_ADDRESS_POOL_IDENTITY, "UE IP address Pool Identity" }, + { OSMO_PFCP_IEI_ALTERNATIVE_SMF_IP_ADDRESS, "Alternative SMF IP Address" }, + { OSMO_PFCP_IEI_PACKET_REPLICATION_AND_DETECTION_CARRY_ON_INFO, "Packet Replication and Detection Carry-On Information" }, + { OSMO_PFCP_IEI_SMF_SET_ID, "SMF Set ID" }, + { OSMO_PFCP_IEI_QUOTA_VALIDITY_TIME, "Quota Validity Time" }, + { OSMO_PFCP_IEI_NUMBER_OF_REPS, "Number of Reports" }, + { OSMO_PFCP_IEI_PFCP_SESS_RETENTION_INFO_IN_ASSOC_SETUP_REQ, "PFCP Session Retention Information (within PFCP Association Setup Request)" }, + { OSMO_PFCP_IEI_PFCPASRSP_FLAGS, "PFCPASRsp-Flags" }, + { OSMO_PFCP_IEI_CP_ENTITY_IP_ADDRESS, "CP PFCP Entity IP Address" }, + { OSMO_PFCP_IEI_PFCPSEREQ_FLAGS, "PFCPSEReq-Flags" }, + { OSMO_PFCP_IEI_USER_PLANE_PATH_RECOVERY_REP, "User Plane Path Recovery Report" }, + { OSMO_PFCP_IEI_IP_MULTICAST_ADDR_INFO_IN_SESS_EST_REQ, "IP Multicast Addressing Info within PFCP Session Establishment Request" }, + { OSMO_PFCP_IEI_JOIN_IP_MULTICAST_INFO_IE_IN_USAGE_REP, "Join IP Multicast Information IE within Usage Report" }, + { OSMO_PFCP_IEI_LEAVE_IP_MULTICAST_INFO_IE_IN_USAGE_REP, "Leave IP Multicast Information IE within Usage Report" }, + { OSMO_PFCP_IEI_IP_MULTICAST_ADDRESS, "IP Multicast Address" }, + { OSMO_PFCP_IEI_SOURCE_IP_ADDRESS, "Source IP Address" }, + { OSMO_PFCP_IEI_PACKET_RATE_STATUS, "Packet Rate Status" }, + { OSMO_PFCP_IEI_CREATE_BRIDGE_INFO_FOR_TSC, "Create Bridge Info for TSC" }, + { OSMO_PFCP_IEI_CREATED_BRIDGE_INFO_FOR_TSC, "Created Bridge Info for TSC" }, + { OSMO_PFCP_IEI_DS_TT_PORT_NUMBER, "DS-TT Port Number" }, + { OSMO_PFCP_IEI_NW_TT_PORT_NUMBER, "NW-TT Port Number" }, + { OSMO_PFCP_IEI_TSN_BRIDGE_ID, "TSN Bridge ID" }, + { OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_MOD_REQ, "TSC Management Information IE within PFCP Session Modification Request" }, + { OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_MOD_RESP, "TSC Management Information IE within PFCP Session Modification Response" }, + { OSMO_PFCP_IEI_TSC_MGMT_INFO_IE_IN_SESS_REP_REQ, "TSC Management Information IE within PFCP Session Report Request" }, + { OSMO_PFCP_IEI_PORT_MGMT_INFO_CONTAINER, "Port Management Information Container" }, + { OSMO_PFCP_IEI_CLOCK_DRIFT_CTRL_INFO, "Clock Drift Control Information" }, + { OSMO_PFCP_IEI_REQUESTED_CLOCK_DRIFT_INFO, "Requested Clock Drift Information" }, + { OSMO_PFCP_IEI_CLOCK_DRIFT_REP, "Clock Drift Report" }, + { OSMO_PFCP_IEI_TSN_TIME_DOMAIN_NUMBER, "TSN Time Domain Number" }, + { OSMO_PFCP_IEI_TIME_OFFSET_THRESH, "Time Offset Threshold" }, + { OSMO_PFCP_IEI_CUMULATIVE_RATERATIO_THRESH, "Cumulative rateRatio Threshold" }, + { OSMO_PFCP_IEI_TIME_OFFSET_MEAS, "Time Offset Measurement" }, + { OSMO_PFCP_IEI_CUMULATIVE_RATERATIO_MEAS, "Cumulative rateRatio Measurement" }, + { OSMO_PFCP_IEI_REMOVE_SRR, "Remove SRR" }, + { OSMO_PFCP_IEI_CREATE_SRR, "Create SRR" }, + { OSMO_PFCP_IEI_UPD_SRR, "Update SRR" }, + { OSMO_PFCP_IEI_SESS_REP, "Session Report" }, + { OSMO_PFCP_IEI_SRR_ID, "SRR ID" }, + { OSMO_PFCP_IEI_ACCESS_AVAIL_CTRL_INFO, "Access Availability Control Information" }, + { OSMO_PFCP_IEI_REQUESTED_ACCESS_AVAIL_INFO, "Requested Access Availability Information" }, + { OSMO_PFCP_IEI_ACCESS_AVAIL_REP, "Access Availability Report" }, + { OSMO_PFCP_IEI_ACCESS_AVAIL_INFO, "Access Availability Information" }, + { OSMO_PFCP_IEI_PROVIDE_ATSSS_CTRL_INFO, "Provide ATSSS Control Information" }, + { OSMO_PFCP_IEI_ATSSS_CTRL_PARAMS, "ATSSS Control Parameters" }, + { OSMO_PFCP_IEI_MPTCP_CTRL_INFO, "MPTCP Control Information" }, + { OSMO_PFCP_IEI_ATSSS_LL_CTRL_INFO, "ATSSS-LL Control Information" }, + { OSMO_PFCP_IEI_PMF_CTRL_INFO, "PMF Control Information" }, + { OSMO_PFCP_IEI_MPTCP_PARAMS, "MPTCP Parameters" }, + { OSMO_PFCP_IEI_ATSSS_LL_PARAMS, "ATSSS-LL Parameters" }, + { OSMO_PFCP_IEI_PMF_PARAMS, "PMF Parameters" }, + { OSMO_PFCP_IEI_MPTCP_ADDRESS_INFO, "MPTCP Address Information" }, + { OSMO_PFCP_IEI_UE_LINK_SPECIFIC_IP_ADDRESS, "UE Link-Specific IP Address" }, + { OSMO_PFCP_IEI_PMF_ADDRESS_INFO, "PMF Address Information" }, + { OSMO_PFCP_IEI_ATSSS_LL_INFO, "ATSSS-LL Information" }, + { OSMO_PFCP_IEI_DATA_NETWORK_ACCESS_IDENTIFIER, "Data Network Access Identifier" }, + { OSMO_PFCP_IEI_UE_IP_ADDRESS_POOL_INFO, "UE IP address Pool Information" }, + { OSMO_PFCP_IEI_AVERAGE_PACKET_DELAY, "Average Packet Delay" }, + { OSMO_PFCP_IEI_MIN_PACKET_DELAY, "Minimum Packet Delay" }, + { OSMO_PFCP_IEI_MAX_PACKET_DELAY, "Maximum Packet Delay" }, + { OSMO_PFCP_IEI_QOS_REP_TRIGGER, "QoS Report Trigger" }, + { OSMO_PFCP_IEI_GTP_U_PATH_QOS_CTRL_INFO, "GTP-U Path QoS Control Information" }, + { OSMO_PFCP_IEI_GTP_U_PATH_QOS_REP_NODE_REP_REQ, "GTP-U Path QoS Report (PFCP Node Report Request)" }, + { OSMO_PFCP_IEI_QOS_INFO_IN_GTP_U_PATH_QOS_REP, "QoS Information in GTP-U Path QoS Report" }, + { OSMO_PFCP_IEI_GTP_U_PATH_IFACE_TYPE, "GTP-U Path Interface Type" }, + { OSMO_PFCP_IEI_QOS_MONITORING_PER_QOS_FLOW_CTRL_INFO, "QoS Monitoring per QoS flow Control Information" }, + { OSMO_PFCP_IEI_REQUESTED_QOS_MONITORING, "Requested QoS Monitoring" }, + { OSMO_PFCP_IEI_REPORTING_FREQUENCY, "Reporting Frequency" }, + { OSMO_PFCP_IEI_PACKET_DELAY_THRESHOLDS, "Packet Delay Thresholds" }, + { OSMO_PFCP_IEI_MIN_WAIT_TIME, "Minimum Wait Time" }, + { OSMO_PFCP_IEI_QOS_MONITORING_REP, "QoS Monitoring Report" }, + { OSMO_PFCP_IEI_QOS_MONITORING_MEAS, "QoS Monitoring Measurement" }, + { OSMO_PFCP_IEI_MT_EDT_CTRL_INFO, "MT-EDT Control Information" }, + { OSMO_PFCP_IEI_DL_DATA_PACKETS_SIZE, "DL Data Packets Size" }, + { OSMO_PFCP_IEI_QER_CTRL_INDICATIONS, "QER Control Indications" }, + { OSMO_PFCP_IEI_PACKET_RATE_STATUS_REP, "Packet Rate Status Report" }, + { OSMO_PFCP_IEI_NF_INST_ID, "NF Instance ID" }, + { OSMO_PFCP_IEI_ETHERNET_CONTEXT_INFO, "Ethernet Context Information" }, + { OSMO_PFCP_IEI_REDUNDANT_TRANSMISSION_PARAMS, "Redundant Transmission Parameters" }, + { OSMO_PFCP_IEI_UPDATED_PDR, "Updated PDR" }, + { OSMO_PFCP_IEI_S_NSSAI, "S-NSSAI" }, + { OSMO_PFCP_IEI_IP_VERSION, "IP version" }, + { OSMO_PFCP_IEI_PFCPASREQ_FLAGS, "PFCPASReq-Flags" }, + { OSMO_PFCP_IEI_DATA_STATUS, "Data Status" }, + { OSMO_PFCP_IEI_PROVIDE_RDS_CONF_INFO, "Provide RDS configuration information" }, + { OSMO_PFCP_IEI_RDS_CONF_INFO, "RDS configuration information" }, + { OSMO_PFCP_IEI_QUERY_PACKET_RATE_STATUS_IE_IN_SESS_MOD_REQ, "Query Packet Rate Status IE within PFCP Session Modification Request" }, + { OSMO_PFCP_IEI_PACKET_RATE_STATUS_REP_IE_IN_SESS_MOD_RESP, "Packet Rate Status Report IE within PFCP Session Modification Response" }, + { OSMO_PFCP_IEI_MPTCP_APPLICABLE_IND, "MPTCP Applicable Indication" }, + { OSMO_PFCP_IEI_BRIDGE_MGMT_INFO_CONTAINER, "Bridge Management Information Container" }, + { OSMO_PFCP_IEI_UE_IP_ADDRESS_USAGE_INFO, "UE IP Address Usage Information" }, + { OSMO_PFCP_IEI_NUMBER_OF_UE_IP_ADDRS, "Number of UE IP Addresses" }, + { OSMO_PFCP_IEI_VALIDITY_TIMER, "Validity Timer" }, + { OSMO_PFCP_IEI_REDUNDANT_TRANSMISSION_FORW_PARAMS, "Redundant Transmission Forwarding Parameters" }, + { OSMO_PFCP_IEI_TRANSPORT_DELAY_REPORTING, "Transport Delay Reporting" }, + { 0 } +}; + +const struct value_string osmo_pfcp_cause_strs[] = { + { OSMO_PFCP_CAUSE_RESERVED, "0" }, + { OSMO_PFCP_CAUSE_REQUEST_ACCEPTED, "Request accepted (success)" }, + { OSMO_PFCP_CAUSE_MORE_USAGE_REPORT_TO_SEND, "More Usage Report to send" }, + { OSMO_PFCP_CAUSE_REQUEST_REJECTED, "Request rejected (reason not specified)" }, + { OSMO_PFCP_CAUSE_SESSION_CTX_NOT_FOUND, "Session context not found" }, + { OSMO_PFCP_CAUSE_MANDATORY_IE_MISSING, "Mandatory IE missing" }, + { OSMO_PFCP_CAUSE_CONDITIONAL_IE_MISSING, "Conditional IE missing" }, + { OSMO_PFCP_CAUSE_INVALID_LENGTH, "Invalid length" }, + { OSMO_PFCP_CAUSE_MANDATORY_IE_INCORRECT, "Mandatory IE incorrect" }, + { OSMO_PFCP_CAUSE_INVALID_FORW_POLICY, "Invalid Forwarding Policy" }, + { OSMO_PFCP_CAUSE_INVALID_F_TEID_ALLOC_OPTION, "Invalid F-TEID allocation option" }, + { OSMO_PFCP_CAUSE_NO_ESTABLISHED_PFCP_ASSOC, "No established PFCP Association" }, + { OSMO_PFCP_CAUSE_RULE_CREATION_MOD_FAILURE, "Rule creation/modification Failure" }, + { OSMO_PFCP_CAUSE_PFCP_ENTITY_IN_CONGESTION, "PFCP entity in congestion" }, + { OSMO_PFCP_CAUSE_NO_RESOURCES_AVAILABLE, "No resources available" }, + { OSMO_PFCP_CAUSE_SERVICE_NOT_SUPPORTED, "Service not supported" }, + { OSMO_PFCP_CAUSE_SYSTEM_FAILURE, "System failure" }, + { OSMO_PFCP_CAUSE_REDIRECTION_REQUESTED, "Redirection Requested" }, + { OSMO_PFCP_CAUSE_ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED, "All dynamic addresses are occupied" }, + { 0 } +}; + +const struct value_string osmo_pfcp_up_feature_strs[] = { + { OSMO_PFCP_UP_FEAT_BUCP, "BUCP" }, + { OSMO_PFCP_UP_FEAT_DDND, "DDND" }, + { OSMO_PFCP_UP_FEAT_DLBD, "DLBD" }, + { OSMO_PFCP_UP_FEAT_TRST, "TRST" }, + { OSMO_PFCP_UP_FEAT_FTUP, "FTUP" }, + { OSMO_PFCP_UP_FEAT_PFDM, "PFDM" }, + { OSMO_PFCP_UP_FEAT_HEEU, "HEEU" }, + { OSMO_PFCP_UP_FEAT_TREU, "TREU" }, + { OSMO_PFCP_UP_FEAT_EMPU, "EMPU" }, + { OSMO_PFCP_UP_FEAT_PDIU, "PDIU" }, + { OSMO_PFCP_UP_FEAT_UDBC, "UDBC" }, + { OSMO_PFCP_UP_FEAT_QUOAC, "QUOAC" }, + { OSMO_PFCP_UP_FEAT_TRACE, "TRACE" }, + { OSMO_PFCP_UP_FEAT_FRRT, "FRRT" }, + { OSMO_PFCP_UP_FEAT_PFDE, "PFDE" }, + { OSMO_PFCP_UP_FEAT_EPFAR, "EPFAR" }, + { OSMO_PFCP_UP_FEAT_DPDRA, "DPDRA" }, + { OSMO_PFCP_UP_FEAT_ADPDP, "ADPDP" }, + { OSMO_PFCP_UP_FEAT_UEIP, "UEIP" }, + { OSMO_PFCP_UP_FEAT_SSET, "SSET" }, + { OSMO_PFCP_UP_FEAT_MNOP, "MNOP" }, + { OSMO_PFCP_UP_FEAT_MTE, "MTE" }, + { OSMO_PFCP_UP_FEAT_BUNDL, "BUNDL" }, + { OSMO_PFCP_UP_FEAT_GCOM, "GCOM" }, + { OSMO_PFCP_UP_FEAT_MPAS, "MPAS" }, + { OSMO_PFCP_UP_FEAT_RTTL, "RTTL" }, + { OSMO_PFCP_UP_FEAT_VTIME, "VTIME" }, + { OSMO_PFCP_UP_FEAT_NORP, "NORP" }, + { OSMO_PFCP_UP_FEAT_IP6PL, "IP6PL" }, + { OSMO_PFCP_UP_FEAT_TSCU, "TSCU" }, + { OSMO_PFCP_UP_FEAT_MPTCP, "MPTCP" }, + { OSMO_PFCP_UP_FEAT_ATSSSLL, "ATSSSLL" }, + { OSMO_PFCP_UP_FEAT_QFQM, "QFQM" }, + { OSMO_PFCP_UP_FEAT_GPQM, "GPQM" }, + { OSMO_PFCP_UP_FEAT_MTEDT, "MTEDT" }, + { OSMO_PFCP_UP_FEAT_CIOT, "CIOT" }, + { OSMO_PFCP_UP_FEAT_ETHAR, "ETHAR" }, + { OSMO_PFCP_UP_FEAT_DDDS, "DDDS" }, + { OSMO_PFCP_UP_FEAT_RDS, "RDS" }, + { OSMO_PFCP_UP_FEAT_RTTWP, "RTTWP" }, + {} +}; + + +const struct value_string osmo_pfcp_cp_feature_strs[] = { + { OSMO_PFCP_CP_FEAT_LOAD, "LOAD" }, + { OSMO_PFCP_CP_FEAT_OVRL, "OVRL" }, + { OSMO_PFCP_CP_FEAT_EPFAR, "EPFAR" }, + { OSMO_PFCP_CP_FEAT_SSET, "SSET" }, + { OSMO_PFCP_CP_FEAT_BUNDL, "BUNDL" }, + { OSMO_PFCP_CP_FEAT_MPAS, "MPAS" }, + { OSMO_PFCP_CP_FEAT_ARDR, "ARDR" }, + { OSMO_PFCP_CP_FEAT_UIAUR, "UIAUR" }, + {} +}; + +const struct value_string osmo_pfcp_apply_action_strs[] = { + { OSMO_PFCP_APPLY_ACTION_DROP, "DROP" }, + { OSMO_PFCP_APPLY_ACTION_FORW, "FORW" }, + { OSMO_PFCP_APPLY_ACTION_BUFF, "BUFF" }, + { OSMO_PFCP_APPLY_ACTION_NOCP, "NOCP" }, + { OSMO_PFCP_APPLY_ACTION_DUPL, "DUPL" }, + { OSMO_PFCP_APPLY_ACTION_IPMA, "IPMA" }, + { OSMO_PFCP_APPLY_ACTION_IPMD, "IPMD" }, + { OSMO_PFCP_APPLY_ACTION_DFRT, "DFRT" }, + { OSMO_PFCP_APPLY_ACTION_EDRT, "EDRT" }, + { OSMO_PFCP_APPLY_ACTION_BDPN, "BDPN" }, + { OSMO_PFCP_APPLY_ACTION_DDPN, "DDPN" }, + {} +}; + +const struct value_string osmo_pfcp_outer_header_creation_strs[] = { + { OSMO_PFCP_OUTER_HEADER_CREATION_GTP_U_UDP_IPV4, "GTP_U_UDP_IPV4" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_GTP_U_UDP_IPV6, "GTP_U_UDP_IPV6" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_UDP_IPV4, "UDP_IPV4" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_UDP_IPV6, "UDP_IPV6" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_IPV4, "IPV4" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_IPV6, "IPV6" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_C_TAG, "C_TAG" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_S_TAG, "S_TAG" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_N19_INDICATION, "N19_INDICATION" }, + { OSMO_PFCP_OUTER_HEADER_CREATION_N6_INDICATION, "N6_INDICATION" }, + {} +}; + +const struct value_string osmo_pfcp_outer_header_removal_desc_strs[] = { + { OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IPV4, "GTP_U_UDP_IPV4" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IPV6, "GTP_U_UDP_IPV6" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_UDP_IPV4, "UDP_IPV4" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_UDP_IPV6, "UDP_IPV6" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_IPV4, "IPV4" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_IPV6, "IPV6" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_GTP_U_UDP_IP, "GTP_U_UDP_IP" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_VLAN_S_TAG, "VLAN_S_TAG" }, + { OSMO_PFCP_OUTER_HEADER_REMOVAL_S_TAG_AND_C_TAG, "S_TAG_AND_C_TAG" }, + {} +}; + +const struct value_string osmo_pfcp_source_iface_strs[] = { + { OSMO_PFCP_SOURCE_IFACE_ACCESS, "Access" }, + { OSMO_PFCP_SOURCE_IFACE_CORE, "Core" }, + { OSMO_PFCP_SOURCE_IFACE_SGI_LAN_N6_LAN, "SGi-LAN/N6-LAN" }, + { OSMO_PFCP_SOURCE_IFACE_CP_FUNCTION, "CP-function" }, + { OSMO_PFCP_SOURCE_IFACE_5G_VN_INTERNAL, "5G-VN-Internal" }, + {} +}; + +const struct value_string osmo_pfcp_dest_iface_strs[] = { + { OSMO_PFCP_DEST_IFACE_ACCESS, "Access" }, + { OSMO_PFCP_DEST_IFACE_CORE, "Core" }, + { OSMO_PFCP_DEST_IFACE_SGI_LAN_N6_LAN, "SGi-LAN/N6-LAN" }, + { OSMO_PFCP_DEST_IFACE_CP_FUNCTION, "CP-function" }, + { OSMO_PFCP_DEST_IFACE_LI_FUNCTION, "LI-function" }, + { OSMO_PFCP_DEST_IFACE_5G_VN_INTERNAL, "5G-VN-Internal" }, + {} +}; + +const struct value_string osmo_pfcp_3gpp_iface_type_strs[] = { + { OSMO_PFCP_3GPP_IFACE_TYPE_S1_U, "S1_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S5_S8_U, "S5_S8_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S4_U, "S4_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S11_U, "S11_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S12_U, "S12_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_GN_GP_U, "GN_GP_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S2A_U, "S2A_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S2B_U, "S2B_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_ENODEB_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING, "ENODEB_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_ENODEB_GTP_U_INTERFACE_FOR_UL_DATA_FORWARDING, "ENODEB_GTP_U_INTERFACE_FOR_UL_DATA_FORWARDING" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_SGW_UPF_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING, "SGW_UPF_GTP_U_INTERFACE_FOR_DL_DATA_FORWARDING" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N3_3GPP_ACCESS, "N3_3GPP_ACCESS" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N3_TRUSTED_NON_3GPP_ACCESS, "N3_TRUSTED_NON_3GPP_ACCESS" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N3_UNTRUSTED_NON_3GPP_ACCESS, "N3_UNTRUSTED_NON_3GPP_ACCESS" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N3_FOR_DATA_FORWARDING, "N3_FOR_DATA_FORWARDING" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N9, "N9" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_SGI, "SGI" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N6, "N6" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_N19, "N19" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_S8_U, "S8_U" }, + { OSMO_PFCP_3GPP_IFACE_TYPE_GP_U, "GP_U" }, + {} +};