17 #ifndef __PFCPR15INL_H 18 #define __PFCPR15INL_H 31 in_addr_t *in_addr_t_ptr;
32 in6_addr *in6_addr_ptr;
33 uint32_t *uint32_t_ptr;
34 uint16_t *uint16_t_ptr;
38 inline CauseIE::CauseIE(pfcp_cause_ie_t &ie, LengthCalculator *parent)
39 : IEHeader(ie.header, PFCP_IE_CAUSE, parent),
46 return static_cast<CauseEnum>(ie_.cause_value);
51 ie_.cause_value =
static_cast<uint8_t
>(val);
63 return sizeof(pfcp_cause_ie_t) -
sizeof(pfcp_ie_header_t);
68 inline SourceInterfaceIE::SourceInterfaceIE(pfcp_src_intfc_ie_t &ie, LengthCalculator *parent)
69 : IEHeader(ie.header, PFCP_IE_SRC_INTFC, parent),
81 ie_.interface_value =
static_cast<uint8_t
>(val);
93 return sizeof(pfcp_src_intfc_ie_t) -
sizeof(pfcp_ie_header_t);
126 u.uint32_t_ptr = &ie_.ipv4_address;
127 return *u.in_addr_ptr;
133 u.uint8_t_ptr = ie_.ipv6_address;
134 return *u.in6_addr_ptr;
139 return ie_.choose_id;
154 return ip_address(val.
getInet().sin_addr);
156 return ip_address(val.
getInet6().sin6_addr);
162 if (val.
family() == AF_INET)
164 else if (val.
family() == AF_INET6)
174 ie_.ipv4_address = val.s_addr;
184 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
222 inline FTeidIE::FTeidIE(pfcp_fteid_ie_t &ie, LengthCalculator *parent)
223 : IEHeader(ie.header, PFCP_IE_FTEID, parent),
231 (ie_.ch ? 0 :
sizeof(ie_.teid)) +
233 (ie_.v6 ?
sizeof(in6_addr) : 0) +
234 (ie_.v4 ?
sizeof(in_addr) : 0);
239 inline NetworkInstanceIE::NetworkInstanceIE(pfcp_ntwk_inst_ie_t &ie, LengthCalculator *parent)
240 : IEHeader(ie.header, PFCP_IE_NTWK_INST, parent),
247 return ie_.ntwk_inst;
252 return ie_.header.len;
262 if (len >
sizeof(ie_.ntwk_inst))
263 len =
sizeof(ie_.ntwk_inst);
264 ie_.header.len = len;
265 std::memcpy(ie_.ntwk_inst, val, len);
277 return ie_.header.len;
282 inline SdfFilterIE::SdfFilterIE(pfcp_sdf_filter_ie_t &ie, LengthCalculator *parent)
283 : IEHeader(ie.header, PFCP_IE_SDF_FILTER, parent),
315 return ie_.flow_desc;
320 return ie_.len_of_flow_desc;
325 return ie_.tos_traffic_cls;
330 return ie_.secur_parm_idx;
335 return ie_.flow_label;
340 return ie_.sdf_filter_id;
345 ie_.bid = bid ? 1 : 0;
352 if (flowDescLen >
sizeof(ie_.flow_desc))
353 flowDescLen =
sizeof(ie_.flow_desc);
355 ie_.len_of_flow_desc = flowDescLen;
356 std::memcpy(ie_.flow_desc, flowDesc, flowDescLen);
364 std::memcpy(ie_.tos_traffic_cls, tosTrafficClass,
sizeof(ie_.tos_traffic_cls));
372 std::memcpy(ie_.secur_parm_idx, securityParameterIndex,
sizeof(ie_.secur_parm_idx));
380 std::memcpy(ie_.flow_label, flowLabel,
sizeof(ie_.flow_label));
387 ie_.sdf_filter_id = sdfFilterId;
401 sizeof(ie_.sdf_fltr_spare2) +
402 (ie_.fd ? (
sizeof(ie_.len_of_flow_desc) + ie_.len_of_flow_desc) : 0) +
403 (ie_.ttc ?
sizeof(ie_.tos_traffic_cls) : 0) +
404 (ie_.spi ?
sizeof(ie_.secur_parm_idx) : 0) +
406 sizeof(ie_.sdf_filter_id)
412 inline ApplicationIdIE::ApplicationIdIE(pfcp_application_id_ie_t &ie, LengthCalculator *parent)
413 : IEHeader(ie.header, PFCP_IE_APPLICATION_ID, parent),
420 return ie_.header.len;
425 return ie_.app_ident;
430 if (len >
sizeof(ie_.app_ident))
431 len =
sizeof(ie_.app_ident);
432 std::memcpy(ie_.app_ident, app_id, len);
433 ie_.header.len = len;
444 return ie_.header.len;
449 inline GateStatusIE::GateStatusIE(pfcp_gate_status_ie_t &ie, LengthCalculator *parent)
450 : IEHeader(ie.header, PFCP_IE_GATE_STATUS, parent),
478 ie_.dl_gate =
static_cast<uint8_t
>(dl);
499 ie_.ul_gate =
static_cast<uint8_t
>(ul);
514 return sizeof(pfcp_gate_status_ie_t) -
sizeof(pfcp_ie_header_t);
519 inline MbrIE::MbrIE(pfcp_mbr_ie_t &ie, LengthCalculator *parent)
520 : IEHeader(ie.header, PFCP_IE_MBR, parent),
537 ie_.ul_mbr = mbr & 0x000000ffffffffff;
544 ie_.dl_mbr = mbr & 0x000000ffffffffff;
561 inline GbrIE::GbrIE(pfcp_gbr_ie_t &ie, LengthCalculator *parent)
562 : IEHeader(ie.header, PFCP_IE_GBR, parent),
579 ie_.ul_gbr = mbr & 0x000000ffffffffff;
586 ie_.dl_gbr = mbr & 0x000000ffffffffff;
605 return ie_.qer_corr_id_val;
610 ie_.qer_corr_id_val = id;
620 inline QerCorrelationIdIE::QerCorrelationIdIE(pfcp_qer_corr_id_ie_t &ie, LengthCalculator *parent)
621 : IEHeader(ie.header, PFCP_IE_QER_CORR_ID, parent),
628 return sizeof(pfcp_qer_corr_id_ie_t) -
sizeof(pfcp_ie_header_t);
635 return ie_.prcdnc_val;
640 ie_.prcdnc_val = val;
650 inline PrecedenceIE::PrecedenceIE(pfcp_precedence_ie_t &ie, LengthCalculator *parent)
651 : IEHeader(ie.header, PFCP_IE_PRECEDENCE, parent),
658 return sizeof(pfcp_precedence_ie_t) -
sizeof(pfcp_ie_header_t);
665 return ie_.tostraffic_cls;
670 std::memcpy(ie_.tostraffic_cls, val,
sizeof(ie_.tostraffic_cls));
680 inline TransportLevelMarkingIE::TransportLevelMarkingIE(pfcp_trnspt_lvl_marking_ie_t &ie, LengthCalculator *parent)
681 : IEHeader(ie.header, PFCP_IE_TRNSPT_LVL_MARKING, parent),
688 return sizeof(pfcp_trnspt_lvl_marking_ie_t) -
sizeof(pfcp_ie_header_t);
710 return ie_.total_volume;
715 return ie_.uplink_volume;
720 return ie_.downlink_volume;
726 ie_.total_volume = val;
734 ie_.uplink_volume = val;
742 ie_.downlink_volume = val;
752 inline VolumeThresholdIE::VolumeThresholdIE(pfcp_vol_thresh_ie_t &ie, LengthCalculator *parent)
753 : IEHeader(ie.header, PFCP_IE_VOL_THRESH, parent),
762 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
763 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
764 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
770 inline TimeThresholdIE::TimeThresholdIE(pfcp_time_threshold_ie_t &ie, LengthCalculator *parent)
771 : IEHeader(ie.header, PFCP_IE_TIME_THRESHOLD, parent),
778 return ie_.time_threshold;
783 ie_.time_threshold = val;
795 return sizeof(pfcp_time_threshold_ie_t) -
sizeof(pfcp_ie_header_t);
800 inline MonitoringTimeIE::MonitoringTimeIE(pfcp_monitoring_time_ie_t &ie, LengthCalculator *parent)
801 : IEHeader(ie.header, PFCP_IE_MONITORING_TIME, parent),
815 ie_.monitoring_time = val;
834 return sizeof(pfcp_monitoring_time_ie_t) -
sizeof(pfcp_ie_header_t);
839 inline SubsequentVolumeThresholdIE::SubsequentVolumeThresholdIE(pfcp_sbsqnt_vol_thresh_ie_t &ie, LengthCalculator *parent)
840 : IEHeader(ie.header, PFCP_IE_SBSQNT_VOL_THRESH, parent),
862 return ie_.total_volume;
867 return ie_.uplink_volume;
872 return ie_.downlink_volume;
878 ie_.total_volume = val;
886 ie_.uplink_volume = val;
894 ie_.downlink_volume = val;
908 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
909 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
910 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
916 inline SubsequentTimeThresholdIE::SubsequentTimeThresholdIE(pfcp_sbsqnt_time_thresh_ie_t &ie, LengthCalculator *parent)
917 : IEHeader(ie.header, PFCP_IE_SBSQNT_TIME_THRESH, parent),
924 return ie_.sbsqnt_time_thresh;
929 ie_.sbsqnt_time_thresh = val;
941 return sizeof(pfcp_sbsqnt_time_thresh_ie_t) -
sizeof(pfcp_ie_header_t);
948 return ie_.inact_det_time;
953 ie_.inact_det_time = val;
963 inline InactivityDetectionTimeIE::InactivityDetectionTimeIE(pfcp_inact_det_time_ie_t &ie, LengthCalculator *parent)
964 : IEHeader(ie.header, PFCP_IE_INACT_DET_TIME, parent),
971 return sizeof(pfcp_inact_det_time_ie_t) -
sizeof(pfcp_ie_header_t);
976 inline ReportingTriggersIE::ReportingTriggersIE(pfcp_rptng_triggers_ie_t &ie, LengthCalculator *parent)
977 : IEHeader(ie.header, PFCP_IE_RPTNG_TRIGGERS, parent),
1054 ie_.
perio = val ? 1 : 0;
1061 ie_.
volth = val ? 1 : 0;
1068 ie_.
timth = val ? 1 : 0;
1075 ie_.
quhti = val ? 1 : 0;
1082 ie_.
start = val ? 1 : 0;
1089 ie_.
stopt = val ? 1 : 0;
1096 ie_.
droth = val ? 1 : 0;
1103 ie_.
liusa = val ? 1 : 0;
1110 ie_.
volqu = val ? 1 : 0;
1117 ie_.
timqu = val ? 1 : 0;
1124 ie_.
envcl = val ? 1 : 0;
1131 ie_.
macar = val ? 1 : 0;
1138 ie_.
eveth = val ? 1 : 0;
1145 ie_.
evequ = val ? 1 : 0;
1157 return sizeof(pfcp_rptng_triggers_ie_t) -
sizeof(pfcp_ie_header_t);
1162 inline RedirectInformationIE::RedirectInformationIE(pfcp_redir_info_ie_t &ie, LengthCalculator *parent)
1163 : IEHeader(ie.header, PFCP_IE_REDIR_INFO, parent),
1175 return ie_.redir_svr_addr_len;
1180 return ie_.redir_svr_addr;
1185 return ie_.other_redir_svr_addr_len;
1190 return ie_.other_redir_svr_addr;
1195 ie_.redir_addr_type =
static_cast<uint8_t
>(val);
1202 if (len >
sizeof(ie_.redir_svr_addr))
1203 len =
sizeof(ie_.redir_svr_addr);
1204 ie_.redir_svr_addr_len = len;
1205 std::memcpy(ie_.redir_svr_addr, val, len);
1212 if (len >
sizeof(ie_.other_redir_svr_addr))
1213 len =
sizeof(ie_.other_redir_svr_addr);
1214 ie_.other_redir_svr_addr_len = len;
1215 std::memcpy(ie_.other_redir_svr_addr, val, len);
1229 sizeof(ie_.redir_svr_addr_len) +
1230 ie_.redir_svr_addr_len +
1231 sizeof(ie_.other_redir_svr_addr_len) +
1232 ie_.other_redir_svr_addr_len
1238 inline ReportTypeIE::ReportTypeIE(pfcp_report_type_ie_t &ie, LengthCalculator *parent)
1239 : IEHeader(ie.header, PFCP_IE_REPORT_TYPE, parent),
1266 ie_.dldr = val ? 1 : 0; setLength();
1272 ie_.usar = val ? 1 : 0; setLength();
1278 ie_.erir = val ? 1 : 0; setLength();
1284 ie_.upir = val ? 1 : 0; setLength();
1295 return sizeof(pfcp_report_type_ie_t) -
sizeof(pfcp_ie_header_t);
1302 return ie_.type_of_the_offending_ie;
1307 ie_.type_of_the_offending_ie = val;
1317 inline OffendingIeIE::OffendingIeIE(pfcp_offending_ie_ie_t &ie, LengthCalculator *parent)
1318 : IEHeader(ie.header, PFCP_IE_OFFENDING_IE, parent),
1325 return sizeof(pfcp_offending_ie_ie_t) -
sizeof(pfcp_ie_header_t);
1332 return ie_.frwdng_plcy_ident_len;
1337 return ie_.frwdng_plcy_ident;
1342 if (len >
sizeof(ie_.frwdng_plcy_ident))
1343 len =
sizeof(ie_.frwdng_plcy_ident);
1344 ie_.frwdng_plcy_ident_len = len;
1345 std::memcpy(ie_.frwdng_plcy_ident, val, len);
1355 inline ForwardingPolicyIE::ForwardingPolicyIE(pfcp_frwdng_plcy_ie_t &ie, LengthCalculator *parent)
1356 : IEHeader(ie.header, PFCP_IE_FRWDNG_PLCY, parent),
1363 return sizeof(ie_.frwdng_plcy_ident_len) + ie_.frwdng_plcy_ident_len;
1368 inline DestinationInterfaceIE::DestinationInterfaceIE(pfcp_dst_intfc_ie_t &ie, LengthCalculator *parent)
1369 : IEHeader(ie.header, PFCP_IE_DST_INTFC, parent),
1381 ie_.interface_value =
static_cast<uint8_t
>(val);
1393 return sizeof(pfcp_dst_intfc_ie_t) -
sizeof(pfcp_ie_header_t);
1398 inline UpFunctionFeaturesIE::UpFunctionFeaturesIE(pfcp_up_func_feat_ie_t &ie, LengthCalculator *parent)
1399 : IEHeader(ie.header, PFCP_IE_UP_FUNC_FEAT, parent),
1406 return ie_.sup_feat.bucp;
1411 return ie_.sup_feat.ddnd;
1416 return ie_.sup_feat.dlbd;
1421 return ie_.sup_feat.trst;
1426 return ie_.sup_feat.ftup;
1431 return ie_.sup_feat.pfdm;
1436 return ie_.sup_feat.heeu;
1441 return ie_.sup_feat.treu;
1446 return ie_.sup_feat.empu;
1451 return ie_.sup_feat.pdiu;
1456 return ie_.sup_feat.udbc;
1461 return ie_.sup_feat.quoac;
1466 return ie_.sup_feat.trace;
1471 return ie_.sup_feat.frrt;
1476 return ie_.sup_feat.pfde;
1481 ie_.sup_feat.bucp = val ? 1 : 0;
1488 ie_.sup_feat.ddnd = val ? 1 : 0;
1495 ie_.sup_feat.dlbd = val ? 1 : 0;
1502 ie_.sup_feat.trst = val ? 1 : 0;
1509 ie_.sup_feat.ftup = val ? 1 : 0;
1516 ie_.sup_feat.pfdm = val ? 1 : 0;
1523 ie_.sup_feat.heeu = val ? 1 : 0;
1530 ie_.sup_feat.treu = val ? 1 : 0;
1537 ie_.sup_feat.empu = val ? 1 : 0;
1544 ie_.sup_feat.pdiu = val ? 1 : 0;
1551 ie_.sup_feat.udbc = val ? 1 : 0;
1558 ie_.sup_feat.quoac = val ? 1 : 0;
1565 ie_.sup_feat.trace = val ? 1 : 0;
1572 ie_.sup_feat.frrt = val ? 1 : 0;
1579 ie_.sup_feat.pfde = val ? 1 : 0;
1591 return sizeof(pfcp_up_func_feat_ie_t) -
sizeof(pfcp_ie_header_t);
1596 inline ApplyActionIE::ApplyActionIE(pfcp_apply_action_ie_t &ie, LengthCalculator *parent)
1597 : IEHeader(ie.header, PFCP_IE_APPLY_ACTION, parent),
1629 ie_.drop = val ? 1 : 0;
1636 ie_.forw = val ? 1 : 0;
1643 ie_.buff = val ? 1 : 0;
1650 ie_.nocp = val ? 1 : 0;
1657 ie_.dupl = val ? 1 : 0;
1669 return sizeof(pfcp_apply_action_ie_t) -
sizeof(pfcp_ie_header_t);
1674 inline DownlinkDataServiceInformationIE::DownlinkDataServiceInformationIE(pfcp_dnlnk_data_svc_info_ie_t &ie, LengthCalculator *parent)
1675 : IEHeader(ie.header, PFCP_IE_DNLNK_DATA_SVC_INFO, parent),
1692 return ie_.paging_plcy_indctn_val;
1702 ie_.paging_plcy_indctn_val = val; ie_.ppi = 1;
1709 ie_.qfi = val; ie_.qfii = 1;
1730 inline DownlinkDataNotificationDelayIE::DownlinkDataNotificationDelayIE(pfcp_dnlnk_data_notif_delay_ie_t &ie, LengthCalculator *parent)
1731 : IEHeader(ie.header, PFCP_IE_DNLNK_DATA_NOTIF_DELAY, parent),
1738 return ie_.delay_val_in_integer_multiples_of_50_millisecs_or_zero;
1743 ie_.delay_val_in_integer_multiples_of_50_millisecs_or_zero = val;
1755 return sizeof(pfcp_dnlnk_data_notif_delay_ie_t) -
sizeof(pfcp_ie_header_t);
1760 inline DlBufferingDurationIE::DlBufferingDurationIE(pfcp_dl_buf_dur_ie_t &ie, LengthCalculator *parent)
1761 : IEHeader(ie.header, PFCP_IE_DL_BUF_DUR, parent),
1768 return (ie_.timer_unit == 5 || ie_.timer_unit == 6) ?
1775 return ie_.timer_value;
1780 ie_.timer_unit =
static_cast<uint8_t
>(val);
1787 ie_.timer_value = val;
1799 return sizeof(pfcp_dl_buf_dur_ie_t) -
sizeof(pfcp_ie_header_t);
1804 inline DlBufferingSuggestedPacketCountIE::DlBufferingSuggestedPacketCountIE(pfcp_dl_buf_suggstd_pckt_cnt_ie_t &ie, LengthCalculator *parent)
1805 : IEHeader(ie.header, PFCP_IE_DL_BUF_SUGGSTD_PCKT_CNT, parent),
1812 return ie_.pckt_cnt_val;
1817 ie_.pckt_cnt_val = val;
1829 return ie_.pckt_cnt_val < 256 ? 1 : 2;
1834 inline PfcpSmReqFlagsIE::PfcpSmReqFlagsIE(pfcp_pfcpsmreq_flags_ie_t &ie, LengthCalculator *parent)
1835 : IEHeader(ie.header, PFCP_IE_PFCPSMREQ_FLAGS, parent),
1857 ie_.drobu = val ? 1 : 0;
1864 ie_.sndem = val ? 1 : 0;
1871 ie_.qaurr = val ? 1 : 0;
1883 return sizeof(pfcp_pfcpsmreq_flags_ie_t) -
sizeof(pfcp_ie_header_t);
1888 inline PfcpSrRspFlagsIE::PfcpSrRspFlagsIE(pfcp_pfcpsrrsp_flags_ie_t &ie, LengthCalculator *parent)
1889 : IEHeader(ie.header, PFCP_IE_PFCPSRRSP_FLAGS, parent),
1901 ie_.drobu = val ? 1 : 0;
1913 return sizeof(pfcp_pfcpsrrsp_flags_ie_t) -
sizeof(pfcp_ie_header_t);
1918 inline SequenceNumberIE::SequenceNumberIE(pfcp_sequence_number_ie_t &ie, LengthCalculator *parent)
1919 : IEHeader(ie.header, PFCP_IE_SEQUENCE_NUMBER, parent),
1926 return ie_.sequence_number;
1931 ie_.sequence_number = val;
1943 return sizeof(pfcp_sequence_number_ie_t) -
sizeof(pfcp_ie_header_t);
1948 inline MetricIE::MetricIE(pfcp_metric_ie_t &ie, LengthCalculator *parent)
1949 : IEHeader(ie.header, PFCP_IE_METRIC, parent),
1956 return ie_.metric > 100 ? 0 : ie_.metric;
1961 ie_.metric = val > 100 ? 0 : val;
1973 return sizeof(pfcp_metric_ie_t) -
sizeof(pfcp_ie_header_t);
1980 return (ie_.timer_unit == 5 || ie_.timer_unit == 6) ?
1987 return ie_.timer_value;
1992 ie_.timer_unit =
static_cast<uint8_t
>(val);
1999 ie_.timer_value = val;
2009 inline TimerIE::TimerIE(pfcp_timer_ie_t &ie, LengthCalculator *parent)
2010 : IEHeader(ie.header, PFCP_IE_DL_BUF_DUR, parent),
2017 return sizeof(pfcp_timer_ie_t) -
sizeof(pfcp_ie_header_t);
2039 inline PdrIdIE::PdrIdIE(pfcp_pdr_id_ie_t &ie, LengthCalculator *parent)
2040 : IEHeader(ie.header, PFCP_IE_PDR_ID, parent),
2047 return sizeof(pfcp_pdr_id_ie_t) -
sizeof(pfcp_ie_header_t);
2070 u.uint32_t_ptr = &ie_.ipv4_address;
2071 return *u.in_addr_ptr;
2077 u.uint8_t_ptr = ie_.ipv6_address;
2078 return *u.in6_addr_ptr;
2091 return ip_address(val.
getInet().sin_addr);
2093 return ip_address(val.
getInet6().sin6_addr);
2099 if (val.
family() == AF_INET)
2101 else if (val.
family() == AF_INET6)
2109 ie_.ipv4_address = val.s_addr;
2117 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
2127 inline FSeidIE::FSeidIE(pfcp_fseid_ie_t &ie, LengthCalculator *parent)
2128 : IEHeader(ie.header, PFCP_IE_FSEID, parent),
2137 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
2138 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0)
2152 u.uint32_t_ptr = &ie_.node_id_value_ipv4_address;
2153 return *u.in_addr_ptr;
2159 u.uint8_t_ptr = ie_.node_id_value_ipv6_address;
2160 return *u.in6_addr_ptr;
2165 return ie_.node_id_value_fqdn;
2170 return ie_.header.len - 1;
2176 return node_id_value(val.
getInet().sin_addr);
2178 return node_id_value(val.
getInet6().sin6_addr);
2184 if (val.
family() == AF_INET)
2186 else if (val.
family() == AF_INET6)
2194 std::memcpy(&ie_.node_id_value_ipv4_address, &val,
sizeof(val));
2202 std::memcpy(ie_.node_id_value_ipv6_address, val.s6_addr,
sizeof(val));
2215 if(len !=
sizeof(ie_.node_id_value_ipv4_address))
2216 throw NodeIdException_NodeIdTypeLengthMismatch();
2217 std::memcpy(&ie_.node_id_value_ipv4_address, val,
sizeof(ie_.node_id_value_ipv4_address));
2222 if(len !=
sizeof(ie_.node_id_value_ipv6_address))
2223 throw NodeIdException_NodeIdTypeLengthMismatch();
2224 std::memcpy(ie_.node_id_value_ipv6_address, val,
sizeof(ie_.node_id_value_ipv6_address));
2229 if (len >
sizeof(ie_.node_id_value_fqdn))
2230 len =
sizeof(ie_.node_id_value_fqdn);
2231 std::memcpy(ie_.node_id_value_fqdn, val, len);
2232 ie_.header.len = 1 + len;
2237 throw NodeIdException_UnrecognizedNodeIdType((Int) type);
2250 inline NodeIdIE::NodeIdIE(pfcp_node_id_ie_t &ie, LengthCalculator *parent)
2251 : IEHeader(ie.header, PFCP_IE_NODE_ID, parent),
2261 ie_.node_id_type == 0 ?
sizeof(in_addr) :
2262 ie_.node_id_type == 1 ?
sizeof(in6_addr) :
2269 #define REPLACE_DATA(flag,srcofs,len_of,dest,destofs,destsize,value,value_length) \ 2271 if (destofs + value_length > destsize) \ 2273 srcofs += flag ? len_of : 0; \ 2275 len_of = value_length; \ 2276 std::memcpy(&dest[destofs], value, value_length); \ 2277 destofs += value_length; \ 2280 #define ADD_DATA(flag,src,srcofs,len_of,dest,destofs,destsize,value,value_length) \ 2283 if (destofs + value_length + sizeof(uint16_t) > destsize) \ 2286 std::memcpy(&dest[destofs], &src[srcofs], len_of); \ 2288 destofs += len_of; \ 2293 len_of += value_length + sizeof(uint16_t); \ 2294 u.uint8_t_ptr = &dest[destofs]; \ 2295 *u.uint16_t_ptr = htons(value_length); \ 2296 destofs += sizeof(uint16_t); \ 2297 std::memcpy(&dest[destofs], value, value_length); \ 2298 destofs += value_length; \ 2343 return ie_.len_of_flow_desc;
2348 return ie_.flow_desc;
2353 return ie_.length_of_url;
2363 return ie_.len_of_domain_nm;
2368 return ie_.domain_name;
2373 return ie_.len_of_cstm_pfd_cntnt;
2378 return ie_.cstm_pfd_cntnt;
2383 return ie_.len_of_domain_nm_prot;
2388 return ie_.domain_name_prot;
2393 return ie_.len_of_add_flow_desc;
2398 return ie_.add_flow_desc;
2403 return ie_.len_of_add_url;
2413 return ie_.len_of_add_domain_nm_prot;
2418 return ie_.add_domain_nm_prot;
2423 uint16_t tmpofs = 0;
2424 uint16_t dataofs = 0;
2425 uint8_t tmp[
sizeof(ie_.data)];
2427 REPLACE_DATA(ie_.fd, dataofs, ie_.len_of_flow_desc, tmp, tmpofs,
sizeof(ie_.data), val, len);
2429 if (!move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2430 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2431 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2432 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2433 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2434 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2435 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2438 std::memcpy(ie_.data, tmp, tmpofs);
2447 uint16_t tmpofs = 0;
2448 uint16_t dataofs = 0;
2449 uint8_t tmp[
sizeof(ie_.data)];
2451 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)))
2454 REPLACE_DATA(ie_.url, dataofs, ie_.length_of_url, tmp, tmpofs,
sizeof(ie_.data), val, len);
2456 if (!move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2457 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2458 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2459 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2460 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2461 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2464 std::memcpy(ie_.data, tmp, tmpofs);
2473 uint16_t tmpofs = 0;
2474 uint16_t dataofs = 0;
2475 uint8_t tmp[
sizeof(ie_.data)];
2477 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2478 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)))
2481 REPLACE_DATA(ie_.dn, dataofs, ie_.len_of_domain_nm, tmp, tmpofs,
sizeof(ie_.data), val, len);
2483 if (!move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2484 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2485 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2486 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2487 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2490 std::memcpy(ie_.data, tmp, tmpofs);
2499 uint16_t tmpofs = 0;
2500 uint16_t dataofs = 0;
2501 uint8_t tmp[
sizeof(ie_.data)];
2503 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2504 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2505 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)))
2508 REPLACE_DATA(ie_.cp, dataofs, ie_.len_of_cstm_pfd_cntnt, tmp, tmpofs,
sizeof(ie_.data), val, len);
2510 if (!move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2511 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2512 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2513 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2516 std::memcpy(ie_.data, tmp, tmpofs);
2525 uint16_t tmpofs = 0;
2526 uint16_t dataofs = 0;
2527 uint8_t tmp[
sizeof(ie_.data)];
2529 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2530 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2531 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2532 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)))
2535 REPLACE_DATA(ie_.dnp, dataofs, ie_.len_of_domain_nm_prot, tmp, tmpofs,
sizeof(ie_.data), val, len);
2537 if (!move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2538 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2539 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2542 std::memcpy(ie_.data, tmp, tmpofs);
2551 uint16_t tmpofs = 0;
2552 uint16_t dataofs = 0;
2553 uint8_t tmp[
sizeof(ie_.data)];
2555 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2556 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2557 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2558 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2559 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)))
2562 ADD_DATA(ie_.afd, ie_.data, dataofs, ie_.len_of_add_flow_desc, tmp, tmpofs,
sizeof(ie_.data), val, len);
2564 if (!move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2565 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2568 std::memcpy(ie_.data, tmp, tmpofs);
2577 uint16_t tmpofs = 0;
2578 uint16_t dataofs = 0;
2579 uint8_t tmp[
sizeof(ie_.data)];
2581 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2582 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2583 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2584 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2585 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2586 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)))
2589 ADD_DATA(ie_.aurl, ie_.data, dataofs, ie_.len_of_add_url, tmp, tmpofs,
sizeof(ie_.data), val, len);
2591 if (!move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2594 std::memcpy(ie_.data, tmp, tmpofs);
2603 uint16_t tmpofs = 0;
2604 uint16_t dataofs = 0;
2605 uint8_t tmp[
sizeof(ie_.data)];
2607 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2608 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2609 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2610 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2611 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2612 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2613 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)))
2616 ADD_DATA(ie_.adnp, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot, tmp, tmpofs,
sizeof(ie_.data), val, len);
2618 std::memcpy(ie_.data, tmp, tmpofs);
2630 inline PfdContentsIE::PfdContentsIE(pfcp_pfd_contents_ie_t &ie, LengthCalculator *parent)
2631 : IEHeader(ie.header, PFCP_IE_PFD_CONTENTS, parent),
2640 (ie_.fd ? ie_.len_of_flow_desc : 0) +
2641 (ie_.url ? ie_.length_of_url : 0) +
2642 (ie_.dn ? ie_.len_of_domain_nm : 0) +
2643 (ie_.cp ? ie_.len_of_cstm_pfd_cntnt : 0) +
2644 (ie_.dnp ? ie_.len_of_domain_nm_prot : 0) +
2645 (ie_.afd ? ie_.len_of_add_flow_desc : 0) +
2646 (ie_.aurl ? ie_.len_of_add_url : 0) +
2647 (ie_.adnp ? ie_.len_of_add_domain_nm_prot : 0)
2651 inline Bool PfdContentsIE::move(Bool flag, uint8_t *dest, uint16_t &destofs, uint8_t *src, uint16_t &srcofs, uint16_t len, uint16_t maxlen)
2655 if (destofs + len < maxlen)
2657 std::memcpy(&dest[destofs], &src[srcofs], len);
2664 inline Void PfdContentsIE::updatePointer(Bool flag, uint8_t* &ptr, uint8_t *data, uint16_t &ofs, uint16_t len)
2677 inline Void PfdContentsIE::updatePointers()
2679 uint16_t dataofs = 0;
2680 updatePointer(ie_.fd, ie_.flow_desc, ie_.data, dataofs, ie_.len_of_flow_desc);
2681 updatePointer(ie_.url, ie_.url2, ie_.data, dataofs, ie_.length_of_url);
2682 updatePointer(ie_.dn, ie_.domain_name, ie_.data, dataofs, ie_.len_of_domain_nm);
2683 updatePointer(ie_.cp, ie_.cstm_pfd_cntnt, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt);
2684 updatePointer(ie_.dnp, ie_.domain_name_prot, ie_.data, dataofs, ie_.len_of_domain_nm_prot);
2685 updatePointer(ie_.afd, ie_.add_flow_desc, ie_.data, dataofs, ie_.len_of_add_flow_desc);
2686 updatePointer(ie_.aurl, ie_.add_url, ie_.data, dataofs, ie_.len_of_add_url);
2687 updatePointer(ie_.adnp, ie_.add_domain_nm_prot, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot);
2712 ie_.durat = val ? 1 : 0; setLength();
2718 ie_.volum = val ? 1 : 0; setLength();
2724 ie_.event = val ? 1 : 0; setLength();
2733 inline MeasurementMethodIE::MeasurementMethodIE(pfcp_meas_mthd_ie_t &ie, LengthCalculator *parent)
2734 : IEHeader(ie.header, PFCP_IE_MEAS_MTHD, parent),
2741 return sizeof(pfcp_meas_mthd_ie_t) -
sizeof(pfcp_ie_header_t);
2833 ie_.immer = val; setLength();
2839 ie_.droth = val; setLength();
2845 ie_.stopt = val; setLength();
2851 ie_.start = val; setLength();
2857 ie_.quhti = val; setLength();
2863 ie_.timth = val; setLength();
2869 ie_.volth = val; setLength();
2875 ie_.perio = val; setLength();
2881 ie_.eveth = val; setLength();
2887 ie_.macar = val; setLength();
2893 ie_.envcl = val; setLength();
2899 ie_.monit = val; setLength();
2905 ie_.termr = val; setLength();
2911 ie_.liusa = val; setLength();
2917 ie_.timqu = val; setLength();
2923 ie_.volqu = val; setLength();
2929 ie_.evequ = val; setLength();
2938 inline UsageReportTriggerIE::UsageReportTriggerIE(pfcp_usage_rpt_trig_ie_t &ie, LengthCalculator *parent)
2939 : IEHeader(ie.header, PFCP_IE_USAGE_RPT_TRIG, parent),
2946 return sizeof(pfcp_usage_rpt_trig_ie_t) -
sizeof(pfcp_ie_header_t);
2953 return ie_.meas_period;
2958 ie_.meas_period = val;
2968 inline MeasurementPeriodIE::MeasurementPeriodIE(pfcp_meas_period_ie_t &ie, LengthCalculator *parent)
2969 : IEHeader(ie.header, PFCP_IE_MEAS_PERIOD, parent),
2976 return sizeof(pfcp_meas_period_ie_t) -
sizeof(pfcp_ie_header_t);
2988 return ie_.number_of_csids;
2994 u.uint8_t_ptr = ie_.node_address;
2995 return *u.in_addr_ptr;
3001 u.uint8_t_ptr = ie_.node_address;
3002 return *u.in6_addr_ptr;
3008 u.uint8_t_ptr = ie_.node_address;
3009 return ntohl(*u.uint32_t_ptr);
3014 return ie_.pdn_conn_set_ident[idx];
3020 return node_address(val.
getInet().sin_addr);
3022 return node_address(val.
getInet6().sin6_addr);
3028 if (val.
family() == AF_INET)
3030 else if (val.
family() == AF_INET6)
3039 u.uint8_t_ptr = ie_.node_address;
3040 u.in_addr_ptr->s_addr = val.s_addr;
3048 std::memcpy(ie_.node_address, val.s6_addr,
sizeof(ie_.node_address));
3057 u.uint8_t_ptr = ie_.node_address;
3058 *u.uint32_t_ptr = htonl(val);
3066 return ie_.pdn_conn_set_ident[idx];
3071 return (ie_.number_of_csids < PDN_CONN_SET_IDENT_LEN) ?
3072 ie_.number_of_csids++ : -1;
3080 inline FqCsidIE::FqCsidIE(pfcp_fqcsid_ie_t &ie, LengthCalculator *parent)
3081 : IEHeader(ie.header, PFCP_IE_FQCSID, parent),
3090 (ie_.fqcsid_node_id_type == 1 ? IPV6_ADDRESS_LEN :
sizeof(uint32_t)) +
3091 (ie_.number_of_csids *
sizeof(uint16_t))
3114 return ie_.total_volume;
3119 return ie_.uplink_volume;
3124 return ie_.downlink_volume;
3130 ie_.total_volume = val;
3138 ie_.uplink_volume = val;
3146 ie_.downlink_volume = val;
3156 inline VolumeMeasurementIE::VolumeMeasurementIE(pfcp_vol_meas_ie_t &ie, LengthCalculator *parent)
3157 : IEHeader(ie.header, PFCP_IE_VOL_MEAS, parent),
3166 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
3167 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
3168 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
3176 return ie_.duration_value;
3181 ie_.duration_value = val;
3191 inline DurationMeasurementIE::DurationMeasurementIE(pfcp_dur_meas_ie_t &ie, LengthCalculator *parent)
3192 : IEHeader(ie.header, PFCP_IE_DUR_MEAS, parent),
3199 return sizeof(pfcp_dur_meas_ie_t) -
sizeof(pfcp_ie_header_t);
3220 ie_.time_of_frst_pckt = val;
3230 inline TimeOfFirstPacketIE::TimeOfFirstPacketIE(pfcp_time_of_frst_pckt_ie_t &ie, LengthCalculator *parent)
3231 : IEHeader(ie.header, PFCP_IE_TIME_OF_FRST_PCKT, parent),
3238 return sizeof(pfcp_time_of_frst_pckt_ie_t) -
sizeof(pfcp_ie_header_t);
3269 inline TimeOfLastPacketIE::TimeOfLastPacketIE(pfcp_time_of_lst_pckt_ie_t &ie, LengthCalculator *parent)
3270 : IEHeader(ie.header, PFCP_IE_TIME_OF_LST_PCKT, parent),
3277 return sizeof(pfcp_time_of_lst_pckt_ie_t) -
sizeof(pfcp_ie_header_t);
3284 return ie_.quota_hldng_time_val;
3289 ie_.quota_hldng_time_val = val;
3299 inline QuotaHoldingTimeIE::QuotaHoldingTimeIE(pfcp_quota_hldng_time_ie_t &ie, LengthCalculator *parent)
3300 : IEHeader(ie.header, PFCP_IE_QUOTA_HLDNG_TIME, parent),
3307 return sizeof(pfcp_quota_hldng_time_ie_t) -
sizeof(pfcp_ie_header_t);
3325 ie_.dnlnk_pckts = val;
3333 ie_.nbr_of_bytes_of_dnlnk_data = val;
3343 inline DroppedDlTrafficThresholdIE::DroppedDlTrafficThresholdIE(pfcp_drpd_dl_traffic_thresh_ie_t &ie, LengthCalculator *parent)
3344 : IEHeader(ie.header, PFCP_IE_DRPD_DL_TRAFFIC_THRESH, parent),
3353 (ie_.dlpa ?
sizeof(ie_.dnlnk_pckts) : 0) +
3354 (ie_.dlby ?
sizeof(ie_.nbr_of_bytes_of_dnlnk_data) : 0)
3378 ie_.total_volume = val;
3386 ie_.uplink_volume = val;
3394 ie_.downlink_volume = val;
3404 inline VolumeQuotaIE::VolumeQuotaIE(pfcp_volume_quota_ie_t &ie, LengthCalculator *parent)
3405 : IEHeader(ie.header, PFCP_IE_VOLUME_QUOTA, parent),
3414 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
3415 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
3416 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
3424 return ie_.time_quota_val;
3429 ie_.time_quota_val = val;
3439 inline TimeQuotaIE::TimeQuotaIE(pfcp_time_quota_ie_t &ie, LengthCalculator *parent)
3440 : IEHeader(ie.header, PFCP_IE_TIME_QUOTA, parent),
3447 return sizeof(pfcp_time_quota_ie_t) -
sizeof(pfcp_ie_header_t);
3468 ie_.start_time = val;
3478 inline StartTimeIE::StartTimeIE(pfcp_start_time_ie_t &ie, LengthCalculator *parent)
3479 : IEHeader(ie.header, PFCP_IE_START_TIME, parent),
3486 return sizeof(pfcp_start_time_ie_t) -
sizeof(pfcp_ie_header_t);
3517 inline EndTimeIE::EndTimeIE(pfcp_end_time_ie_t &ie, LengthCalculator *parent)
3518 : IEHeader(ie.header, PFCP_IE_END_TIME, parent),
3525 return sizeof(pfcp_end_time_ie_t) -
sizeof(pfcp_ie_header_t);
3532 return ie_.urr_id_value;
3537 ie_.urr_id_value = val;
3547 inline UrrIdIE::UrrIdIE(pfcp_urr_id_ie_t &ie, LengthCalculator *parent)
3548 : IEHeader(ie.header, PFCP_IE_URR_ID, parent),
3555 return sizeof(pfcp_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
3562 return ie_.lnkd_urr_id_val;
3567 ie_.lnkd_urr_id_val = val;
3577 inline LinkedUrrIdIE::LinkedUrrIdIE(pfcp_linked_urr_id_ie_t &ie, LengthCalculator *parent)
3578 : IEHeader(ie.header, PFCP_IE_LINKED_URR_ID, parent),
3585 return sizeof(pfcp_linked_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
3592 return ie_.outer_hdr_creation_desc.gtpu_udp_ipv4;
3597 return ie_.outer_hdr_creation_desc.gtpu_udp_ipv6;
3602 return ie_.outer_hdr_creation_desc.udp_ipv4;
3607 return ie_.outer_hdr_creation_desc.udp_ipv6;
3612 return ie_.outer_hdr_creation_desc.ipv4;
3617 return ie_.outer_hdr_creation_desc.ipv6;
3622 return ie_.outer_hdr_creation_desc.ctag;
3627 return ie_.outer_hdr_creation_desc.stag;
3638 u.uint32_t_ptr = &ie_.ipv4_address;
3639 return *u.in_addr_ptr;
3645 u.uint8_t_ptr = ie_.ipv6_address;
3646 return *u.in6_addr_ptr;
3651 return ie_.port_number;
3667 ip_address_teid(addr.
getInet().sin_addr, teid);
3669 ip_address_teid(addr.
getInet6().sin6_addr, teid);
3675 if (addr.
family() == AF_INET)
3677 else if (addr.
family() == AF_INET6)
3685 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3686 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3687 ie_.outer_hdr_creation_desc.ipv4 = 0;
3688 ie_.outer_hdr_creation_desc.ipv6 = 0;
3689 ie_.outer_hdr_creation_desc.ctag = 0;
3690 ie_.outer_hdr_creation_desc.stag = 0;
3692 ie_.ipv4_address = addr.s_addr;
3700 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3701 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3702 ie_.outer_hdr_creation_desc.ipv4 = 0;
3703 ie_.outer_hdr_creation_desc.ipv6 = 0;
3704 ie_.outer_hdr_creation_desc.ctag = 0;
3705 ie_.outer_hdr_creation_desc.stag = 0;
3707 std::memcpy(ie_.ipv6_address, addr.s6_addr,
sizeof(ie_.ipv6_address));
3715 ip_address_port(addr.
getInet().sin_addr, port, protocol);
3717 ip_address_port(addr.
getInet6().sin6_addr, port, protocol);
3723 if (addr.
family() == AF_INET)
3724 ip_address_port(addr.
ipv4Address(), port, protocol);
3725 else if (addr.
family() == AF_INET6)
3726 ip_address_port(addr.
ipv6Address(), port, protocol);
3734 ie_.outer_hdr_creation_desc.
udp_ipv4 = 0;
3735 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3736 ie_.outer_hdr_creation_desc.ipv4 = 1;
3737 ie_.outer_hdr_creation_desc.ipv6 = 0;
3741 ie_.outer_hdr_creation_desc.udp_ipv4 = 1;
3742 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3743 ie_.outer_hdr_creation_desc.ipv4 = 0;
3744 ie_.outer_hdr_creation_desc.ipv6 = 0;
3750 ie_.port_number = port;
3751 ie_.ipv4_address = addr.s_addr;
3760 ie_.outer_hdr_creation_desc.
udp_ipv4 = 0;
3761 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3762 ie_.outer_hdr_creation_desc.ipv4 = 0;
3763 ie_.outer_hdr_creation_desc.ipv6 = 1;
3767 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3768 ie_.outer_hdr_creation_desc.udp_ipv6 = 1;
3769 ie_.outer_hdr_creation_desc.ipv4 = 0;
3770 ie_.outer_hdr_creation_desc.ipv6 = 0;
3776 ie_.port_number = port;
3777 std::memcpy(ie_.ipv6_address, addr.s6_addr,
sizeof(ie_.ipv6_address));
3784 ie_.outer_hdr_creation_desc.ctag = 1;
3785 std::memcpy(ie_.ctag, val,
sizeof(ie_.ctag));
3792 ie_.outer_hdr_creation_desc.stag = 1;
3793 std::memcpy(ie_.stag, val,
sizeof(ie_.stag));
3803 inline OuterHeaderCreationIE::OuterHeaderCreationIE(pfcp_outer_hdr_creation_ie_t &ie, LengthCalculator *parent)
3804 : IEHeader(ie.header, PFCP_IE_OUTER_HDR_CREATION, parent),
3812 sizeof(ie_.outer_hdr_creation_desc) +
3813 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv4 || ie_.outer_hdr_creation_desc.gtpu_udp_ipv6 ?
sizeof(ie_.teid) : 0) +
3814 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3815 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3816 (ie_.outer_hdr_creation_desc.udp_ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3817 (ie_.outer_hdr_creation_desc.udp_ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3818 (ie_.outer_hdr_creation_desc.ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3819 (ie_.outer_hdr_creation_desc.ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3820 (ie_.outer_hdr_creation_desc.udp_ipv4 || ie_.outer_hdr_creation_desc.udp_ipv6 ||
3821 ie_.outer_hdr_creation_desc.ipv4 || ie_.outer_hdr_creation_desc.ipv6 ?
sizeof(ie_.port_number) : 0) +
3822 (ie_.outer_hdr_creation_desc.ctag ?
sizeof(ie_.ctag) : 0) +
3823 (ie_.outer_hdr_creation_desc.stag ?
sizeof(ie_.stag) : 0)
3831 return ie_.bar_id_value;
3836 ie_.bar_id_value = val;
3846 inline BarIdIE::BarIdIE(pfcp_bar_id_ie_t &ie, LengthCalculator *parent)
3847 : IEHeader(ie.header, PFCP_IE_BAR_ID, parent),
3854 return sizeof(pfcp_bar_id_ie_t) -
sizeof(pfcp_ie_header_t);
3861 return ie_.sup_feat.load;
3866 return ie_.sup_feat.ovrl;
3871 ie_.sup_feat.load = val ? 1 : 0; setLength();
3877 ie_.sup_feat.ovrl = val ? 1 : 0; setLength();
3886 inline CpFunctionFeaturesIE::CpFunctionFeaturesIE(pfcp_cp_func_feat_ie_t &ie, LengthCalculator *parent)
3887 : IEHeader(ie.header, PFCP_IE_CP_FUNC_FEAT, parent),
3894 return sizeof(pfcp_cp_func_feat_ie_t) -
sizeof(pfcp_ie_header_t);
3921 ie_.bef = val ? 1 : 0; setLength();
3927 ie_.aft = val ? 1 : 0; setLength();
3933 ie_.uae = val ? 1 : 0; setLength();
3939 ie_.ube = val ? 1 : 0; setLength();
3948 inline UsageInformationIE::UsageInformationIE(pfcp_usage_info_ie_t &ie, LengthCalculator *parent)
3949 : IEHeader(ie.header, PFCP_IE_USAGE_INFO, parent),
3956 return sizeof(pfcp_usage_info_ie_t) -
sizeof(pfcp_ie_header_t);
3963 return ie_.app_inst_ident;
3968 if (len >
sizeof(ie_.app_inst_ident))
3969 len =
sizeof(ie_.app_inst_ident);
3970 std::memcpy(ie_.app_inst_ident, val, len);
3971 ie_.header.len = len;
3980 inline ApplicationInstanceIdIE::ApplicationInstanceIdIE(pfcp_app_inst_id_ie_t &ie, LengthCalculator *parent)
3981 : IEHeader(ie.header, PFCP_IE_APP_INST_ID, parent),
3988 return ie_.header.len;
4000 ie_.flow_direction =
static_cast<uint8_t
>(val);
4007 if (len >
sizeof(ie_.flow_desc))
4008 len =
sizeof(ie_.flow_desc);
4009 ie_.len_of_flow_desc = len;
4010 std::memcpy(ie_.flow_desc, val, len);
4020 inline FlowInformationIE::FlowInformationIE(pfcp_flow_info_ie_t &ie, LengthCalculator *parent)
4021 : IEHeader(ie.header, PFCP_IE_FLOW_INFO, parent),
4030 sizeof(ie_.len_of_flow_desc) +
4031 ie_.len_of_flow_desc
4060 u.uint32_t_ptr = &ie_.ipv4_address;
4061 return *u.in_addr_ptr;
4067 u.uint8_t_ptr = ie_.ipv6_address;
4068 return *u.in6_addr_ptr;
4073 return ie_.ipv6_pfx_dlgtn_bits;
4078 ie_.sd = val ? 1 : 0;
4086 return ip_address(val.
getInet().sin_addr);
4088 return ip_address(val.
getInet6().sin6_addr);
4094 if (val.
family() == AF_INET)
4096 else if (val.
family() == AF_INET6)
4104 ie_.ipv4_address = val.s_addr;
4112 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
4120 ie_.ipv6_pfx_dlgtn_bits = val;
4130 inline UeIpAddressIE::UeIpAddressIE(pfcp_ue_ip_address_ie_t &ie, LengthCalculator *parent)
4131 : IEHeader(ie.header, PFCP_IE_UE_IP_ADDRESS, parent),
4138 return sizeof(pfcp_ue_ip_address_ie_t) -
sizeof(pfcp_ie_header_t);
4160 return ie_.max_uplnk_pckt_rate;
4170 return ie_.max_dnlnk_pckt_rate;
4176 ie_.uplnk_time_unit =
static_cast<uint8_t
>(tu);
4177 ie_.max_uplnk_pckt_rate = val;
4185 ie_.dnlnk_time_unit =
static_cast<uint8_t
>(tu);
4186 ie_.max_dnlnk_pckt_rate = val;
4196 inline PacketRateIE::PacketRateIE(pfcp_packet_rate_ie_t &ie, LengthCalculator *parent)
4197 : IEHeader(ie.header, PFCP_IE_PACKET_RATE, parent),
4206 (ie_.ulpr ? 3 : 0) +
4220 return ie_.gtpu_ext_hdr_del.pdu_session_container;
4225 ie_.gtpu_ext_hdr_del.pdu_session_container = val ? 1 : 0;
4235 inline OuterHeaderRemovalIE::OuterHeaderRemovalIE(pfcp_outer_hdr_removal_ie_t &ie, LengthCalculator *parent)
4236 : IEHeader(ie.header, PFCP_IE_OUTER_HDR_REMOVAL, parent),
4245 (ie_.gtpu_ext_hdr_del.pdu_session_container ?
sizeof(ie_.gtpu_ext_hdr_del) : 0)
4270 inline RecoveryTimeStampIE::RecoveryTimeStampIE(pfcp_rcvry_time_stmp_ie_t &ie, LengthCalculator *parent)
4271 : IEHeader(ie.header, PFCP_IE_RCVRY_TIME_STMP, parent),
4278 return sizeof(pfcp_rcvry_time_stmp_ie_t) -
sizeof(pfcp_ie_header_t);
4295 return ie_.tostraffic_cls;
4300 return ie_.svc_cls_indctr;
4306 memcpy(ie_.tostraffic_cls, val,
sizeof(ie_.tostraffic_cls));
4314 memcpy(ie_.svc_cls_indctr, val,
sizeof(ie_.svc_cls_indctr));
4324 inline DlFlowLevelMarkingIE::DlFlowLevelMarkingIE(pfcp_dl_flow_lvl_marking_ie_t &ie, LengthCalculator *parent)
4325 : IEHeader(ie.header, PFCP_IE_DL_FLOW_LVL_MARKING, parent),
4334 (ie_.ttc ?
sizeof(ie_.svc_cls_indctr) : 0) +
4335 (ie_.sci ?
sizeof(ie_.svc_cls_indctr) : 0)
4348 return ie_.len_of_hdr_fld_nm;
4353 return ie_.hdr_fld_nm;
4358 return ie_.len_of_hdr_fld_val;
4363 return ie_.hdr_fld_val;
4368 ie_.header_type =
static_cast<uint8_t
>(val);
4375 if (len >
sizeof(ie_.hdr_fld_nm))
4376 len =
sizeof(ie_.hdr_fld_nm);
4378 std::memcpy(ie_.hdr_fld_nm, val, len);
4385 if (len >
sizeof(ie_.hdr_fld_val))
4386 len =
sizeof(ie_.hdr_fld_val);
4388 std::memcpy(ie_.hdr_fld_val, val, len);
4398 inline HeaderEnrichmentIE::HeaderEnrichmentIE(pfcp_hdr_enrchmt_ie_t &ie, LengthCalculator *parent)
4399 : IEHeader(ie.header, PFCP_IE_HDR_ENRCHMT, parent),
4408 sizeof(ie_.len_of_hdr_fld_nm) +
4409 ie_.len_of_hdr_fld_nm +
4410 sizeof(ie_.len_of_hdr_fld_val) +
4411 ie_.len_of_hdr_fld_val
4439 ie_.mbqe = val ? 1 : 0;
4446 ie_.inam = val ? 1 : 0;
4453 ie_.radi = val ? 1 : 0;
4460 ie_.istm = val ? 1 : 0;
4470 inline MeasurementInformationIE::MeasurementInformationIE(pfcp_meas_info_ie_t &ie, LengthCalculator *parent)
4471 : IEHeader(ie.header, PFCP_IE_MEAS_INFO, parent),
4478 return sizeof(pfcp_meas_info_ie_t) -
sizeof(pfcp_ie_header_t);
4500 inline NodeReportTypeIE::NodeReportTypeIE(pfcp_node_rpt_type_ie_t &ie, LengthCalculator *parent)
4501 : IEHeader(ie.header, PFCP_IE_NODE_RPT_TYPE, parent),
4508 return sizeof(pfcp_node_rpt_type_ie_t) -
sizeof(pfcp_ie_header_t);
4536 u.uint32_t_ptr = &ie_.ipv4_address;
4537 return *u.in_addr_ptr;
4543 u.uint8_t_ptr = ie_.ipv6_address;
4544 return *u.in6_addr_ptr;
4549 return ie_.len_of_dst_intfc_fld;
4559 return ie_.len_of_ntwk_instc_fld;
4564 return ie_.ntwk_instc;
4570 return ip_address(val.
getInet().sin_addr);
4572 return ip_address(val.
getInet6().sin6_addr);
4578 if (val.
family() == AF_INET)
4580 else if (val.
family() == AF_INET6)
4588 ie_.ipv4_address = val.s_addr;
4596 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
4604 ie_.len_of_dst_intfc_fld =
sizeof(ie_.dst_intfc);
4605 ie_.dst_intfc.intfc_value =
static_cast<uint8_t
>(val);
4613 if (len >
sizeof(ie_.ntwk_instc))
4614 len =
sizeof(ie_.ntwk_instc);
4615 ie_.len_of_ntwk_instc_fld = len;
4616 std::memcpy(ie_.ntwk_instc, val, len);
4626 inline RemoteGTPUPeerIE::RemoteGTPUPeerIE(pfcp_rmt_gtpu_peer_ie_t &ie, LengthCalculator *parent)
4627 : IEHeader(ie.header, PFCP_IE_RMT_GTPU_PEER, parent),
4636 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
4637 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0) +
4638 (ie_.di ?
sizeof(ie_.len_of_dst_intfc_fld) + ie_.len_of_dst_intfc_fld : 0) +
4639 (ie_.ni ?
sizeof(ie_.len_of_ntwk_instc_fld) + ie_.len_of_ntwk_instc_fld : 0)
4662 inline UrSeqnIE::UrSeqnIE(pfcp_urseqn_ie_t &ie, LengthCalculator *parent)
4663 : IEHeader(ie.header, PFCP_IE_URSEQN, parent),
4670 return sizeof(pfcp_urseqn_ie_t) -
sizeof(pfcp_ie_header_t);
4677 return ie_.header.len;
4682 return ie_.predef_rules_nm;
4687 if (len >
sizeof(ie_.predef_rules_nm))
4688 len =
sizeof(ie_.predef_rules_nm);
4689 std::memcpy(ie_.predef_rules_nm, val, len);
4690 ie_.header.len = len;
4699 inline ActivatePredefinedRulesIE::ActivatePredefinedRulesIE(pfcp_actvt_predef_rules_ie_t &ie, LengthCalculator *parent)
4700 : IEHeader(ie.header, PFCP_IE_ACTVT_PREDEF_RULES, parent),
4707 return ie_.header.len;
4714 return ie_.header.len;
4718 return ie_.predef_rules_nm;
4723 if (len >
sizeof(ie_.predef_rules_nm))
4724 len =
sizeof(ie_.predef_rules_nm);
4725 std::memcpy(ie_.predef_rules_nm, val, len);
4726 ie_.header.len = len;
4735 inline DeactivatePredefinedRulesIE::DeactivatePredefinedRulesIE(pfcp_deact_predef_rules_ie_t &ie, LengthCalculator *parent)
4736 : IEHeader(ie.header, PFCP_IE_DEACT_PREDEF_RULES, parent),
4743 return ie_.header.len;
4750 return ie_.far_id_value;
4755 ie_.far_id_value = val;
4765 inline FarIdIE::FarIdIE(pfcp_far_id_ie_t &ie, LengthCalculator *parent)
4766 : IEHeader(ie.header, PFCP_IE_FAR_ID, parent),
4773 return sizeof(pfcp_far_id_ie_t) -
sizeof(pfcp_ie_header_t);
4780 return ie_.qer_id_value;
4785 ie_.qer_id_value = val;
4795 inline QerIdIE::QerIdIE(pfcp_qer_id_ie_t &ie, LengthCalculator *parent)
4796 : IEHeader(ie.header, PFCP_IE_QER_ID, parent),
4803 return sizeof(pfcp_qer_id_ie_t) -
sizeof(pfcp_ie_header_t);
4814 ie_.aoci = val ? 1 : 0;
4824 inline OciFlagsIE::OciFlagsIE(pfcp_oci_flags_ie_t &ie, LengthCalculator *parent)
4825 : IEHeader(ie.header, PFCP_IE_OCI_FLAGS, parent),
4833 sizeof(pfcp_oci_flags_ie_t) -
sizeof(pfcp_ie_header_t) :
4847 ie_.sarr = val ? 1 : 0;
4857 inline AssociationReleaseRequestIE::AssociationReleaseRequestIE(pfcp_up_assn_rel_req_ie_t &ie, LengthCalculator *parent)
4858 : IEHeader(ie.header, PFCP_IE_UP_ASSN_REL_REQ, parent),
4866 sizeof(pfcp_up_assn_rel_req_ie_t) -
sizeof(pfcp_ie_header_t) :
4880 return ie_.timer_value;
4885 ie_.timer_unit =
static_cast<uint8_t
>(tu);
4886 ie_.timer_value = val;
4896 inline GracefulReleasePeriodIE::GracefulReleasePeriodIE(pfcp_graceful_rel_period_ie_t &ie, LengthCalculator *parent)
4897 : IEHeader(ie.header, PFCP_IE_GRACEFUL_REL_PERIOD, parent),
4904 return sizeof(pfcp_graceful_rel_period_ie_t) -
sizeof(pfcp_ie_header_t);
4916 ie_.pdn_type =
static_cast<uint8_t
>(val);
4926 inline PdnTypeIE::PdnTypeIE(pfcp_pdn_type_ie_t &ie, LengthCalculator *parent)
4927 : IEHeader(ie.header, PFCP_IE_PDN_TYPE, parent),
4934 return sizeof(pfcp_pdn_type_ie_t) -
sizeof(pfcp_ie_header_t);
4946 return ie_.rule_id_value;
4951 ie_.rule_id_type =
static_cast<uint8_t
>(rt);
4953 ie_.rule_id_value = val & 0x0000ffff;
4955 ie_.rule_id_value = val & 0x000000ff;
4957 ie_.rule_id_value = val;
4967 inline FailedRuleIdIE::FailedRuleIdIE(pfcp_failed_rule_id_ie_t &ie, LengthCalculator *parent)
4968 : IEHeader(ie.header, PFCP_IE_FAILED_RULE_ID, parent),
4977 (ie_.rule_id_type == 0 ? 2 :
4978 ie_.rule_id_type == 4 ? 1 : 4)
4991 return ie_.base_time_int;
4996 ie_.btit =
static_cast<uint8_t
>(btit);
4997 ie_.base_time_int = val;
5007 inline TimeQuotaMechanismIE::TimeQuotaMechanismIE(pfcp_time_quota_mech_ie_t &ie, LengthCalculator *parent)
5008 : IEHeader(ie.header, PFCP_IE_TIME_QUOTA_MECH, parent),
5015 return sizeof(pfcp_time_quota_mech_ie_t) -
sizeof(pfcp_ie_header_t);
5047 return ie_.teid_range;
5053 ie_.teid_range = val;
5059 u.uint32_t_ptr = &ie_.ipv4_address;
5060 return *u.in_addr_ptr;
5066 u.uint8_t_ptr = ie_.ipv6_address;
5067 return *u.in6_addr_ptr;
5072 return ie_.ntwk_inst_len;
5077 return ie_.ntwk_inst;
5088 return ip_address(val.
getInet().sin_addr);
5090 return ip_address(val.
getInet6().sin6_addr);
5096 if (val.
family() == AF_INET)
5098 else if (val.
family() == AF_INET6)
5106 ie_.ipv4_address = val.s_addr;
5114 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
5122 if (len >
sizeof(ie_.ntwk_inst))
5123 len =
sizeof(ie_.ntwk_inst);
5124 ie_.ntwk_inst_len = len;
5125 std::memcpy(ie_.ntwk_inst, val, ie_.ntwk_inst_len);
5133 ie_.src_intfc =
static_cast<uint8_t
>(val);
5143 inline UserPlaneIpResourceInformationIE::UserPlaneIpResourceInformationIE(pfcp_user_plane_ip_rsrc_info_ie_t &ie, LengthCalculator *parent)
5144 : IEHeader(ie.header, PFCP_IE_USER_PLANE_IP_RSRC_INFO, parent),
5153 (ie_.teidri > 0 ?
sizeof(ie_.teid_range) : 0) +
5154 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
5155 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0) +
5156 (ie_.assoni ? ie_.ntwk_inst_len : 0) +
5157 (ie_.assosi ? 1 : 0)
5164 return ie_.user_plane_inact_timer;
5169 ie_.user_plane_inact_timer = val;
5179 inline UserPlaneInactivityTimerIE::UserPlaneInactivityTimerIE(pfcp_user_plane_inact_timer_ie_t &ie, LengthCalculator *parent)
5180 : IEHeader(ie.header, PFCP_IE_USER_PLANE_INACT_TIMER, parent),
5187 return sizeof(pfcp_user_plane_inact_timer_ie_t) -
sizeof(pfcp_ie_header_t);
5194 return ie_.value_digits;
5199 return ie_.exponent;
5204 ie_.value_digits = val;
5221 inline MultiplierIE::MultiplierIE(pfcp_multiplier_ie_t &ie, LengthCalculator *parent)
5222 : IEHeader(ie.header, PFCP_IE_MULTIPLIER, parent),
5229 return sizeof(pfcp_multiplier_ie_t) -
sizeof(pfcp_ie_header_t);
5236 return ie_.urr_id_value;
5241 ie_.urr_id_value = val;
5251 inline AggregatedUrrIdIE::AggregatedUrrIdIE(pfcp_agg_urr_id_ie_t &ie, LengthCalculator *parent)
5252 : IEHeader(ie.header, PFCP_IE_AGG_URR_ID, parent),
5259 return sizeof(pfcp_agg_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
5282 ie_.total_volume = val;
5290 ie_.uplink_volume = val;
5298 ie_.downlink_volume = val;
5308 inline SubsequentVolumeQuotaIE::SubsequentVolumeQuotaIE(pfcp_sbsqnt_vol_quota_ie_t &ie, LengthCalculator *parent)
5309 : IEHeader(ie.header, PFCP_IE_SBSQNT_VOL_QUOTA, parent),
5318 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
5319 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
5320 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
5328 return ie_.time_quota_val;
5333 ie_.time_quota_val = val;
5343 inline SubsequentTimeQuotaIE::SubsequentTimeQuotaIE(pfcp_sbsqnt_time_quota_ie_t &ie, LengthCalculator *parent)
5344 : IEHeader(ie.header, PFCP_IE_SBSQNT_TIME_QUOTA, parent),
5351 return sizeof(pfcp_sbsqnt_time_quota_ie_t) -
sizeof(pfcp_ie_header_t);
5363 ie_.rqi = val ? 1 : 0;
5373 inline RqiIE::RqiIE(pfcp_rqi_ie_t &ie, LengthCalculator *parent)
5374 : IEHeader(ie.header, PFCP_IE_RQI, parent),
5381 return sizeof(pfcp_rqi_ie_t) -
sizeof(pfcp_ie_header_t);
5388 return ie_.qfi_value;
5393 ie_.qfi_value = val;
5403 inline QfiIE::QfiIE(pfcp_qfi_ie_t &ie, LengthCalculator *parent)
5404 : IEHeader(ie.header, PFCP_IE_QFI, parent),
5411 return sizeof(pfcp_qfi_ie_t) -
sizeof(pfcp_ie_header_t);
5418 return ie_.query_urr_ref_val;
5423 ie_.query_urr_ref_val = val;
5433 inline QueryUrrReferenceIE::QueryUrrReferenceIE(pfcp_query_urr_ref_ie_t &ie, LengthCalculator *parent)
5434 : IEHeader(ie.header, PFCP_IE_QUERY_URR_REF, parent),
5441 return sizeof(pfcp_query_urr_ref_ie_t) -
sizeof(pfcp_ie_header_t);
5453 return ie_.nbr_of_add_usage_rpts_val;
5458 ie_.auri = val ? 1 : 0;
5465 ie_.nbr_of_add_usage_rpts_val = val;
5475 inline AdditionalUsageReportsInformationIE::AdditionalUsageReportsInformationIE(pfcp_add_usage_rpts_info_ie_t &ie, LengthCalculator *parent)
5476 : IEHeader(ie.header, PFCP_IE_ADD_USAGE_RPTS_INFO, parent),
5483 return sizeof(pfcp_add_usage_rpts_info_ie_t) -
sizeof(pfcp_ie_header_t);
5490 return ie_.traffic_endpt_id_val;
5495 ie_.traffic_endpt_id_val = val;
5505 inline TrafficEndpointIdIE::TrafficEndpointIdIE(pfcp_traffic_endpt_id_ie_t &ie, LengthCalculator *parent)
5506 : IEHeader(ie.header, PFCP_IE_TRAFFIC_ENDPT_ID, parent),
5513 return sizeof(pfcp_traffic_endpt_id_ie_t) -
sizeof(pfcp_ie_header_t);
5540 return ie_.src_mac_addr_val;
5545 return ie_.dst_mac_addr_val;
5550 return ie_.upr_src_mac_addr_val;
5555 return ie_.upr_dst_mac_addr_val;
5561 std::memcpy(ie_.src_mac_addr_val, val,
sizeof(ie_.src_mac_addr_val));
5569 std::memcpy(ie_.dst_mac_addr_val, val,
sizeof(ie_.dst_mac_addr_val));
5577 std::memcpy(ie_.upr_dst_mac_addr_val, val,
sizeof(ie_.upr_dst_mac_addr_val));
5585 std::memcpy(ie_.upr_src_mac_addr_val, val,
sizeof(ie_.upr_src_mac_addr_val));
5595 inline MacAddressIE::MacAddressIE(pfcp_mac_address_ie_t &ie, LengthCalculator *parent)
5596 : IEHeader(ie.header, PFCP_IE_MAC_ADDRESS, parent),
5605 (ie_.sour ?
sizeof(ie_.src_mac_addr_val) : 0) +
5606 (ie_.dest ?
sizeof(ie_.dst_mac_addr_val) : 0) +
5607 (ie_.usou ?
sizeof(ie_.upr_src_mac_addr_val) : 0) +
5608 (ie_.udes ?
sizeof(ie_.upr_dst_mac_addr_val) : 0)
5616 return ie_.ctag_pcp;
5621 return ie_.ctag_dei;
5626 return ie_.ctag_vid;
5631 return ie_.ctag_pcp_value;
5636 return ie_.ctag_dei_flag;
5641 return ie_.cvid_value;
5646 return ie_.cvid_value2;
5651 ie_.ctag_pcp = val ? 1 : 0;
5658 ie_.ctag_dei = val ? 1 : 0;
5665 ie_.ctag_vid = val ? 1 : 0;
5672 ie_.ctag_pcp_value = val;
5679 ie_.ctag_dei_flag = val ? 1 : 0;
5686 ie_.cvid_value = val;
5693 ie_.cvid_value2 = val;
5703 inline CTagIE::CTagIE(pfcp_ctag_ie_t &ie, LengthCalculator *parent)
5704 : IEHeader(ie.header, PFCP_IE_CTAG, parent),
5711 return sizeof(pfcp_ctag_ie_t) -
sizeof(pfcp_ie_header_t);
5718 return ie_.stag_pcp;
5723 return ie_.stag_dei;
5728 return ie_.stag_vid;
5733 return ie_.stag_pcp_value;
5738 return ie_.stag_dei_flag;
5743 return ie_.svid_value;
5748 return ie_.svid_value2;
5753 ie_.stag_pcp = val ? 1 : 0;
5760 ie_.stag_dei = val ? 1 : 0;
5767 ie_.stag_vid = val ? 1 : 0;
5774 ie_.stag_pcp_value = val;
5781 ie_.stag_dei_flag = val ? 1 : 0;
5788 ie_.svid_value = val;
5795 ie_.svid_value2 = val;
5805 inline STagIE::STagIE(pfcp_stag_ie_t &ie, LengthCalculator *parent)
5806 : IEHeader(ie.header, PFCP_IE_STAG, parent),
5813 return sizeof(pfcp_stag_ie_t) -
sizeof(pfcp_ie_header_t);
5820 return ie_.ethertype;
5825 ie_.ethertype = val;
5835 inline EthertypeIE::EthertypeIE(pfcp_ethertype_ie_t &ie, LengthCalculator *parent)
5836 : IEHeader(ie.header, PFCP_IE_ETHERTYPE, parent),
5843 return sizeof(pfcp_ethertype_ie_t) -
sizeof(pfcp_ie_header_t);
5860 ie_.arp = val ? 1 : 0;
5867 ie_.ins = val ? 1 : 0;
5877 inline ProxyingIE::ProxyingIE(pfcp_proxying_ie_t &ie, LengthCalculator *parent)
5878 : IEHeader(ie.header, PFCP_IE_PROXYING, parent),
5885 return sizeof(pfcp_proxying_ie_t) -
sizeof(pfcp_ie_header_t);
5892 return ie_.eth_fltr_id_val;
5897 ie_.eth_fltr_id_val = val;
5907 inline EthernetFilterIdIE::EthernetFilterIdIE(pfcp_eth_fltr_id_ie_t &ie, LengthCalculator *parent)
5908 : IEHeader(ie.header, PFCP_IE_ETH_FLTR_ID, parent),
5915 return sizeof(pfcp_eth_fltr_id_ie_t) -
sizeof(pfcp_ie_header_t);
5927 ie_.bide = val ? 1 : 0;
5937 inline EthernetFilterPropertiesIE::EthernetFilterPropertiesIE(pfcp_eth_fltr_props_ie_t &ie, LengthCalculator *parent)
5938 : IEHeader(ie.header, PFCP_IE_ETH_FLTR_PROPS, parent),
5945 return sizeof(pfcp_eth_fltr_props_ie_t) -
sizeof(pfcp_ie_header_t);
5952 return ie_.pckt_cnt_val;
5957 ie_.pckt_cnt_val = val;
5967 inline SuggestedBufferingPacketsCountIE::SuggestedBufferingPacketsCountIE(pfcp_suggstd_buf_pckts_cnt_ie_t &ie, LengthCalculator *parent)
5968 : IEHeader(ie.header, PFCP_IE_SUGGSTD_BUF_PCKTS_CNT, parent),
5975 return sizeof(pfcp_suggstd_buf_pckts_cnt_ie_t) -
sizeof(pfcp_ie_header_t);
6002 return ie_.length_of_imsi;
6007 return ie_.length_of_imei;
6012 return ie_.len_of_msisdn;
6017 return ie_.length_of_nai;
6043 if (len >
sizeof(ie_.imsi))
6044 len =
sizeof(ie_.imsi);
6045 ie_.length_of_imsi = len;
6046 std::memcpy(ie_.imsi, val, len);
6053 if (len >
sizeof(ie_.imei))
6054 len =
sizeof(ie_.imei);
6055 ie_.length_of_imei = len;
6056 std::memcpy(ie_.imei, val, len);
6063 if (len >
sizeof(ie_.msisdn))
6064 len =
sizeof(ie_.msisdn);
6065 ie_.len_of_msisdn = len;
6066 std::memcpy(ie_.msisdn, val, len);
6070 inline UserIdIE &
UserIdIE::nai(
const uint8_t *val, uint8_t len)
6073 if (len >
sizeof(ie_.nai))
6074 len =
sizeof(ie_.nai);
6075 ie_.length_of_nai = len;
6076 std::memcpy(ie_.nai, val, len);
6085 inline UserIdIE::UserIdIE(pfcp_user_id_ie_t &ie, LengthCalculator *parent)
6086 : IEHeader(ie.header, PFCP_IE_USER_ID, parent),
6095 (ie_.imsif ?
sizeof(ie_.length_of_imsi) + ie_.length_of_imsi : 0) +
6096 (ie_.imeif ?
sizeof(ie_.length_of_imei) + ie_.length_of_imei : 0) +
6097 (ie_.msisdnf ?
sizeof(ie_.len_of_msisdn) + ie_.len_of_msisdn : 0) +
6098 (ie_.naif ?
sizeof(ie_.length_of_nai) + ie_.length_of_nai : 0)
6111 ie_.ethi = val ? 1 : 0;
6121 inline EthernetPduSessionInformationIE::EthernetPduSessionInformationIE(pfcp_eth_pdu_sess_info_ie_t &ie, LengthCalculator *parent)
6122 : IEHeader(ie.header, PFCP_IE_ETH_PDU_SESS_INFO, parent),
6129 return sizeof(pfcp_eth_pdu_sess_info_ie_t) -
sizeof(pfcp_ie_header_t);
6136 return ie_.nbr_of_mac_addrs;
6141 if (idx > MAC_ADDR_VAL_LEN)
6143 return ie_.mac_addr_val[idx];
6148 if (ie_.nbr_of_mac_addrs >= MAC_ADDR_VAL_LEN)
6150 std::memcpy(ie_.mac_addr_val[ie_.nbr_of_mac_addrs], val, 6);
6151 ie_.nbr_of_mac_addrs++;
6161 inline MacAddressesDetectedIE::MacAddressesDetectedIE(pfcp_mac_addrs_detctd_ie_t &ie, LengthCalculator *parent)
6162 : IEHeader(ie.header, PFCP_IE_MAC_ADDRS_DETCTD, parent),
6170 sizeof(ie_.nbr_of_mac_addrs) +
6171 (ie_.nbr_of_mac_addrs * 6)
6179 return ie_.nbr_of_mac_addrs;
6184 if (idx > MAC_ADDR_VAL_LEN)
6186 return ie_.mac_addr_val[idx];
6191 if (ie_.nbr_of_mac_addrs >= MAC_ADDR_VAL_LEN)
6193 std::memcpy(ie_.mac_addr_val[ie_.nbr_of_mac_addrs], val, 6);
6194 ie_.nbr_of_mac_addrs++;
6204 inline MacAddressesRemovedIE::MacAddressesRemovedIE(pfcp_mac_addrs_rmvd_ie_t &ie, LengthCalculator *parent)
6205 : IEHeader(ie.header, PFCP_IE_MAC_ADDRS_RMVD, parent),
6212 return sizeof(pfcp_mac_addrs_rmvd_ie_t) -
sizeof(pfcp_ie_header_t);
6219 return ie_.eth_inact_timer;
6224 ie_.eth_inact_timer = val;
6234 inline EthernetInactivityTimerIE::EthernetInactivityTimerIE(pfcp_eth_inact_timer_ie_t &ie, LengthCalculator *parent)
6235 : IEHeader(ie.header, PFCP_IE_ETH_INACT_TIMER, parent),
6242 return sizeof(pfcp_eth_inact_timer_ie_t) -
sizeof(pfcp_ie_header_t);
6249 return ie_.sbsqnt_evnt_quota;
6254 ie_. sbsqnt_evnt_quota = val;
6264 inline SubsequentEventQuotaIE::SubsequentEventQuotaIE(pfcp_sbsqnt_evnt_quota_ie_t &ie, LengthCalculator *parent)
6265 : IEHeader(ie.header, PFCP_IE_SBSQNT_EVNT_QUOTA, parent),
6272 return sizeof(pfcp_sbsqnt_evnt_quota_ie_t) -
sizeof(pfcp_ie_header_t);
6279 return ie_.sbsqnt_evnt_thresh;
6284 ie_.sbsqnt_evnt_thresh = val;
6294 inline SubsequentEventThresholdIE::SubsequentEventThresholdIE(pfcp_sbsqnt_evnt_thresh_ie_t &ie, LengthCalculator *parent)
6295 : IEHeader(ie.header, PFCP_IE_SBSQNT_EVNT_THRESH, parent),
6302 return sizeof(pfcp_sbsqnt_evnt_thresh_ie_t) -
sizeof(pfcp_ie_header_t);
6309 return ie_.mcc_digit_1;
6314 return ie_.mcc_digit_2;
6319 return ie_.mcc_digit_3;
6324 return ie_.mnc_digit_1;
6329 return ie_.mnc_digit_2;
6334 return ie_.mnc_digit_3;
6339 return ie_.trace_id;
6344 return ie_.len_of_trigrng_evnts;
6349 return ie_.trigrng_evnts;
6354 return ie_.sess_trc_depth;
6359 return ie_.len_of_list_of_intfcs;
6364 return ie_.list_of_intfcs;
6369 return ie_.len_of_ip_addr_of_trc_coll_ent;
6375 u.uint8_t_ptr = ie_.ip_addr_of_trc_coll_ent;
6376 return *u.in_addr_ptr;
6382 u.uint8_t_ptr = ie_.ip_addr_of_trc_coll_ent;
6383 return *u.in6_addr_ptr;
6391 ie_.mcc_digit_2 = val[1] -
'0';
6392 ie_.mcc_digit_3 = val[2] -
'0';
6399 if (len < 2 || len > 3)
6402 ie_.mnc_digit_2 = val[1];
6403 ie_.mnc_digit_3 = len == 2 ? 15 : val[2];
6410 std::memcpy(reinterpret_cast<uint8_t*>(&ie_) +
sizeof(pfcp_ie_header_t), val, 3);
6424 ie_.len_of_trigrng_evnts =
sizeof(ie_.trigrng_evnts);
6425 std::memcpy(ie_.trigrng_evnts, val,
sizeof(ie_.trigrng_evnts));
6432 ie_.len_of_list_of_intfcs =
sizeof(ie_.list_of_intfcs);
6433 std::memcpy(ie_.list_of_intfcs, val,
sizeof(ie_.list_of_intfcs));
6441 return ip_addr_of_trc_coll_ent(val.
getInet().sin_addr);
6443 return ip_addr_of_trc_coll_ent(val.
getInet6().sin6_addr);
6449 if (val.
family() == AF_INET)
6450 return ip_addr_of_trc_coll_ent(val.
ipv4Address());
6451 else if (val.
family() == AF_INET6)
6452 return ip_addr_of_trc_coll_ent(val.
ipv6Address());
6459 std::memcpy(ie_.ip_addr_of_trc_coll_ent, &val,
sizeof(in_addr));
6467 std::memcpy(ie_.ip_addr_of_trc_coll_ent, &val,
sizeof(in6_addr));
6477 inline TraceInformationIE::TraceInformationIE(pfcp_trc_info_ie_t &ie, LengthCalculator *parent)
6478 : IEHeader(ie.header, PFCP_IE_TRC_INFO, parent),
6488 sizeof(ie_.len_of_trigrng_evnts) + ie_.len_of_trigrng_evnts +
6489 sizeof(ie_.len_of_list_of_intfcs) + ie_.len_of_list_of_intfcs +
6490 sizeof(ie_.len_of_ip_addr_of_trc_coll_ent) + ie_.len_of_ip_addr_of_trc_coll_ent
6498 return ie_.header.len;
6503 return ie_.framed_route;
6508 if (len >
sizeof(ie_.framed_route))
6509 len =
sizeof(ie_.framed_route);
6510 std::memcpy(ie_.framed_route, val, len);
6511 ie_.header.len = len;
6520 inline FramedRouteIE::FramedRouteIE(pfcp_framed_route_ie_t &ie, LengthCalculator *parent)
6521 : IEHeader(ie.header, PFCP_IE_FRAMED_ROUTE, parent),
6528 return sizeof(pfcp_framed_route_ie_t) -
sizeof(pfcp_ie_header_t);
6540 ie_.framed_routing =
static_cast<uint32_t
>(val);
6550 inline FramedRoutingIE::FramedRoutingIE(pfcp_framed_routing_ie_t &ie, LengthCalculator *parent)
6551 : IEHeader(ie.header, PFCP_IE_FRAMED_ROUTING, parent),
6558 return sizeof(pfcp_framed_routing_ie_t) -
sizeof(pfcp_ie_header_t);
6565 return ie_.header.len;
6570 return ie_.frmd_ipv6_rte;
6575 if (len >
sizeof(ie_.frmd_ipv6_rte))
6576 len =
sizeof(ie_.frmd_ipv6_rte);
6577 std::memcpy(ie_.frmd_ipv6_rte, val, len);
6578 ie_.header.len = len;
6587 inline FramedIpv6RouteIE::FramedIpv6RouteIE(pfcp_frmd_ipv6_rte_ie_t &ie, LengthCalculator *parent)
6588 : IEHeader(ie.header, PFCP_IE_FRMD_IPV6_RTE, parent),
6595 return sizeof(pfcp_frmd_ipv6_rte_ie_t) -
sizeof(pfcp_ie_header_t);
6602 return ie_.event_quota;
6607 ie_.event_quota = val;
6617 inline EventQuotaIE::EventQuotaIE(pfcp_event_quota_ie_t &ie, LengthCalculator *parent)
6618 : IEHeader(ie.header, PFCP_IE_EVENT_QUOTA, parent),
6625 return sizeof(pfcp_event_quota_ie_t) -
sizeof(pfcp_ie_header_t);
6632 return ie_.event_threshold;
6637 ie_.event_threshold = val;
6647 inline EventThresholdIE::EventThresholdIE(pfcp_event_threshold_ie_t &ie, LengthCalculator *parent)
6648 : IEHeader(ie.header, PFCP_IE_EVENT_THRESHOLD, parent),
6655 return sizeof(pfcp_event_threshold_ie_t) -
sizeof(pfcp_ie_header_t);
6679 inline EventTimeStampIE::EventTimeStampIE(pfcp_evnt_time_stmp_ie_t &ie, LengthCalculator *parent)
6680 : IEHeader(ie.header, PFCP_IE_EVNT_TIME_STMP, parent),
6687 return sizeof(pfcp_evnt_time_stmp_ie_t) -
sizeof(pfcp_ie_header_t);
6694 return ie_.avgng_wnd;
6699 ie_.avgng_wnd = val;
6709 inline AveragingWindowIE::AveragingWindowIE(pfcp_avgng_wnd_ie_t &ie, LengthCalculator *parent)
6710 : IEHeader(ie.header, PFCP_IE_AVGNG_WND, parent),
6717 return sizeof(pfcp_avgng_wnd_ie_t) -
sizeof(pfcp_ie_header_t);
6724 return ie_.ppi_value;
6729 ie_.ppi_value = val;
6739 inline PagingPolicyIndicatorIE::PagingPolicyIndicatorIE(pfcp_paging_plcy_indctr_ie_t &ie, LengthCalculator *parent)
6740 : IEHeader(ie.header, PFCP_IE_PAGING_PLCY_INDCTR, parent),
6747 return sizeof(pfcp_paging_plcy_indctr_ie_t) -
sizeof(pfcp_ie_header_t);
6754 return ie_.header.len;
6764 if (len >
sizeof(ie_.apn_dnn))
6765 len =
sizeof(ie_.apn_dnn);
6766 std::memcpy(ie_.apn_dnn, val, len);
6767 ie_.header.len = len;
6776 inline ApnDnnIE::ApnDnnIE(pfcp_apn_dnn_ie_t &ie, LengthCalculator *parent)
6777 : IEHeader(ie.header, PFCP_IE_APN_DNN, parent),
6784 return sizeof(pfcp_apn_dnn_ie_t) -
sizeof(pfcp_ie_header_t);
6796 ie_.interface_type_value =
static_cast<uint8_t
>(val);
6806 inline TgppInterfaceTypeIE::TgppInterfaceTypeIE(pfcp_3gpp_intfc_type_ie_t &ie, LengthCalculator *parent)
6807 : IEHeader(ie.header, PFCP_IE_3GPP_INTFC_TYPE, parent),
6814 return sizeof(pfcp_3gpp_intfc_type_ie_t) -
sizeof(pfcp_ie_header_t);
6823 return pfdcnts_[idx];
6831 inline PfdContextIE::PfdContextIE(pfcp_pfd_context_ie_t &ie, LengthCalculator *parent)
6832 : IEHeader(ie.header, IE_PFD_CONTEXT, parent),
6835 for (
int i=0; i<MAX_LIST_SIZE; i++)
6836 pfdcnts_.push_back(PfdContentsIE(ie_.pfd_contents[i],
this));
6842 for (
int idx=0; idx<ie_.pfd_contents_count; idx++)
6843 len += pfdcnts_[idx].packedLength();
6856 return pfdctxts_[idx];
6861 return (ie_.pfd_context_count < MAX_LIST_SIZE) ?
6862 ie_.pfd_context_count++ : -1;
6870 inline ApplicationIdsPfdsIE::ApplicationIdsPfdsIE(pfcp_app_ids_pfds_ie_t &ie, LengthCalculator *parent)
6871 : IEHeader(ie.header, IE_APP_IDS_PFDS, parent),
6873 appid_(ie_.application_id, this)
6875 for (
int i=0; i<MAX_LIST_SIZE; i++)
6876 pfdctxts_.push_back(PfdContextIE(ie_.pfd_context[i],
this));
6881 uint16_t len = appid_.packedLength();
6882 for (
int i=0; i<ie_.pfd_context_count; i++)
6883 len += pfdctxts_[i].packedLength();
6931 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
6932 ie_.framed_route_count++ : -1;
6937 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
6938 ie_.frmd_ipv6_rte_count++ : -1;
6946 inline CreateTrafficEndpointIE::CreateTrafficEndpointIE(pfcp_create_traffic_endpt_ie_t &ie, LengthCalculator *parent)
6947 : IEHeader(ie.header, IE_CREATE_TRAFFIC_ENDPT, parent),
6949 teid_(ie_.traffic_endpt_id, this),
6950 lfteid_(ie_.local_fteid, this),
6951 ni_(ie_.ntwk_inst, this),
6952 ueip_(ie_.ue_ip_address, this),
6953 epsi_(ie_.eth_pdu_sess_info, this),
6954 fring_(ie_.framed_routing, this)
6956 for (
int i=0; i<MAX_LIST_SIZE; i++)
6957 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
6958 for (
int i=0; i<MAX_LIST_SIZE; i++)
6959 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
6966 len += teid_.packedLength();
6967 len += lfteid_.packedLength();
6968 len += ni_.packedLength();
6969 len += ueip_.packedLength();
6970 len += epsi_.packedLength();
6971 for (
int i=0; i<ie_.framed_route_count; i++)
6972 len += fr_[i].packedLength();
6973 len += fring_.packedLength();
6974 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
6975 len += fr6_[i].packedLength();
7002 inline CreateBarIE::CreateBarIE(pfcp_create_bar_ie_t &ie, LengthCalculator *parent)
7003 : IEHeader(ie.header, IE_CREATE_BAR, parent),
7005 barid_(ie_.bar_id, this),
7006 ddndelay_(ie_.dnlnk_data_notif_delay, this),
7007 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
7013 return sizeof(pfcp_create_bar_ie_t) -
sizeof(pfcp_ie_header_t);
7078 inline CreateQerIE::CreateQerIE(pfcp_create_qer_ie_t &ie, LengthCalculator *parent)
7079 : IEHeader(ie.header, IE_CREATE_QER, parent),
7081 qerid_(ie_.qer_id, this),
7082 qci_(ie_.qer_corr_id, this),
7083 gs_(ie_.gate_status, this),
7084 mbr_(ie_.maximum_bitrate, this),
7085 gbr_(ie_.guaranteed_bitrate, this),
7086 pr_(ie_.packet_rate, this),
7087 dfm_(ie_.dl_flow_lvl_marking, this),
7088 qfi_(ie_.qos_flow_ident, this),
7089 rqi_(ie_.reflective_qos, this),
7090 ppi_(ie_.paging_plcy_indctr, this),
7091 aw_(ie_.avgng_wnd, this)
7098 qerid_.packedLength() +
7099 qci_.packedLength() +
7100 gs_.packedLength() +
7101 mbr_.packedLength() +
7102 gbr_.packedLength() +
7103 pr_.packedLength() +
7104 dfm_.packedLength() +
7105 qfi_.packedLength() +
7106 rqi_.packedLength() +
7107 ppi_.packedLength() +
7153 inline AdditionalMonitoringTimeIE::AdditionalMonitoringTimeIE(pfcp_add_mntrng_time_ie_t &ie, LengthCalculator *parent)
7154 : IEHeader(ie.header, IE_ADD_MNTRNG_TIME, parent),
7156 mt_(ie_.monitoring_time, this),
7157 svt_(ie_.sbsqnt_vol_thresh, this),
7158 stt_(ie_.sbsqnt_time_thresh, this),
7159 svq_(ie_.sbsqnt_vol_quota, this),
7160 stq_(ie_.sbsqnt_time_quota, this),
7161 set_(ie_.sbsqnt_evnt_thresh, this),
7162 seq_(ie_.sbsqnt_evnt_quota, this)
7169 mt_.packedLength() +
7170 svt_.packedLength() +
7171 stt_.packedLength() +
7172 svq_.packedLength() +
7173 stq_.packedLength() +
7174 set_.packedLength() +
7175 seq_.packedLength();
7195 inline AggregatedUrrsIE::AggregatedUrrsIE(pfcp_aggregated_urrs_ie_t &ie, LengthCalculator *parent)
7196 : IEHeader(ie.header, IE_AGGREGATED_URRS, parent),
7198 aui_(ie_.agg_urr_id, this),
7199 m_(ie_.multiplier, this)
7206 aui_.packedLength() +
7349 return (ie_.linked_urr_id_count < MAX_LIST_SIZE) ?
7350 ie_.linked_urr_id_count++ : -1;
7355 return (ie_.aggregated_urrs_count < MAX_LIST_SIZE) ?
7356 ie_.aggregated_urrs_count++ : -1;
7361 return (ie_.add_mntrng_time_count < MAX_LIST_SIZE) ?
7362 ie_.add_mntrng_time_count++ : -1;
7370 inline CreateUrrIE::CreateUrrIE(pfcp_create_urr_ie_t &ie, LengthCalculator *parent)
7371 : IEHeader(ie.header, IE_CREATE_URR, parent),
7373 ui_(ie_.urr_id, this),
7374 mm_(ie_.meas_mthd, this),
7375 rt_(ie_.rptng_triggers, this),
7376 mp_(ie_.meas_period, this),
7377 vt_(ie_.vol_thresh, this),
7378 vq_(ie_.volume_quota, this),
7379 et_(ie_.event_threshold, this),
7380 eq_(ie_.event_quota, this),
7381 tt_(ie_.time_threshold, this),
7382 tq_(ie_.time_quota, this),
7383 qht_(ie_.quota_hldng_time, this),
7384 ddtt_(ie_.drpd_dl_traffic_thresh, this),
7385 mt_(ie_.monitoring_time, this),
7386 svt_(ie_.sbsqnt_vol_thresh, this),
7387 stt_(ie_.sbsqnt_time_thresh, this),
7388 svq_(ie_.sbsqnt_vol_quota, this),
7389 stq_(ie_.sbsqnt_time_quota, this),
7390 set_(ie_.sbsqnt_evnt_thresh, this),
7391 seq_(ie_.sbsqnt_evnt_quota, this),
7392 idt_(ie_.inact_det_time, this),
7393 mi_(ie_.meas_info, this),
7394 tqm_(ie_.time_quota_mech, this),
7395 fiqa_(ie_.far_id_for_quota_act, this),
7396 eit_(ie_.eth_inact_timer, this)
7398 for (
int i=0; i<MAX_LIST_SIZE; i++)
7400 lui_.push_back(LinkedUrrIdIE(ie_.linked_urr_id[i],
this));
7401 aus_.push_back(AggregatedUrrsIE(ie_.aggregated_urrs[i],
this));
7402 amt_.push_back(AdditionalMonitoringTimeIE(ie_.add_mntrng_time[i],
this));
7410 len += ui_.packedLength();
7411 len += mm_.packedLength();
7412 len += rt_.packedLength();
7413 len += mp_.packedLength();
7414 len += vt_.packedLength();
7415 len += vq_.packedLength();
7416 len += et_.packedLength();
7417 len += eq_.packedLength();
7418 len += tt_.packedLength();
7419 len += tq_.packedLength();
7420 len += qht_.packedLength();
7421 len += ddtt_.packedLength();
7422 len += mt_.packedLength();
7423 len += svt_.packedLength();
7424 len += stt_.packedLength();
7425 len += svq_.packedLength();
7426 len += stq_.packedLength();
7427 len += set_.packedLength();
7428 len += seq_.packedLength();
7429 len += idt_.packedLength();
7430 len += mi_.packedLength();
7431 len += tqm_.packedLength();
7432 len += fiqa_.packedLength();
7433 len += eit_.packedLength();
7435 for (
int i=0; i<ie_.linked_urr_id_count; i++)
7436 len += lui_[i].packedLength();
7437 for (
int i=0; i<ie_.aggregated_urrs_count; i++)
7438 len += aus_[i].packedLength();
7439 for (
int i=0; i<ie_.add_mntrng_time_count; i++)
7440 len += amt_[i].packedLength();
7472 inline DuplicatingParametersIE::DuplicatingParametersIE(pfcp_dupng_parms_ie_t &ie, LengthCalculator *parent)
7473 : IEHeader(ie.header, IE_DUPNG_PARMS, parent),
7475 di_(ie_.dst_intfc, this),
7476 ohc_(ie_.outer_hdr_creation, this),
7477 tlm_(ie_.trnspt_lvl_marking, this),
7478 fp_(ie_.frwdng_plcy, this)
7485 di_.packedLength() +
7486 ohc_.packedLength() +
7487 tlm_.packedLength() +
7548 inline ForwardingParametersIE::ForwardingParametersIE(pfcp_frwdng_parms_ie_t &ie, LengthCalculator *parent)
7549 : IEHeader(ie.header, IE_FRWDNG_PARMS, parent),
7551 di_(ie_.dst_intfc, this),
7552 ni_(ie_.ntwk_inst, this),
7553 ri_(ie_.redir_info, this),
7554 ohc_(ie_.outer_hdr_creation, this),
7555 tlm_(ie_.trnspt_lvl_marking, this),
7556 fp_(ie_.frwdng_plcy, this),
7557 he_(ie_.hdr_enrchmt, this),
7558 ltei_(ie_.lnkd_traffic_endpt_id, this),
7559 p_(ie_.proxying, this),
7560 dit_(ie_.dst_intfc_type, this)
7567 di_.packedLength() +
7568 ni_.packedLength() +
7569 ri_.packedLength() +
7570 ohc_.packedLength() +
7571 tlm_.packedLength() +
7572 fp_.packedLength() +
7573 he_.packedLength() +
7574 ltei_.packedLength() +
7576 dit_.packedLength();
7608 return (ie_.dupng_parms_count < MAX_LIST_SIZE) ?
7609 ie_.dupng_parms_count++ : -1;
7617 inline CreateFarIE::CreateFarIE(pfcp_create_far_ie_t &ie, LengthCalculator *parent)
7618 : IEHeader(ie.header, IE_CREATE_FAR, parent),
7620 fi_(ie_.far_id, this),
7621 aa_(ie_.apply_action, this),
7622 fp_(ie_.frwdng_parms, this),
7623 bi_(ie_.bar_id, this)
7625 for (
int i=0; i<MAX_LIST_SIZE; i++)
7626 dp_.push_back(DuplicatingParametersIE(ie_.dupng_parms[i],
this));
7633 len += fi_.packedLength();
7634 len += aa_.packedLength();
7635 len += fp_.packedLength();
7636 len += bi_.packedLength();
7638 for (
int i=0; i<ie_.dupng_parms_count; i++)
7639 len += dp_[i].packedLength();
7683 return (ie_.sdf_filter_count < MAX_LIST_SIZE) ?
7684 ie_.sdf_filter_count++ : -1;
7692 inline EthernetPacketFilterIE::EthernetPacketFilterIE(pfcp_eth_pckt_fltr_ie_t &ie, LengthCalculator *parent)
7693 : IEHeader(ie.header, IE_ETH_PCKT_FLTR, parent),
7695 efi_(ie_.eth_fltr_id, this),
7696 efp_(ie_.eth_fltr_props, this),
7697 ma_(ie_.mac_address, this),
7698 e_(ie_.ethertype, this),
7699 ctag_(ie_.ctag, this),
7700 stag_(ie_.
stag, this)
7702 for (
int i=0; i<MAX_LIST_SIZE; i++)
7703 sf_.push_back(SdfFilterIE(ie_.sdf_filter[i],
this));
7710 len += efi_.packedLength();
7711 len += efp_.packedLength();
7712 len += ma_.packedLength();
7713 len += e_.packedLength();
7714 len += ctag_.packedLength();
7715 len += stag_.packedLength();
7717 for (
int i=0; i<ie_.sdf_filter_count; i++)
7718 len += sf_[i].packedLength();
7797 return (ie_.sdf_filter_count < MAX_LIST_SIZE) ?
7798 ie_.sdf_filter_count++ : -1;
7803 return (ie_.eth_pckt_fltr_count < MAX_LIST_SIZE) ?
7804 ie_.eth_pckt_fltr_count++ : -1;
7809 return (ie_.qfi_count < MAX_LIST_SIZE) ?
7810 ie_.qfi_count++ : -1;
7815 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
7816 ie_.framed_route_count++ : -1;
7821 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
7822 ie_.frmd_ipv6_rte_count++ : -1;
7830 inline PdiIE::PdiIE(pfcp_pdi_ie_t &ie, LengthCalculator *parent)
7831 : IEHeader(ie.header, IE_PDI, parent),
7833 si_(ie_.src_intfc, this),
7834 lft_(ie_.local_fteid, this),
7835 ni_(ie_.ntwk_inst, this),
7836 uia_(ie_.ue_ip_address, this),
7837 tei_(ie_.traffic_endpt_id, this),
7838 ai_(ie_.application_id, this),
7839 epsi_(ie_.eth_pdu_sess_info, this),
7840 fring_(ie_.framed_routing, this),
7841 sit_(ie_.src_intrc_type, this)
7843 for (
int i=0; i<MAX_LIST_SIZE; i++)
7845 sf_.push_back(SdfFilterIE(ie_.sdf_filter[i],
this));
7846 epf_.push_back(EthernetPacketFilterIE(ie_.eth_pckt_fltr[i],
this));
7847 qfi_.push_back(QfiIE(ie_.qfi[i],
this));
7848 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
7849 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
7857 len += si_.packedLength();
7858 len += lft_.packedLength();
7859 len += ni_.packedLength();
7860 len += uia_.packedLength();
7861 len += tei_.packedLength();
7862 len += ai_.packedLength();
7863 len += epsi_.packedLength();
7864 len += fring_.packedLength();
7865 len += sit_.packedLength();
7867 for (
int i=0; i<ie_.sdf_filter_count; i++)
7868 len += sf_[i].packedLength();
7869 for (
int i=0; i<ie_.eth_pckt_fltr_count; i++)
7870 len += epf_[i].packedLength();
7871 for (
int i=0; i<ie_.qfi_count; i++)
7872 len += qfi_[i].packedLength();
7873 for (
int i=0; i<ie_.framed_route_count; i++)
7874 len += fr_[i].packedLength();
7875 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
7876 len += fr6_[i].packedLength();
7925 return (ie_.urr_id_count < MAX_LIST_SIZE) ?
7926 ie_.urr_id_count++ : -1;
7931 return (ie_.qer_id_count < MAX_LIST_SIZE) ?
7932 ie_.qer_id_count++ : -1;
7937 return (ie_.actvt_predef_rules_count < MAX_LIST_SIZE) ?
7938 ie_.actvt_predef_rules_count++ : -1;
7946 inline CreatePdrIE::CreatePdrIE(pfcp_create_pdr_ie_t &ie, LengthCalculator *parent)
7947 : IEHeader(ie.header, IE_CREATE_PDR, parent),
7949 pi_(ie_.pdr_id, this),
7950 p_(ie_.precedence, this),
7951 pdi_(ie_.pdi, this),
7952 ohr_(ie_.outer_hdr_removal, this),
7953 fi_(ie_.far_id, this)
7955 for (
int i=0; i<MAX_LIST_SIZE; i++)
7957 ui_.push_back(UrrIdIE(ie_.urr_id[i],
this));
7958 qi_.push_back(QerIdIE(ie_.qer_id[i],
this));
7959 apr_.push_back(ActivatePredefinedRulesIE(ie_.actvt_predef_rules[i],
this));
7967 len += pi_.packedLength();
7968 len += p_.packedLength();
7969 len += pdi_.packedLength();
7970 len += ohr_.packedLength();
7971 len += fi_.packedLength();
7973 for (
int i=0; i<ie_.urr_id_count; i++)
7974 len += ui_[i].packedLength();
7975 for (
int i=0; i<ie_.qer_id_count; i++)
7976 len += qi_[i].packedLength();
7977 for (
int i=0; i<ie_.actvt_predef_rules_count; i++)
7978 len += apr_[i].packedLength();
8000 inline CreatedTrafficEndpointIE::CreatedTrafficEndpointIE(pfcp_created_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8001 : IEHeader(ie.header, IE_CREATED_TRAFFIC_ENDPT, parent),
8003 tei_(ie_.traffic_endpt_id, this),
8004 lft_(ie_.local_fteid, this)
8011 tei_.packedLength() +
8012 lft_.packedLength();
8042 inline OverloadControlInformationIE::OverloadControlInformationIE(pfcp_ovrld_ctl_info_ie_t &ie, LengthCalculator *parent)
8043 : IEHeader(ie.header, IE_OVRLD_CTL_INFO, parent),
8045 ocsn_(ie_.ovrld_ctl_seqn_nbr, this),
8046 orm_(ie_.ovrld_reduction_metric, this),
8047 pov_(ie_.period_of_validity, this),
8048 ocif_(ie_.ovrld_ctl_info_flgs, this)
8055 ocsn_.packedLength() +
8056 orm_.packedLength() +
8057 pov_.packedLength() +
8058 ocif_.packedLength();
8078 inline LoadControlInformationIE::LoadControlInformationIE(pfcp_load_ctl_info_ie_t &ie, LengthCalculator *parent)
8079 : IEHeader(ie.header, IE_LOAD_CTL_INFO, parent),
8081 lcsn_(ie_.load_ctl_seqn_nbr, this),
8082 lm_(ie_.load_metric, this)
8089 lcsn_.packedLength() +
8110 inline CreatedPdrIE::CreatedPdrIE(pfcp_created_pdr_ie_t &ie, LengthCalculator *parent)
8111 : IEHeader(ie.header, IE_CREATED_PDR, parent),
8113 pi_(ie_.pdr_id, this),
8114 lft_(ie_.local_fteid, this)
8121 pi_.packedLength() +
8122 lft_.packedLength();
8134 return (ie_.rmt_gtpu_peer_count < MAX_LIST_SIZE) ?
8135 ie_.rmt_gtpu_peer_count++ : -1;
8143 inline UserPlanePathFailureReportIE::UserPlanePathFailureReportIE(pfcp_user_plane_path_fail_rpt_ie_t &ie, LengthCalculator *parent)
8144 : IEHeader(ie.header, IE_USER_PLANE_PATH_FAIL_RPT, parent),
8147 for (
int i=0; i<MAX_LIST_SIZE; i++)
8148 rgp_.push_back(RemoteGTPUPeerIE(ie_.rmt_gtpu_peer[i],
this));
8154 for (
int i=0; i<ie_.rmt_gtpu_peer_count; i++)
8155 len += rgp_[i].packedLength();
8171 inline RemoveTrafficEndpointIE::RemoveTrafficEndpointIE(pfcp_rmv_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8172 : IEHeader(ie.header, IE_RMV_TRAFFIC_ENDPT, parent),
8174 tei_(ie_.traffic_endpt_id, this)
8181 tei_.packedLength();
8223 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
8224 ie_.framed_route_count++ : -1;
8229 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
8230 ie_.frmd_ipv6_rte_count++ : -1;
8238 inline UpdateTrafficEndpointIE::UpdateTrafficEndpointIE(pfcp_upd_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8239 : IEHeader(ie.header, IE_UPD_TRAFFIC_ENDPT, parent),
8241 tei_(ie_.traffic_endpt_id, this),
8242 lft_(ie_.local_fteid, this),
8243 ni_(ie_.ntwk_inst, this),
8244 uia_(ie_.ue_ip_address, this),
8245 fring_(ie_.framed_routing, this)
8247 for (
int i=0; i<MAX_LIST_SIZE; i++)
8249 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
8250 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
8258 len += tei_.packedLength();
8259 len += lft_.packedLength();
8260 len += ni_.packedLength();
8261 len += uia_.packedLength();
8262 len += fring_.packedLength();
8264 for (
int i=0; i<ie_.framed_route_count; i++)
8265 len += fr_[i].packedLength();
8266 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
8267 len += fr6_[i].packedLength();
8284 inline RemoveBarIE::RemoveBarIE(pfcp_remove_bar_ie_t &ie, LengthCalculator *parent)
8285 : IEHeader(ie.header, IE_REMOVE_BAR, parent),
8287 bi_(ie_.bar_id, this)
8293 return bi_.packedLength();
8318 inline UpdateBarSessionModificationReqIE::UpdateBarSessionModificationReqIE(pfcp_upd_bar_sess_mod_req_ie_t &ie, LengthCalculator *parent)
8319 : IEHeader(ie.header, IE_UPD_BAR_SESS_MOD_REQ, parent),
8321 bi_(ie_.bar_id, this),
8322 ddnd_(ie_.dnlnk_data_notif_delay, this),
8323 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
8330 bi_.packedLength() +
8331 ddnd_.packedLength() +
8332 sbpc_.packedLength();
8347 inline QueryUrrIE::QueryUrrIE(pfcp_query_urr_ie_t &ie, LengthCalculator *parent)
8348 : IEHeader(ie.header, IE_QUERY_URR, parent),
8350 ui_(ie_.urr_id, this)
8356 return ui_.packedLength();
8371 inline RemoveQerIE::RemoveQerIE(pfcp_remove_qer_ie_t &ie, LengthCalculator *parent)
8372 : IEHeader(ie.header, IE_REMOVE_QER, parent),
8374 qi_(ie_.qer_id, this)
8380 return qi_.packedLength();
8395 inline RemoveUrrIE::RemoveUrrIE(pfcp_remove_urr_ie_t &ie, LengthCalculator *parent)
8396 : IEHeader(ie.header, IE_REMOVE_URR, parent),
8398 ui_(ie_.urr_id, this)
8404 return ui_.packedLength();
8419 inline RemoveFarIE::RemoveFarIE(pfcp_remove_far_ie_t &ie, LengthCalculator *parent)
8420 : IEHeader(ie.header, IE_REMOVE_FAR, parent),
8422 fi_(ie_.far_id, this)
8428 return fi_.packedLength();
8443 inline RemovePdrIE::RemovePdrIE(pfcp_remove_pdr_ie_t &ie, LengthCalculator *parent)
8444 : IEHeader(ie.header, IE_REMOVE_PDR, parent),
8446 pi_(ie_.pdr_id, this)
8452 return pi_.packedLength();
8517 inline UpdateQerIE::UpdateQerIE(pfcp_update_qer_ie_t &ie, LengthCalculator *parent)
8518 : IEHeader(ie.header, IE_UPDATE_QER, parent),
8520 qi_(ie_.qer_id, this),
8521 qci_(ie_.qer_corr_id, this),
8522 gs_(ie_.gate_status, this),
8523 mb_(ie_.maximum_bitrate, this),
8524 gb_(ie_.guaranteed_bitrate, this),
8525 pr(ie_.packet_rate, this),
8526 dflm_(ie_.dl_flow_lvl_marking, this),
8527 qfi_(ie_.qos_flow_ident, this),
8528 rqi_(ie_.reflective_qos, this),
8529 ppi_(ie_.paging_plcy_indctr, this),
8530 aw_(ie_.avgng_wnd, this)
8537 qi_.packedLength() +
8538 qci_.packedLength() +
8539 gs_.packedLength() +
8540 mb_.packedLength() +
8541 gb_.packedLength() +
8543 dflm_.packedLength() +
8544 qfi_.packedLength() +
8545 rqi_.packedLength() +
8546 ppi_.packedLength() +
8689 return (ie_.linked_urr_id_count < MAX_LIST_SIZE) ?
8690 ie_.linked_urr_id_count++ : -1;
8695 return (ie_.aggregated_urrs_count < MAX_LIST_SIZE) ?
8696 ie_.aggregated_urrs_count++ : -1;
8704 inline UpdateUrrIE::UpdateUrrIE(pfcp_update_urr_ie_t &ie, LengthCalculator *parent)
8705 : IEHeader(ie.header, IE_UPDATE_URR, parent),
8707 ui_(ie_.urr_id, this),
8708 mm_(ie_.meas_mthd, this),
8709 rt_(ie_.rptng_triggers, this),
8710 mp_(ie_.meas_period, this),
8711 vt_(ie_.vol_thresh, this),
8712 vq_(ie_.volume_quota, this),
8713 tt_(ie_.time_threshold, this),
8714 tq_(ie_.time_quota, this),
8715 et_(ie_.event_threshold, this),
8716 eq_(ie_.event_quota, this),
8717 qht_(ie_.quota_hldng_time, this),
8718 ddtt_(ie_.drpd_dl_traffic_thresh, this),
8719 mt_(ie_.monitoring_time, this),
8720 svt_(ie_.sbsqnt_vol_thresh, this),
8721 stt_(ie_.sbsqnt_time_thresh, this),
8722 svq_(ie_.sbsqnt_vol_quota, this),
8723 stq_(ie_.sbsqnt_time_quota, this),
8724 set_(ie_.sbsqnt_evnt_thresh, this),
8725 seq_(ie_.sbsqnt_evnt_quota, this),
8726 idt_(ie_.inact_det_time, this),
8727 mi_(ie_.meas_info, this),
8728 tqm_(ie_.time_quota_mech, this),
8729 fifqa_(ie_.far_id_for_quota_act, this),
8730 eit_(ie_.eth_inact_timer, this),
8731 amt_(ie_.add_mntrng_time, this)
8733 for (
int i=0; i<MAX_LIST_SIZE; i++)
8735 lui_.push_back(LinkedUrrIdIE(ie_.linked_urr_id[i],
this));
8736 au_.push_back(AggregatedUrrsIE(ie_.aggregated_urrs[i],
this));
8743 len += ui_.packedLength();
8744 len += mm_.packedLength();
8745 len += rt_.packedLength();
8746 len += mp_.packedLength();
8747 len += vt_.packedLength();
8748 len += vq_.packedLength();
8749 len += tt_.packedLength();
8750 len += tq_.packedLength();
8751 len += et_.packedLength();
8752 len += eq_.packedLength();
8753 len += qht_.packedLength();
8754 len += ddtt_.packedLength();
8755 len += mt_.packedLength();
8756 len += svt_.packedLength();
8757 len += stt_.packedLength();
8758 len += svq_.packedLength();
8759 len += stq_.packedLength();
8760 len += set_.packedLength();
8761 len += seq_.packedLength();
8762 len += idt_.packedLength();
8763 len += mi_.packedLength();
8764 len += tqm_.packedLength();
8765 len += fifqa_.packedLength();
8766 len += eit_.packedLength();
8767 len += amt_.packedLength();
8769 for (
int i=0; i<ie_.linked_urr_id_count; i++)
8770 len += lui_[i].packedLength();
8771 for (
int i=0; i<ie_.aggregated_urrs_count; i++)
8772 len += au_[i].packedLength();
8804 inline UpdateDuplicatingParametersIE::UpdateDuplicatingParametersIE(pfcp_upd_dupng_parms_ie_t &ie, LengthCalculator *parent)
8805 : IEHeader(ie.header, IE_UPD_DUPNG_PARMS, parent),
8807 di_(ie_.dst_intfc, this),
8808 ohc_(ie_.outer_hdr_creation, this),
8809 tlm_(ie_.trnspt_lvl_marking, this),
8810 fp_(ie_.frwdng_plcy, this)
8817 di_.packedLength() +
8818 ohc_.packedLength() +
8819 tlm_.packedLength() +
8880 inline UpdateForwardingParametersIE::UpdateForwardingParametersIE(pfcp_upd_frwdng_parms_ie_t &ie, LengthCalculator *parent)
8881 : IEHeader(ie.header, IE_UPD_FRWDNG_PARMS, parent),
8883 di_(ie_.dst_intfc, this),
8884 ni_(ie_.ntwk_inst, this),
8885 ri_(ie_.redir_info, this),
8886 ohc_(ie_.outer_hdr_creation, this),
8887 tlm_(ie_.trnspt_lvl_marking, this),
8888 fp_(ie_.frwdng_plcy, this),
8889 he_(ie_.hdr_enrchmt, this),
8890 f_(ie_.pfcpsmreq_flags, this),
8891 ltei_(ie_.lnkd_traffic_endpt_id, this),
8892 dit_(ie_.dst_intfc_type, this)
8899 di_.packedLength() +
8900 ni_.packedLength() +
8901 ri_.packedLength() +
8902 ohc_.packedLength() +
8903 tlm_.packedLength() +
8904 fp_.packedLength() +
8905 he_.packedLength() +
8907 ltei_.packedLength() +
8908 dit_.packedLength();
8940 return (ie_.upd_dupng_parms_count < MAX_LIST_SIZE) ?
8941 ie_.upd_dupng_parms_count++ : -1;
8949 inline UpdateFarIE::UpdateFarIE(pfcp_update_far_ie_t &ie, LengthCalculator *parent)
8950 : IEHeader(ie.header, IE_UPDATE_FAR, parent),
8952 fi_(ie_.far_id, this),
8953 aa_(ie_.apply_action, this),
8954 ufp_(ie_.upd_frwdng_parms, this),
8955 bi_(ie_.bar_id, this)
8957 for (
int i=0; i<MAX_LIST_SIZE; i++)
8958 udp_.push_back(UpdateDuplicatingParametersIE(ie_.upd_dupng_parms[i],
this));
8965 len += fi_.packedLength();
8966 len += aa_.packedLength();
8967 len += ufp_.packedLength();
8968 len += bi_.packedLength();
8970 for (
int i=0; i<ie_.upd_dupng_parms_count; i++)
8971 len += udp_[i].packedLength();
9025 return (ie_.actvt_predef_rules_count < MAX_LIST_SIZE) ?
9026 ie_.actvt_predef_rules_count++ : -1;
9031 return (ie_.deact_predef_rules_count < MAX_LIST_SIZE) ?
9032 ie_.deact_predef_rules_count++ : -1;
9040 inline UpdatePdrIE::UpdatePdrIE(pfcp_update_pdr_ie_t &ie, LengthCalculator *parent)
9041 : IEHeader(ie.header, IE_UPDATE_PDR, parent),
9043 pi_(ie_.pdr_id, this),
9044 ohr_(ie_.outer_hdr_removal, this),
9045 p_(ie_.precedence, this),
9046 pdi_(ie_.pdi, this),
9047 fi_(ie_.far_id, this),
9048 ui_(ie_.urr_id, this),
9049 qi_(ie_.qer_id, this)
9051 for (
int i=0; i<MAX_LIST_SIZE; i++)
9053 apr_.push_back(ActivatePredefinedRulesIE(ie_.actvt_predef_rules[i],
this));
9054 dpr_.push_back(DeactivatePredefinedRulesIE(ie_.deact_predef_rules[i],
this));
9062 len += pi_.packedLength();
9063 len += ohr_.packedLength();
9064 len += p_.packedLength();
9065 len += pdi_.packedLength();
9066 len += fi_.packedLength();
9067 len += ui_.packedLength();
9068 len += qi_.packedLength();
9070 for (
int i=0; i<ie_.actvt_predef_rules_count; i++)
9071 len += apr_[i].packedLength();
9072 for (
int i=0; i<ie_.deact_predef_rules_count; i++)
9073 len += dpr_[i].packedLength();
9095 inline EthernetTrafficInformationIE::EthernetTrafficInformationIE(pfcp_eth_traffic_info_ie_t &ie, LengthCalculator *parent)
9096 : IEHeader(ie.header, IE_ETH_TRAFFIC_INFO, parent),
9098 mad_(ie_.mac_addrs_detctd, this),
9099 mar_(ie_.mac_addrs_rmvd, this)
9106 mad_.packedLength() +
9107 mar_.packedLength();
9177 inline UsageReportSessionModificationRspIE::UsageReportSessionModificationRspIE(pfcp_usage_rpt_sess_mod_rsp_ie_t &ie, LengthCalculator *parent)
9178 : IEHeader(ie.header, IE_USAGE_RPT_SESS_MOD_RSP, parent),
9180 ui_(ie_.urr_id, this),
9181 us_(ie_.urseqn, this),
9182 urt_(ie_.usage_rpt_trig, this),
9183 st_(ie_.start_time, this),
9184 et_(ie_.end_time, this),
9185 vm_(ie_.vol_meas, this),
9186 dm_(ie_.dur_meas, this),
9187 tofp_(ie_.time_of_frst_pckt, this),
9188 tolp_(ie_.time_of_lst_pckt, this),
9189 uinfo_(ie_.usage_info, this),
9190 qur_(ie_.query_urr_ref, this),
9191 eti_(ie_.eth_traffic_info, this)
9198 ui_.packedLength() +
9199 us_.packedLength() +
9200 urt_.packedLength() +
9201 st_.packedLength() +
9202 et_.packedLength() +
9203 vm_.packedLength() +
9204 dm_.packedLength() +
9205 tofp_.packedLength() +
9206 tolp_.packedLength() +
9207 uinfo_.packedLength() +
9208 qur_.packedLength() +
9209 eti_.packedLength();
9274 inline UsageReportSessionDeletionRspIE::UsageReportSessionDeletionRspIE(pfcp_usage_rpt_sess_del_rsp_ie_t &ie, LengthCalculator *parent)
9275 : IEHeader(ie.header, IE_USAGE_RPT_SESS_DEL_RSP, parent),
9277 ui_(ie_.urr_id, this),
9278 us_(ie_.urseqn, this),
9279 urt_(ie_.usage_rpt_trig, this),
9280 st_(ie_.start_time, this),
9281 et_(ie_.end_time, this),
9282 vm_(ie_.vol_meas, this),
9283 dm_(ie_.dur_meas, this),
9284 tofp_(ie_.time_of_frst_pckt, this),
9285 tolp_(ie_.time_of_lst_pckt, this),
9286 uinfo_(ie_.usage_info, this),
9287 eti_(ie_.eth_traffic_info, this)
9294 ui_.packedLength() +
9295 us_.packedLength() +
9296 urt_.packedLength() +
9297 st_.packedLength() +
9298 et_.packedLength() +
9299 vm_.packedLength() +
9300 dm_.packedLength() +
9301 tofp_.packedLength() +
9302 tolp_.packedLength() +
9303 uinfo_.packedLength() +
9304 eti_.packedLength();
9316 return (ie_.remote_fteid_count < MAX_LIST_SIZE) ?
9317 ie_.remote_fteid_count++ : -1;
9325 inline ErrorIndicationReportIE::ErrorIndicationReportIE(pfcp_err_indctn_rpt_ie_t &ie, LengthCalculator *parent)
9326 : IEHeader(ie.header, IE_ERR_INDCTN_RPT, parent),
9329 for (
int i=0; i<MAX_LIST_SIZE; i++)
9330 rft_.push_back(FTeidIE(ie_.remote_fteid[i],
this));
9336 for (
int i=0; i<ie_.remote_fteid_count; i++)
9337 len += rft_[i].packedLength();
9363 inline ApplicationDetectionInformationIE::ApplicationDetectionInformationIE(pfcp_app_det_info_ie_t &ie, LengthCalculator *parent)
9364 : IEHeader(ie.header, IE_APP_DET_INFO, parent),
9366 ai_(ie_.application_id, this),
9367 aii_(ie_.app_inst_id, this),
9368 fi_(ie_.flow_info, this)
9375 ai_.packedLength() +
9376 aii_.packedLength() +
9465 return (ie_.evnt_time_stmp_count < MAX_LIST_SIZE) ?
9466 ie_.evnt_time_stmp_count++ : -1;
9474 inline UsageReportSessionReportReqIE::UsageReportSessionReportReqIE(pfcp_usage_rpt_sess_rpt_req_ie_t &ie, LengthCalculator *parent)
9475 : IEHeader(ie.header, IE_USAGE_RPT_SESS_RPT_REQ, parent),
9477 ui_(ie_.urr_id, this),
9478 us_(ie_.urseqn, this),
9479 urt_(ie_.usage_rpt_trig, this),
9480 st_(ie_.start_time, this),
9481 et_(ie_.end_time, this),
9482 vm_(ie_.vol_meas, this),
9483 dm_(ie_.dur_meas, this),
9484 adi_(ie_.app_det_info, this),
9485 uia_(ie_.ue_ip_address, this),
9486 ni_(ie_.ntwk_inst, this),
9487 tofp_(ie_.time_of_frst_pckt, this),
9488 tolp_(ie_.time_of_lst_pckt, this),
9489 uinfo_(ie_.usage_info, this),
9490 qur_(ie_.query_urr_ref, this),
9491 eti_(ie_.eth_traffic_info, this)
9493 for (
int i=0; i<MAX_LIST_SIZE; i++)
9494 ets_.push_back(EventTimeStampIE(ie_.evnt_time_stmp[i],
this));
9501 len += ui_.packedLength();
9502 len += us_.packedLength();
9503 len += urt_.packedLength();
9504 len += st_.packedLength();
9505 len += et_.packedLength();
9506 len += vm_.packedLength();
9507 len += dm_.packedLength();
9508 len += adi_.packedLength();
9509 len += uia_.packedLength();
9510 len += ni_.packedLength();
9511 len += tofp_.packedLength();
9512 len += tolp_.packedLength();
9513 len += uinfo_.packedLength();
9514 len += qur_.packedLength();
9515 len += eti_.packedLength();
9517 for (
int i=0; i<ie_.evnt_time_stmp_count; i++)
9518 len += ets_[i].packedLength();
9537 return (ie_.pdr_id_count < MAX_LIST_SIZE) ?
9538 ie_.pdr_id_count++ : -1;
9543 return (ie_.dnlnk_data_svc_info_count < MAX_LIST_SIZE) ?
9544 ie_.dnlnk_data_svc_info_count++ : -1;
9552 inline DownlinkDataReportIE::DownlinkDataReportIE(pfcp_dnlnk_data_rpt_ie_t &ie, LengthCalculator *parent)
9553 : IEHeader(ie.header, IE_DNLNK_DATA_RPT, parent),
9556 for (
int i=0; i<MAX_LIST_SIZE; i++)
9558 pi_.push_back(PdrIdIE(ie_.pdr_id[i],
this));
9559 ddsi_.push_back(DownlinkDataServiceInformationIE(ie_.dnlnk_data_svc_info[i],
this));
9567 for (
int i=0; i<ie_.pdr_id_count; i++)
9568 len += pi_[i].packedLength();
9569 for (
int i=0; i<ie_.dnlnk_data_svc_info_count; i++)
9570 len += ddsi_[i].packedLength();
9607 inline UpdateBarSessionReportRspIE::UpdateBarSessionReportRspIE(pfcp_upd_bar_sess_rpt_rsp_ie_t &ie, LengthCalculator *parent)
9608 : IEHeader(ie.header, IE_UPD_BAR_SESS_RPT_RSP, parent),
9610 bi_(ie_.bar_id, this),
9611 ddnd_(ie_.dnlnk_data_notif_delay, this),
9612 dbd_(ie_.dl_buf_dur, this),
9613 dbspc_(ie_.dl_buf_suggstd_pckt_cnt, this),
9614 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
9621 bi_.packedLength() +
9622 ddnd_.packedLength() +
9623 dbd_.packedLength() +
9624 dbspc_.packedLength() +
9625 sbpc_.packedLength();
9633 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9636 setMsgType(PFCP_HRTBEAT_REQ);
9637 data_.header.message_type = msgType();
9638 data_.header.version = 1;
9643 return data_.header.message_len;
9648 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9649 new (&(
reinterpret_cast<_HeartbeatReq*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9650 return (reinterpret_cast<_HeartbeatReq*>(iebuffer_))->rts_;
9655 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9656 UShort len = encode_pfcp_hrtbeat_req_t(&data_, dest);
9657 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9658 data_.header.message_len = len;
9659 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9670 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9678 setMsgType(PFCP_HRTBEAT_RSP);
9679 data_.header.message_type = msgType();
9680 data_.header.version = 1;
9685 return data_.header.message_len;
9690 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9691 new (&(
reinterpret_cast<_HeartbeatRsp*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9692 return (reinterpret_cast<_HeartbeatRsp*>(iebuffer_))->rts_;
9697 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9698 UShort len = encode_pfcp_hrtbeat_rsp_t(&data_, dest);
9699 data_.header.message_len = len;
9700 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9711 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9717 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9720 setMsgType(PFCP_PFD_MGMT_REQ);
9721 data_.header.message_type = msgType();
9722 data_.header.version = 1;
9723 for (
int i=0; i<MAX_LIST_SIZE; i++)
9724 appids_.push_back(ApplicationIdsPfdsIE(data_.app_ids_pfds[i],NULL));
9729 return data_.header.message_len;
9734 if (idx >= appids_.size())
9736 for (
auto i = appids_.size(); i < static_cast<size_t>(idx)+1; i++)
9737 appids_.push_back(ApplicationIdsPfdsIE(data_.app_ids_pfds[i],
nullptr));
9739 return appids_[idx];
9744 return (data_.app_ids_pfds_count < MAX_LIST_SIZE) ?
9745 data_.app_ids_pfds_count++ : -1;
9750 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9751 UShort len = encode_pfcp_pfd_mgmt_req_t(&data_, dest);
9752 data_.header.message_len = len;
9753 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9764 for (
int i=0; i<MAX_LIST_SIZE; i++)
9766 if (data_.app_ids_pfds[i].header.len > 0)
9768 next_app_ids_pfds();
9779 setMsgType(PFCP_PFD_MGMT_RSP);
9780 data_.header.message_type = msgType();
9781 data_.header.version = 1;
9786 return data_.header.message_len;
9791 if (forceInit || data_.cause.header.type == 0)
9792 new (&(
reinterpret_cast<_PfdMgmtRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
9793 return (reinterpret_cast<_PfdMgmtRsp*>(iebuffer_))->c_;
9798 if (forceInit || data_.offending_ie.header.type == 0)
9799 new (&(
reinterpret_cast<_PfdMgmtRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
9800 return (reinterpret_cast<_PfdMgmtRsp*>(iebuffer_))->oi_;
9805 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9806 uint16_t len = encode_pfcp_pfd_mgmt_rsp_t(&data_, dest);
9807 data_.header.message_len = len;
9808 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9819 if (data_.cause.header.len > 0) cause(
True);
9820 if (data_.offending_ie.header.len > 0) offending_ie(
True);
9826 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9829 setMsgType(PFCP_ASSN_SETUP_REQ);
9830 data_.header.message_type = msgType();
9831 data_.header.version = 1;
9836 return data_.header.message_len;
9841 if (forceInit || data_.node_id.header.type == 0)
9842 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
9843 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->ni_;
9848 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9849 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9850 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->rts_;
9855 if (forceInit || data_.up_func_feat.header.type == 0)
9856 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
9857 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->uff_;
9862 if (forceInit || data_.cp_func_feat.header.type == 0)
9863 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
9864 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->cff_;
9869 if (idx >= upiri_.size())
9871 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
9872 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
9879 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
9880 data_.user_plane_ip_rsrc_info_count++ : -1;
9885 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9886 uint16_t len = encode_pfcp_assn_setup_req_t(&data_, dest);
9887 data_.header.message_len = len;
9888 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9899 if (data_.node_id.header.len > 0) node_id(
True);
9900 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9901 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
9902 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
9904 for (
int i=0; i<MAX_LIST_SIZE; i++)
9906 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
9915 setMsgType(PFCP_ASSN_SETUP_RSP);
9916 data_.header.message_type = msgType();
9917 data_.header.version = 1;
9922 return data_.header.message_len;
9927 if (forceInit || data_.node_id.header.type == 0)
9928 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
9929 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->ni_;
9934 if (forceInit || data_.cause.header.type == 0)
9935 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
9936 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->c_;
9941 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9942 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9943 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->rts_;
9948 if (forceInit || data_.up_func_feat.header.type == 0)
9949 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
9950 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->uff_;
9955 if (forceInit || data_.cp_func_feat.header.type == 0)
9956 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
9957 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->cff_;
9962 if (idx >= upiri_.size())
9964 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
9965 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
9972 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
9973 data_.user_plane_ip_rsrc_info_count++ : -1;
9978 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9979 uint16_t len = encode_pfcp_assn_setup_rsp_t(&data_, dest);
9980 data_.header.message_len = len;
9981 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9992 if (data_.node_id.header.len > 0) node_id(
True);
9993 if (data_.cause.header.len > 0) cause(
True);
9994 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9995 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
9996 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
9998 for (
int i=0; i<MAX_LIST_SIZE; i++)
10000 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
10007 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10010 setMsgType(PFCP_ASSN_UPD_REQ);
10011 data_.header.message_type = msgType();
10012 data_.header.version = 1;
10017 return data_.header.message_len;
10022 if (forceInit || data_.node_id.header.type == 0)
10023 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10024 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->ni_;
10029 if (forceInit || data_.up_func_feat.header.type == 0)
10030 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
10031 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->uff_;
10036 if (forceInit || data_.cp_func_feat.header.type == 0)
10037 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
10038 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->cff_;
10043 if (forceInit || data_.up_assn_rel_req.header.type == 0)
10044 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->arr_) AssociationReleaseRequestIE(data_.up_assn_rel_req,
nullptr);
10045 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->arr_;
10050 if (forceInit || data_.graceful_rel_period.header.type == 0)
10051 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->grp_) GracefulReleasePeriodIE(data_.graceful_rel_period,
nullptr);
10052 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->grp_;
10057 if (idx >= upiri_.size())
10059 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
10060 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
10062 return upiri_[idx];
10067 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
10068 data_.user_plane_ip_rsrc_info_count++ : -1;
10073 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10074 uint16_t len = encode_pfcp_assn_upd_req_t(&data_, dest);
10075 data_.header.message_len = len;
10076 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10087 if (data_.node_id.header.len > 0) node_id(
True);
10088 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
10089 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
10090 if (data_.up_assn_rel_req.header.len > 0) up_assn_rel_req(
True);
10091 if (data_.graceful_rel_period.header.len > 0) graceful_rel_period(
True);
10093 for (
int i=0; i<MAX_LIST_SIZE; i++)
10095 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
10104 setMsgType(PFCP_ASSN_UPD_RSP);
10105 data_.header.message_type = msgType();
10106 data_.header.version = 1;
10111 return data_.header.message_len;
10116 if (forceInit || data_.node_id.header.type == 0)
10117 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10118 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->ni_;
10123 if (forceInit || data_.cause.header.type == 0)
10124 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10125 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->c_;
10130 if (forceInit || data_.up_func_feat.header.type == 0)
10131 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
10132 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->uff_;
10137 if (forceInit || data_.cp_func_feat.header.type == 0)
10138 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
10139 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->cff_;
10144 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10145 uint16_t len = encode_pfcp_assn_upd_rsp_t(&data_, dest);
10146 data_.header.message_len = len;
10147 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10158 if (data_.node_id.header.len > 0) node_id(
True);
10159 if (data_.cause.header.len > 0) cause(
True);
10160 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
10161 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
10167 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10170 setMsgType(PFCP_ASSN_REL_REQ);
10171 data_.header.message_type = msgType();
10172 data_.header.version = 1;
10177 return data_.header.message_len;
10182 if (forceInit || data_.node_id.header.type == 0)
10183 new (&(
reinterpret_cast<_AssnReleaseReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10184 return (reinterpret_cast<_AssnReleaseReq*>(iebuffer_))->ni_;
10189 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10190 uint16_t len = encode_pfcp_assn_rel_req_t(&data_, dest);
10191 data_.header.message_len = len;
10192 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10203 if (data_.node_id.header.len > 0) node_id(
True);
10211 setMsgType(PFCP_ASSN_REL_RSP);
10212 data_.header.message_type = msgType();
10213 data_.header.version = 1;
10218 return data_.header.message_len;
10223 if (forceInit || data_.node_id.header.type == 0)
10224 new (&(
reinterpret_cast<_AssnReleaseRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10225 return (reinterpret_cast<_AssnReleaseRsp*>(iebuffer_))->ni_;
10230 if (forceInit || data_.cause.header.type == 0)
10231 new (&(
reinterpret_cast<_AssnReleaseRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10232 return (reinterpret_cast<_AssnReleaseRsp*>(iebuffer_))->c_;
10237 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10238 uint16_t len = encode_pfcp_assn_rel_rsp_t(&data_, dest);
10239 data_.header.message_len = len;
10240 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10251 if (data_.node_id.header.len > 0) node_id(
True);
10252 if (data_.cause.header.len > 0) cause(
True);
10261 data_.message_type = msgType();
10267 return data_.message_len;
10272 data_.seid_seqno.no_seid.seq_no = 0;
10273 uint16_t len = encode_pfcp_header_t(&data_, dest);
10274 data_.message_len = len;
10275 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.message_len - 4);
10287 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10290 setMsgType(PFCP_NODE_RPT_REQ);
10291 data_.header.message_type = msgType();
10292 data_.header.version = 1;
10297 return data_.header.message_len;
10302 if (forceInit || data_.node_id.header.type == 0)
10303 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10304 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->ni_;
10309 if (forceInit || data_.node_rpt_type.header.type == 0)
10310 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->nrt_) NodeReportTypeIE(data_.node_rpt_type,
nullptr);
10311 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->nrt_;
10316 if (forceInit || data_.user_plane_path_fail_rpt.header.type == 0)
10317 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->uprfr_) UserPlanePathFailureReportIE(data_.user_plane_path_fail_rpt,
nullptr);
10318 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->uprfr_;
10323 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10324 uint16_t len = encode_pfcp_node_rpt_req_t(&data_, dest);
10325 data_.header.message_len = len;
10326 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10337 if (data_.node_id.header.len > 0) node_id(
True);
10338 if (data_.node_rpt_type.header.len > 0) node_rpt_type(
True);
10339 if (data_.user_plane_path_fail_rpt.header.len > 0) user_plane_path_fail_rpt(
True);
10347 setMsgType(PFCP_NODE_RPT_RSP);
10348 data_.header.message_type = msgType();
10349 data_.header.version = 1;
10354 return data_.header.message_len;
10359 if (forceInit || data_.node_id.header.type == 0)
10360 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10361 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->ni_;
10366 if (forceInit || data_.cause.header.type == 0)
10367 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10368 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->c_;
10373 if (forceInit || data_.offending_ie.header.type == 0)
10374 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10375 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->oi_;
10380 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10381 uint16_t len = encode_pfcp_node_rpt_rsp_t(&data_, dest);
10382 data_.header.message_len = len;
10383 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10394 if (data_.node_id.header.len > 0) node_id(
True);
10395 if (data_.cause.header.len > 0) cause(
True);
10396 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10402 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10405 setMsgType(PFCP_SESS_SET_DEL_REQ);
10406 data_.header.message_type = msgType();
10407 data_.header.version = 1;
10412 return data_.header.message_len;
10417 if (forceInit || data_.node_id.header.type == 0)
10418 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10419 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->ni_;
10424 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10425 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->sc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10426 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->sc_;
10431 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10432 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->pc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10433 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->pc_;
10438 if (forceInit || data_.up_fqcsid.header.type == 0)
10439 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->u_) FqCsidIE(data_.up_fqcsid,
nullptr);
10440 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->u_;
10445 if (forceInit || data_.twan_fqcsid.header.type == 0)
10446 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->t_) FqCsidIE(data_.twan_fqcsid,
nullptr);
10447 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->t_;
10452 if (forceInit || data_.epdg_fqcsid.header.type == 0)
10453 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->e_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
10454 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->e_;
10459 if (forceInit || data_.mme_fqcsid.header.type == 0)
10460 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->m_) FqCsidIE(data_.mme_fqcsid,
nullptr);
10461 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->m_;
10466 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10467 uint16_t len = encode_pfcp_sess_set_del_req_t(&data_, dest);
10468 data_.header.message_len = len;
10469 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10480 if (data_.node_id.header.len > 0) node_id(
True);
10481 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
10482 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
10483 if (data_.up_fqcsid.header.len > 0) up_fqcsid(
True);
10484 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
10485 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
10486 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
10494 setMsgType(PFCP_SESS_SET_DEL_RSP);
10495 data_.header.message_type = msgType();
10496 data_.header.version = 1;
10501 return data_.header.message_len;
10506 if (forceInit || data_.node_id.header.type == 0)
10507 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10508 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->ni_;
10513 if (forceInit || data_.cause.header.type == 0)
10514 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10515 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->c_;
10520 if (forceInit || data_.offending_ie.header.type == 0)
10521 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10522 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->oi_;
10527 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10528 uint16_t len = encode_pfcp_sess_set_del_rsp_t(&data_, dest);
10529 data_.header.message_len = len;
10530 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10541 if (data_.node_id.header.len > 0) node_id(
True);
10542 if (data_.cause.header.len > 0) cause(
True);
10543 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10549 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
10552 setMsgType(PFCP_SESS_ESTAB_REQ);
10553 data_.header.message_type = msgType();
10554 data_.header.version = 1;
10555 data_.header.s = 1;
10560 return data_.header.message_len;
10565 if (forceInit || data_.node_id.header.type == 0)
10566 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10567 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ni_;
10572 if (forceInit || data_.cp_fseid.header.type == 0)
10573 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->cpf_) FSeidIE(data_.cp_fseid,
nullptr);
10574 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->cpf_;
10579 if (forceInit || data_.create_bar.header.type == 0)
10580 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->cb_) CreateBarIE(data_.create_bar,
nullptr);
10581 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->cb_;
10586 if (forceInit || data_.pdn_type.header.type == 0)
10587 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->pt_) PdnTypeIE(data_.pdn_type,
nullptr);
10588 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->pt_;
10593 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10594 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->sfc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10595 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->sfc_;
10600 if (forceInit || data_.mme_fqcsid.header.type == 0)
10601 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->mfc_) FqCsidIE(data_.mme_fqcsid,
nullptr);
10602 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->mfc_;
10607 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10608 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->pfc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10609 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->pfc_;
10614 if (forceInit || data_.epdg_fqcsid.header.type == 0)
10615 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->efc_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
10616 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->efc_;
10621 if (forceInit || data_.twan_fqcsid.header.type == 0)
10622 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->tfc_) FqCsidIE(data_.twan_fqcsid,
nullptr);
10623 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->tfc_;
10628 if (forceInit || data_.user_plane_inact_timer.header.type == 0)
10629 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->upit_) UserPlaneInactivityTimerIE(data_.user_plane_inact_timer,
nullptr);
10630 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->upit_;
10635 if (forceInit || data_.user_id.header.type == 0)
10636 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ui_) UserIdIE(data_.user_id,
nullptr);
10637 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ui_;
10642 if (forceInit || data_.trc_info.header.type == 0)
10643 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ti_) TraceInformationIE(data_.trc_info,
nullptr);
10644 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ti_;
10649 if (forceInit || data_.apn_dnn.header.type == 0)
10650 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ad_) ApnDnnIE(data_.apn_dnn,
nullptr);
10651 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ad_;
10656 if (idx >= cp_.size())
10658 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
10659 cp_.push_back(CreatePdrIE(data_.create_pdr[i],
nullptr));
10666 if (idx >= cf_.size())
10668 for (
auto i = cf_.size(); i < static_cast<size_t>(idx)+1; i++)
10669 cf_.push_back(CreateFarIE(data_.create_far[i],
nullptr));
10676 if (idx >= cu_.size())
10678 for (
auto i = cu_.size(); i < static_cast<size_t>(idx)+1; i++)
10679 cu_.push_back(CreateUrrIE(data_.create_urr[i],
nullptr));
10686 if (idx >= cq_.size())
10688 for (
auto i = cq_.size(); i < static_cast<size_t>(idx)+1; i++)
10689 cq_.push_back(CreateQerIE(data_.create_qer[i],
nullptr));
10696 if (idx >= cte_.size())
10698 for (
auto i = cte_.size(); i < static_cast<size_t>(idx)+1; i++)
10699 cte_.push_back(CreateTrafficEndpointIE(data_.create_traffic_endpt[i],
nullptr));
10706 return (data_.create_pdr_count < MAX_LIST_SIZE) ?
10707 data_.create_pdr_count++ : -1;
10712 return (data_.create_far_count < MAX_LIST_SIZE) ?
10713 data_.create_far_count++ : -1;
10718 return (data_.create_urr_count < MAX_LIST_SIZE) ?
10719 data_.create_urr_count++ : -1;
10724 return (data_.create_qer_count < MAX_LIST_SIZE) ?
10725 data_.create_qer_count++ : -1;
10730 return (data_.create_traffic_endpt_count < MAX_LIST_SIZE) ?
10731 data_.create_traffic_endpt_count++ : -1;
10736 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
10737 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
10738 UShort len = encode_pfcp_sess_estab_req_t(&data_, dest);
10739 data_.header.message_len = len;
10740 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10751 if (data_.node_id.header.len > 0) node_id(
True);
10752 if (data_.cp_fseid.header.len > 0) cp_fseid(
True);
10753 if (data_.create_bar.header.len > 0) create_bar(
True);
10754 if (data_.pdn_type.header.len > 0) pdn_type(
True);
10755 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
10756 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
10757 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
10758 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
10759 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
10760 if (data_.user_plane_inact_timer.header.len > 0) user_plane_inact_timer(
True);
10761 if (data_.user_id.header.len > 0) user_id(
True);
10762 if (data_.trc_info.header.len > 0) trc_info(
True);
10763 if (data_.apn_dnn.header.len > 0) apn_dnn(
True);
10780 setMsgType(PFCP_SESS_ESTAB_RSP);
10781 data_.header.message_type = msgType();
10782 data_.header.version = 1;
10783 data_.header.s = 1;
10788 return data_.header.message_len;
10793 if (forceInit || data_.node_id.header.type == 0)
10794 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10795 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ni_;
10800 if (forceInit || data_.cause.header.type == 0)
10801 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10802 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->c_;
10807 if (forceInit || data_.offending_ie.header.type == 0)
10808 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10809 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->oi_;
10814 if (forceInit || data_.up_fseid.header.type == 0)
10815 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ufs_) FSeidIE(data_.up_fseid,
nullptr);
10816 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ufs_;
10821 if (forceInit || data_.load_ctl_info.header.type == 0)
10822 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
10823 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->lci_;
10828 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
10829 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
10830 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->oci_;
10835 if (forceInit || data_.up_fqcsid.header.type == 0)
10836 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ufc_) FqCsidIE(data_.up_fqcsid,
nullptr);
10837 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ufc_;
10842 if (forceInit || data_.failed_rule_id.header.type == 0)
10843 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->fri_) FailedRuleIdIE(data_.failed_rule_id,
nullptr);
10844 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->fri_;
10849 if (idx >= cp_.size())
10851 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
10852 cp_.push_back(CreatedPdrIE(data_.created_pdr[i],
nullptr));
10859 if (idx >= cte_.size())
10861 for (
auto i = cte_.size(); i < static_cast<size_t>(idx)+1; i++)
10862 cte_.push_back(CreatedTrafficEndpointIE(data_.created_traffic_endpt[i],
nullptr));
10869 return (data_.created_pdr_count < MAX_LIST_SIZE) ?
10870 data_.created_pdr_count++ : -1;
10875 return (data_.created_traffic_endpt_count < MAX_LIST_SIZE) ?
10876 data_.created_traffic_endpt_count++ : -1;
10881 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
10882 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
10883 uint16_t len = encode_pfcp_sess_estab_rsp_t(&data_, dest);
10884 data_.header.message_len = len;
10885 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10896 if (data_.node_id.header.len > 0) node_id(
True);
10897 if (data_.cause.header.len > 0) cause(
True);
10898 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10899 if (data_.up_fseid.header.len > 0) up_fseid(
True);
10900 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
10901 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
10902 if (data_.up_fqcsid.header.len > 0) up_fqcsid(
True);
10903 if (data_.failed_rule_id.header.len > 0) failed_rule_id(
True);
10905 for (
int i=0; i<MAX_LIST_SIZE; i++)
10907 if (data_.created_pdr[i].header.len > 0) { next_created_pdr(); created_pdr(i); }
10908 if (data_.created_traffic_endpt[i].header.len > 0) { next_created_traffic_endpt(); created_traffic_endpt(i); }
10915 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
10918 setMsgType(PFCP_SESS_MOD_REQ);
10919 data_.header.message_type = msgType();
10920 data_.header.version = 1;
10921 data_.header.s = 1;
10926 return data_.header.message_len;
10931 if (forceInit || data_.cp_fseid.header.type == 0)
10932 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cfs_) FSeidIE(data_.cp_fseid,
nullptr);
10933 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cfs_;
10938 if (forceInit || data_.remove_bar.header.type == 0)
10939 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->rb_) RemoveBarIE(data_.remove_bar,
nullptr);
10940 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->rb_;
10945 if (forceInit || data_.rmv_traffic_endpt.header.type == 0)
10946 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->rte_) RemoveTrafficEndpointIE(data_.rmv_traffic_endpt,
nullptr);
10947 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->rte_;
10952 if (forceInit || data_.create_bar.header.type == 0)
10953 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cb_) CreateBarIE(data_.create_bar,
nullptr);
10954 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cb_;
10959 if (forceInit || data_.create_traffic_endpt.header.type == 0)
10960 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cte_) CreateTrafficEndpointIE(data_.create_traffic_endpt,
nullptr);
10961 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cte_;
10966 if (forceInit || data_.update_bar.header.type == 0)
10967 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ub_) UpdateBarSessionModificationReqIE(data_.update_bar,
nullptr);
10968 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ub_;
10973 if (forceInit || data_.upd_traffic_endpt.header.type == 0)
10974 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ute_) UpdateTrafficEndpointIE(data_.upd_traffic_endpt,
nullptr);
10975 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ute_;
10980 if (forceInit || data_.pfcpsmreq_flags.header.type == 0)
10981 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->f_) PfcpSmReqFlagsIE(data_.pfcpsmreq_flags,
nullptr);
10982 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->f_;
10987 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10988 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->pcfc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10989 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->pcfc_;
10994 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10995 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->scfc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10996 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->scfc_;
11001 if (forceInit || data_.mme_fqcsid.header.type == 0)
11002 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->mfc_) FqCsidIE(data_.mme_fqcsid,
nullptr);
11003 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->mfc_;
11008 if (forceInit || data_.epdg_fqcsid.header.type == 0)
11009 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->efc_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
11010 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->efc_;
11015 if (forceInit || data_.twan_fqcsid.header.type == 0)
11016 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->tfc_) FqCsidIE(data_.twan_fqcsid,
nullptr);
11017 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->tfc_;
11022 if (forceInit || data_.user_plane_inact_timer.header.type == 0)
11023 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->upit_) UserPlaneInactivityTimerIE(data_.user_plane_inact_timer,
nullptr);
11024 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->upit_;
11029 if (forceInit || data_.query_urr_ref.header.type == 0)
11030 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->qur_) QueryUrrReferenceIE(data_.query_urr_ref,
nullptr);
11031 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->qur_;
11036 if (forceInit || data_.trc_info.header.type == 0)
11037 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ti_) TraceInformationIE(data_.trc_info,
nullptr);
11038 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ti_;
11043 if (idx >= rp_.size())
11045 for (
auto i = rp_.size(); i < static_cast<size_t>(idx)+1; i++)
11046 rp_.push_back(RemovePdrIE(data_.remove_pdr[i],
nullptr));
11053 if (idx >= rf_.size())
11055 for (
auto i = rf_.size(); i < static_cast<size_t>(idx)+1; i++)
11056 rf_.push_back(RemoveFarIE(data_.remove_far[i],
nullptr));
11063 if (idx >= ru_.size())
11065 for (
auto i = ru_.size(); i < static_cast<size_t>(idx)+1; i++)
11066 ru_.push_back(RemoveUrrIE(data_.remove_urr[i],
nullptr));
11073 if (idx >= rq_.size())
11075 for (
auto i = rq_.size(); i < static_cast<size_t>(idx)+1; i++)
11076 rq_.push_back(RemoveQerIE(data_.remove_qer[i],
nullptr));
11083 if (idx >= cp_.size())
11085 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
11086 cp_.push_back(CreatePdrIE(data_.create_pdr[i],
nullptr));
11093 if (idx >= cf_.size())
11095 for (
auto i = cf_.size(); i < static_cast<size_t>(idx)+1; i++)
11096 cf_.push_back(CreateFarIE(data_.create_far[i],
nullptr));
11103 if (idx >= cu_.size())
11105 for (
auto i = cu_.size(); i < static_cast<size_t>(idx)+1; i++)
11106 cu_.push_back(CreateUrrIE(data_.create_urr[i],
nullptr));
11113 if (idx >= cq_.size())
11115 for (
auto i = cq_.size(); i < static_cast<size_t>(idx)+1; i++)
11116 cq_.push_back(CreateQerIE(data_.create_qer[i],
nullptr));
11123 if (idx >= up_.size())
11125 for (
auto i = up_.size(); i < static_cast<size_t>(idx)+1; i++)
11126 up_.push_back(UpdatePdrIE(data_.update_pdr[i],
nullptr));
11133 if (idx >= uf_.size())
11135 for (
auto i = uf_.size(); i < static_cast<size_t>(idx)+1; i++)
11136 uf_.push_back(UpdateFarIE(data_.update_far[i],
nullptr));
11143 if (idx >= uu_.size())
11145 for (
auto i = uu_.size(); i < static_cast<size_t>(idx)+1; i++)
11146 uu_.push_back(UpdateUrrIE(data_.update_urr[i],
nullptr));
11153 if (idx >= uq_.size())
11155 for (
auto i = uq_.size(); i < static_cast<size_t>(idx)+1; i++)
11156 uq_.push_back(UpdateQerIE(data_.update_qer[i],
nullptr));
11163 if (idx >= qu_.size())
11165 for (
auto i = qu_.size(); i < static_cast<size_t>(idx)+1; i++)
11166 qu_.push_back(QueryUrrIE(data_.query_urr[i],
nullptr));
11173 return (data_.remove_pdr_count < MAX_LIST_SIZE) ?
11174 data_.remove_pdr_count++ : -1;
11179 return (data_.remove_far_count < MAX_LIST_SIZE) ?
11180 data_.remove_far_count++ : -1;
11185 return (data_.remove_urr_count < MAX_LIST_SIZE) ?
11186 data_.remove_urr_count++ : -1;
11191 return (data_.remove_qer_count < MAX_LIST_SIZE) ?
11192 data_.remove_qer_count++ : -1;
11197 return (data_.create_pdr_count < MAX_LIST_SIZE) ?
11198 data_.create_pdr_count++ : -1;
11203 return (data_.create_far_count < MAX_LIST_SIZE) ?
11204 data_.create_far_count++ : -1;
11209 return (data_.create_urr_count < MAX_LIST_SIZE) ?
11210 data_.create_urr_count++ : -1;
11215 return (data_.create_qer_count < MAX_LIST_SIZE) ?
11216 data_.create_qer_count++ : -1;
11221 return (data_.update_pdr_count < MAX_LIST_SIZE) ?
11222 data_.update_pdr_count++ : -1;
11227 return (data_.update_far_count < MAX_LIST_SIZE) ?
11228 data_.update_far_count++ : -1;
11233 return (data_.update_urr_count < MAX_LIST_SIZE) ?
11234 data_.update_urr_count++ : -1;
11239 return (data_.update_qer_count < MAX_LIST_SIZE) ?
11240 data_.update_qer_count++ : -1;
11245 return (data_.query_urr_count < MAX_LIST_SIZE) ?
11246 data_.query_urr_count++ : -1;
11251 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11252 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11253 uint16_t len = encode_pfcp_sess_mod_req_t(&data_, dest);
11254 data_.header.message_len = len;
11255 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11266 if (data_.cp_fseid.header.len > 0) cp_fseid(
True);
11267 if (data_.remove_bar.header.len > 0) remove_bar(
True);
11268 if (data_.rmv_traffic_endpt.header.len > 0) rmv_traffic_endpt(
True);
11269 if (data_.create_bar.header.len > 0) create_bar(
True);
11270 if (data_.create_traffic_endpt.header.len > 0) create_traffic_endpt(
True);
11271 if (data_.update_bar.header.len > 0) update_bar(
True);
11272 if (data_.upd_traffic_endpt.header.len > 0) upd_traffic_endpt(
True);
11273 if (data_.pfcpsmreq_flags.header.len > 0) pfcpsmreq_flags(
True);
11274 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
11275 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
11276 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
11277 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
11278 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
11279 if (data_.user_plane_inact_timer.header.len > 0) user_plane_inact_timer(
True);
11280 if (data_.query_urr_ref.header.len > 0) query_urr_ref(
True);
11281 if (data_.trc_info.header.len > 0) trc_info(
True);
11283 for (
int i=0; i<MAX_LIST_SIZE; i++)
11285 if (data_.remove_pdr[i].header.len > 0) { next_remove_pdr(); remove_pdr(i); }
11286 if (data_.remove_far[i].header.len > 0) { next_remove_far(); remove_far(i); }
11287 if (data_.remove_urr[i].header.len > 0) { next_remove_urr(); remove_urr(i); }
11288 if (data_.remove_qer[i].header.len > 0) { next_remove_qer(); remove_qer(i); }
11289 if (data_.create_pdr[i].header.len > 0) { next_create_pdr(); create_pdr(i); }
11290 if (data_.create_far[i].header.len > 0) { next_create_far(); create_far(i); }
11291 if (data_.create_urr[i].header.len > 0) { next_create_urr(); create_urr(i); }
11292 if (data_.create_qer[i].header.len > 0) { next_create_qer(); create_qer(i); }
11293 if (data_.update_pdr[i].header.len > 0) { next_update_pdr(); update_pdr(i); }
11294 if (data_.update_far[i].header.len > 0) { next_update_far(); update_far(i); }
11295 if (data_.update_urr[i].header.len > 0) { next_update_urr(); update_urr(i); }
11296 if (data_.update_qer[i].header.len > 0) { next_update_qer(); update_qer(i); }
11297 if (data_.query_urr[i].header.len > 0) { next_query_urr(); query_urr(i); }
11306 setMsgType(PFCP_SESS_MOD_RSP);
11307 data_.header.message_type = msgType();
11308 data_.header.version = 1;
11309 data_.header.s = 1;
11314 return data_.header.message_len;
11319 if (forceInit || data_.cause.header.type == 0)
11320 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11321 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->c_;
11326 if (forceInit || data_.offending_ie.header.type == 0)
11327 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11328 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->oi_;
11333 if (forceInit || data_.created_pdr.header.type == 0)
11334 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->cp_) CreatedPdrIE(data_.created_pdr,
nullptr);
11335 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->cp_;
11340 if (forceInit || data_.load_ctl_info.header.type == 0)
11341 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11342 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->lci_;
11347 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11348 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11349 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->oci_;
11354 if (forceInit || data_.failed_rule_id.header.type == 0)
11355 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->fri_) FailedRuleIdIE(data_.failed_rule_id,
nullptr);
11356 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->fri_;
11361 if (forceInit || data_.add_usage_rpts_info.header.type == 0)
11362 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->auri_) AdditionalUsageReportsInformationIE(data_.add_usage_rpts_info,
nullptr);
11363 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->auri_;
11368 if (forceInit || data_.createdupdated_traffic_endpt.header.type == 0)
11369 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->cute_) CreatedTrafficEndpointIE(data_.createdupdated_traffic_endpt,
nullptr);
11370 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->cute_;
11375 if (idx >= ur_.size())
11377 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11378 ur_.push_back(UsageReportSessionModificationRspIE(data_.usage_report[i],
nullptr));
11385 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11386 data_.usage_report_count++ : -1;
11391 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11392 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11393 uint16_t len = encode_pfcp_sess_mod_rsp_t(&data_, dest);
11394 data_.header.message_len = len;
11395 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11406 if (data_.cause.header.len > 0) cause(
True);
11407 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11408 if (data_.created_pdr.header.len > 0) created_pdr(
True);
11409 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11410 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11411 if (data_.failed_rule_id.header.len > 0) failed_rule_id(
True);
11412 if (data_.add_usage_rpts_info.header.len > 0) add_usage_rpts_info(
True);
11413 if (data_.createdupdated_traffic_endpt.header.len > 0) createdupdated_traffic_endpt(
True);
11419 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
11422 setMsgType(PFCP_SESS_DEL_REQ);
11423 data_.header.message_type = msgType();
11424 data_.header.version = 1;
11425 data_.header.s = 1;
11430 return data_.header.message_len;
11435 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11436 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11437 uint16_t len = encode_pfcp_sess_del_req_t(&data_, dest);
11438 data_.header.message_len = len;
11439 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11453 setMsgType(PFCP_SESS_DEL_RSP);
11454 data_.header.message_type = msgType();
11455 data_.header.version = 1;
11456 data_.header.s = 1;
11461 return data_.header.message_len;
11466 if (forceInit || data_.cause.header.type == 0)
11467 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11468 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->c_;
11473 if (forceInit || data_.offending_ie.header.type == 0)
11474 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11475 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->oi_;
11480 if (forceInit || data_.load_ctl_info.header.type == 0)
11481 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11482 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->lci_;
11487 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11488 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11489 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->oci_;
11494 if (idx >= ur_.size())
11496 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11497 ur_.push_back(UsageReportSessionDeletionRspIE(data_.usage_report[i],
nullptr));
11504 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11505 data_.usage_report_count++ : -1;
11510 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11511 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11512 uint16_t len = encode_pfcp_sess_del_rsp_t(&data_, dest);
11513 data_.header.message_len = len;
11514 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11525 if (data_.cause.header.len > 0) cause(
True);
11526 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11527 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11528 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11530 for (
int i=0; i<MAX_LIST_SIZE; i++)
11532 if (data_.usage_report[i].header.len > 0) { next_usage_report(); usage_report(i); }
11539 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
11542 setMsgType(PFCP_SESS_RPT_REQ);
11543 data_.header.message_type = msgType();
11544 data_.header.version = 1;
11545 data_.header.s = 1;
11550 return data_.header.message_len;
11555 if (forceInit || data_.report_type.header.type == 0)
11556 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->rt_) ReportTypeIE(data_.report_type,
nullptr);
11557 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->rt_;
11562 if (forceInit || data_.dnlnk_data_rpt.header.type == 0)
11563 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->ddr_) DownlinkDataReportIE(data_.dnlnk_data_rpt,
nullptr);
11564 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->ddr_;
11569 if (forceInit || data_.err_indctn_rpt.header.type == 0)
11570 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->eir_) ErrorIndicationReportIE(data_.err_indctn_rpt,
nullptr);
11571 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->eir_;
11576 if (forceInit || data_.load_ctl_info.header.type == 0)
11577 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11578 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->lci_;
11583 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11584 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11585 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->oci_;
11590 if (forceInit || data_.add_usage_rpts_info.header.type == 0)
11591 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->auri_) AdditionalUsageReportsInformationIE(data_.add_usage_rpts_info,
nullptr);
11592 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->auri_;
11597 if (idx >= ur_.size())
11599 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11600 ur_.push_back(UsageReportSessionReportReqIE(data_.usage_report[i],
nullptr));
11607 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11608 data_.usage_report_count++ : -1;
11613 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11614 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11615 uint16_t len = encode_pfcp_sess_rpt_req_t(&data_, dest);
11616 data_.header.message_len = len;
11617 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11628 if (data_.report_type.header.len > 0) report_type(
True);
11629 if (data_.dnlnk_data_rpt.header.len > 0) dnlnk_data_rpt(
True);
11630 if (data_.err_indctn_rpt.header.len > 0) err_indctn_rpt(
True);
11631 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11632 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11633 if (data_.add_usage_rpts_info.header.len > 0) add_usage_rpts_info(
True);
11635 for (
int i=0; i<MAX_LIST_SIZE; i++)
11637 if (data_.usage_report[i].header.len > 0) { next_usage_report(); usage_report(i); }
11646 setMsgType(PFCP_SESS_RPT_RSP);
11647 data_.header.message_type = msgType();
11648 data_.header.version = 1;
11649 data_.header.s = 1;
11654 return data_.header.message_len;
11659 if (forceInit || data_.cause.header.type == 0)
11660 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11661 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->c_;
11666 if (forceInit || data_.offending_ie.header.type == 0)
11667 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11668 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->oi_;
11673 if (forceInit || data_.update_bar.header.type == 0)
11674 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->ub_) UpdateBarSessionReportRspIE(data_.update_bar,
nullptr);
11675 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->ub_;
11680 if (forceInit || data_.sxsrrsp_flags.header.type == 0)
11681 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->flags_) PfcpSrRspFlagsIE(data_.sxsrrsp_flags,
nullptr);
11682 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->flags_;
11687 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11688 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11689 uint16_t len = encode_pfcp_sess_rpt_rsp_t(&data_, dest);
11690 data_.header.message_len = len;
11691 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11702 if (data_.cause.header.len > 0) cause(
True);
11703 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11704 if (data_.update_bar.header.len > 0) update_bar(
True);
11705 if (data_.sxsrrsp_flags.header.len > 0) sxsrrsp_flags(
True);
11711 #endif // __PFCPR15INL_H pfcp_volume_quota_ie_t & data()
pfcp_user_plane_path_fail_rpt_ie_t & data()
uint64_t downlink_volume() const
pfcp_sess_del_rsp_t & data()
pfcp_sbsqnt_vol_quota_ie_t & data()
GracefulReleasePeriodIE & graceful_rel_period(Bool forceInit=False)
uint16_t calculateLength()
pfcp_created_pdr_ie_t & data()
DestinationInterfaceIE & dst_intfc()
DurationMeasurementIE & dur_meas()
const uint8_t * domain_name_prot() const
QueryUrrIE & query_urr(uint8_t idx)
const uint8_t * ntwk_instc() const
uint32_t inact_det_time() const
SubsequentVolumeThresholdIE & sbsqnt_vol_thresh()
uint32_t sequence_number() const
uint16_t calculateLength()
ReportingTriggersIE & setMacar(Bool val)
SuggestedBufferingPacketsCountIE & suggstd_buf_pckts_cnt()
CauseIE & cause(Bool forceInit=False)
uint16_t calculateLength()
uint16_t calculateLength()
pfcp_upd_bar_sess_mod_req_ie_t & data()
uint16_t calculateLength()
CpFunctionFeaturesIE & cp_func_feat(Bool forceInit=False)
uint16_t calculateLength()
pfcp_sess_mod_rsp_t & data()
const uint8_t * svc_cls_indctr() const
HeartbeatReq & encode(uint8_t *dest)
SuggestedBufferingPacketsCountIE & suggstd_buf_pckts_cnt()
int next_user_plane_ip_rsrc_info()
QerCorrelationIdIE & qer_corr_id()
pfcp_remove_qer_ie_t & data()
pfcp_traffic_endpt_id_ie_t & data()
uint16_t calculateLength()
AveragingWindowIE & avgng_wnd()
pfcp_frwdng_plcy_ie_t & data()
const uint8_t * upr_dst_mac_addr_val() const
CreateTrafficEndpointIE & create_traffic_endpt(Bool forceInit=False)
UpFunctionFeaturesIE & up_func_feat(Bool forceInit=False)
SessionModificationReq & encode(uint8_t *dest)
uint16_t calculateLength()
MeasurementPeriodIE & meas_period()
FarIdIE & far_id_for_quota_act()
UrrIdIE & urr_id(uint8_t idx)
pfcp_app_ids_pfds_ie_t & data()
SdfFilterIE & sdf_filter(uint8_t idx)
ReportingTriggersIE & setStart(Bool val)
uint16_t calculateLength()
UserPlaneInactivityTimerIE & user_plane_inact_timer(Bool forceInit=False)
uint8_t delay_value() const
pfcp_linked_urr_id_ie_t & data()
pfcp_src_intfc_ie_t & data()
const in6_addr & ipv6_node_address() const
const uint8_t * app_inst_ident() const
NodeIdTypeEnum
Definition: pfcpr15.h:1143
TimeQuotaIE & time_quota()
#define True
True.
Definition: ebase.h:25
PrecedenceIE & precedence()
OffendingIeIE & offending_ie(Bool forceInit=False)
EventTimeStampIE & evnt_time_stmp(uint8_t idx)
pfcp_failed_rule_id_ie_t & data()
VolumeThresholdIE & vol_thresh()
NodeIdIE & node_id(Bool forceInit=False)
uint16_t calculateLength()
OverloadControlInformationIE & ovrld_ctl_info(Bool forceInit=False)
RemoveBarIE & remove_bar(Bool forceInit=False)
TransportLevelMarkingIE & trnspt_lvl_marking()
SourceInterfaceEnum
Definition: pfcpr15.h:172
ReportingTriggersIE & setEveth(Bool val)
RedirectInformationIE & redir_info()
VolumeMeasurementIE & vol_meas()
FramedRoutingEnum
Definition: pfcpr15.h:3011
uint16_t calculateLength()
DownlinkGateEnum
Definition: pfcpr15.h:324
CreatePdrIE & create_pdr(uint8_t idx)
CreateFarIE & create_far(uint8_t idx)
const uint8_t * add_flow_desc() const
OffendingIeIE & offending_ie(Bool forceInit=False)
pfcp_multiplier_ie_t & data()
PagingPolicyIndicatorIE & paging_plcy_indctr()
const uint8_t * apn_dnn() const
TimeOfFirstPacketIE & time_of_frst_pckt()
uint16_t calculateLength()
const uint8_t * flow_label() const
uint16_t calculateLength()
NetworkInstanceIE & ntwk_inst()
uint8_t traffic_endpt_id_val() const
uint16_t calculateLength()
DuplicatingParametersIE & dupng_parms(uint8_t idx)
const struct sockaddr_in6 & getInet6() const
Retrieves a reference to this address as an IPv6 address.
Definition: esocket.h:296
MonitoringTimeIE & monitoring_time()
DownlinkDataReportIE & dnlnk_data_rpt(Bool forceInit=False)
int next_user_plane_ip_rsrc_info()
CauseIE & cause(Bool forceInit=False)
SubsequentTimeThresholdIE & sbsqnt_time_thresh()
pfcp_assn_upd_rsp_t & data()
DestinationInterfaceIE & dst_intfc()
UsageReportSessionReportReqIE & usage_report(uint8_t idx)
pfcp_pdn_type_ie_t & data()
const uint8_t * upr_src_mac_addr_val() const
InternetProtocolEnum
Definition: pfcpr15.h:1656
pfcp_node_rpt_req_t & data()
TimeOfFirstPacketIE & time_of_frst_pckt()
DestinationInterfaceEnum dst_intfc_value() const
SessionDeletionReq(PFCP::SessionBaseSPtr &ses, Bool allocSeqNbr=True)
pfcp_sess_rpt_rsp_t & data()
DownlinkDataNotificationDelayIE & dnlnk_data_notif_delay()
NodeIdIE & node_id(Bool forceInit=False)
pfcp_pfd_mgmt_req_t & data()
EthernetFilterPropertiesIE & eth_fltr_props()
Represents an OctetString as defined in RFC 6733.
Definition: eostring.h:33
OverloadControlInformationIE & ovrld_ctl_info(Bool forceInit=False)
pfcp_up_assn_rel_req_ie_t & data()
const uint8_t * dst_mac_addr_val() const
uint16_t len_of_dst_intfc_fld() const
pfcp_app_inst_id_ie_t & data()
const uint8_t * add_domain_nm_prot() const
uint32_t qer_corr_id_val() const
uint16_t calculateLength()
TimeQuotaIE & time_quota()
NetworkInstanceIE & ntwk_inst()
uint16_t calculateLength()
pfcp_qer_id_ie_t & data()
MacAddressIE & mac_address()
PfcpSmReqFlagsIE & pfcpsmreq_flags()
pfcp_pfd_mgmt_rsp_t & data()
FramedRouteIE & framed_route(uint8_t idx)
pfcp_add_mntrng_time_ie_t & data()
DestinationInterfaceEnum interface_value() const
pfcp_sbsqnt_vol_thresh_ie_t & data()
uint16_t calculateLength()
const uint8_t * add_url() const
uint16_t len_of_flow_desc() const
pfcp_node_id_ie_t & data()
SessionModificationRsp & encode(uint8_t *dest)
ReportingTriggersIE & setDroth(Bool val)
MeasurementMethodIE & meas_mthd()
uint16_t calculateLength()
TimerTimerUnitEnum timer_unit() const
SessionReportReq(PFCP::SessionBaseSPtr &ses, Bool allocSeqNbr=True)
pfcp_remove_bar_ie_t & data()
uint16_t calculateLength()
DlBufferingSuggestedPacketCountIE & dl_buf_suggstd_pckt_cnt()
PFCP stack namespace.
Definition: epfcp.h:35
HeaderTypeEnum
Definition: pfcpr15.h:1977
NodeReportReq & encode(uint8_t *dest)
uint16_t len_of_domain_nm() const
uint16_t ethertype() const
const uint8_t * frmd_ipv6_rte() const
UeIpAddressIE & ue_ip_address()
pfcp_mac_addrs_detctd_ie_t & data()
TrafficEndpointIdIE & traffic_endpt_id()
uint32_t event_threshold() const
uint16_t calculateLength()
MonitoringTimeIE & monitoring_time()
int next_upd_dupng_parms()
pfcp_rptng_triggers_ie_t & data()
uint32_t time_quota_val() const
uint16_t calculateLength()
QueryUrrReferenceIE & query_urr_ref(Bool forceInit=False)
UpFunctionFeaturesIE & up_func_feat(Bool forceInit=False)
SessionReportRsp & encode(uint8_t *dest)
EthernetTrafficInformationIE & eth_traffic_info()
pfcp_oci_flags_ie_t & data()
uint16_t calculateLength()
uint16_t calculateLength()
uint32_t avgng_wnd() const
CauseIE & cause(Bool forceInit=False)
uint16_t calculateLength()
ReportingTriggersIE & setStopt(Bool val)
DownlinkDataNotificationDelayIE & dnlnk_data_notif_delay()
pfcp_agg_urr_id_ie_t & data()
UeIpAddressIE & ue_ip_address()
uint8_t cvid_value2() const
uint16_t calculateLength()
pfcp_err_indctn_rpt_ie_t & data()
UpFunctionFeaturesIE & up_func_feat(Bool forceInit=False)
uint16_t node_id_valud_fqdn_len() const
pfcp_dst_intfc_ie_t & data()
PfcpSrRspFlagsIE & sxsrrsp_flags(Bool forceInit=False)
RemoteGTPUPeerIE & rmt_gtpu_peer(uint8_t idx)
uint32_t prcdnc_val() const
FqCsidIE & pgw_c_fqcsid(Bool forceInit=False)
uint64_t uplink_volume() const
MeasurementPeriodIE & meas_period()
ErrorIndicationReportIE & err_indctn_rpt(Bool forceInit=False)
uint16_t calculateLength()
TimeQuotaMechanismIE & time_quota_mech()
uint16_t calculateLength()
uint16_t app_ident_len() const
const uint8_t * tos_traffic_cls() const
FqCsidNodeIdTypeEnum fqcsid_node_id_type() const
uint16_t calculateLength()
uint16_t calculateLength()
NetworkInstanceIE & ntwk_inst()
uint16_t calculateLength()
SubsequentEventQuotaIE & sbsqnt_evnt_quota()
uint32_t lnkd_urr_id_val() const
uint16_t frmd_ipv6_rte_len() const
pfcp_report_type_ie_t & data()
uint16_t calculateLength()
pfcp_urseqn_ie_t & data()
LoadControlInformationIE & load_ctl_info(Bool forceInit=False)
uint16_t calculateLength()
pfcp_sequence_number_ie_t & data()
UserPlaneIpResourceInformationIE & user_plane_ip_rsrc_info(uint8_t idx)
int next_created_traffic_endpt()
uint16_t calculateLength()
RemoteGTPUPeerIE & dst_intfc_fld(DestinationInterfaceEnum val)
pfcp_sbsqnt_evnt_quota_ie_t & data()
uint8_t timer_value() const
uint16_t calculateLength()
const uint8_t ipv6_pfx_dlgtn_bits() const
const in6_addr & ipv6_address() const
uint16_t calculateLength()
const uint8_t * nai() const
AdditionalUsageReportsInformationIE & add_usage_rpts_info(Bool forceInit=False)
pfcp_assn_setup_rsp_t & data()
uint16_t calculateLength()
UpdatePdrIE & update_pdr(uint8_t idx)
RemoveUrrIE & remove_urr(uint8_t idx)
pfcp_meas_mthd_ie_t & data()
VolumeQuotaIE & uplink_volume(uint64_t val)
pfcp_dnlnk_data_notif_delay_ie_t & data()
uint16_t calculateLength()
pfcp_usage_rpt_trig_ie_t & data()
PfdMgmtReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
uint32_t qer_id_value() const
pfcp_urr_id_ie_t & data()
uint16_t calculateLength()
uint16_t calculateLength()
PfdMgmtReq & encode(uint8_t *dest)
AssnSetupReq & encode(uint8_t *dest)
TimeOfLastPacketIE & time_of_frst_pckt(ETime &val)
EventQuotaIE & event_quota()
pfcp_query_urr_ie_t & data()
RecoveryTimeStampIE & rcvry_time_stmp(Bool forceInit=False)
NodeIdIE & node_id(Bool forceInit=False)
const uint8_t * mac_addr_val(uint8_t idx)
NodeIdIE & node_id(Bool forceInit=False)
UpdateUrrIE & update_urr(uint8_t idx)
TimeThresholdIE & time_threshold()
UpdateTrafficEndpointIE & upd_traffic_endpt(Bool forceInit=False)
pfcp_avgng_wnd_ie_t & data()
DroppedDlTrafficThresholdIE & drpd_dl_traffic_thresh()
ETime rcvry_time_stmp_val() const
pfcp_upd_dupng_parms_ie_t & data()
uint16_t calculateLength()
NodeIdIE & node_id(Bool forceInit=False)
pfcp_event_threshold_ie_t & data()
pfcp_far_id_ie_t & data()
CauseIE & cause(Bool forceInit=False)
uint16_t calculateLength()
uint16_t predef_rules_nm_len() const
uint16_t calculateLength()
uint16_t calculateLength()
UpdateBarSessionReportRspIE & update_bar(Bool forceInit=False)
FqCsidIE & mme_fqcsid(Bool forceInit=False)
FSeidIE & cp_fseid(Bool forceInit=False)
size_type length() const
Returns the length of the assigned value of this object.
Definition: eostring.h:558
pfcp_create_traffic_endpt_ie_t & data()
OuterHeaderCreationIE & outer_hdr_creation()
pfcp_ntwk_inst_ie_t & data()
ReportingTriggersIE & rptng_triggers()
DownlinkGateEnum dl_gate() const
pfcp_framed_routing_ie_t & data()
const uint8_t * tostraffic_cls() const
pfcp_dl_flow_lvl_marking_ie_t & data()
SessionEstablishmentRsp & encode(uint8_t *dest)
pfcp_actvt_predef_rules_ie_t & data()
pfcp_time_quota_ie_t & data()
uint32_t duration_value() const
pfcp_remove_pdr_ie_t & data()
pfcp_dl_buf_suggstd_pckt_cnt_ie_t & data()
CauseIE & cause(Bool forceInit=False)
pfcp_assn_setup_req_t & data()
uint16_t calculateLength()
VolumeMeasurementIE & vol_meas()
FqCsidIE & sgw_c_fqcsid(Bool forceInit=False)
EthernetTrafficInformationIE & eth_traffic_info()
ApplyActionIE & apply_action()
const in6_addr & node_id_value_ipv6_address() const
pfcp_rmv_traffic_endpt_ie_t & data()
OuterHeaderCreationIE & outer_hdr_creation()
PfdContextIE & pfdContext(uint8_t idx)
pfcp_ue_ip_address_ie_t & data()
uint64_t total_volume() const
uint16_t calculateLength()
SessionDeletionReq & encode(uint8_t *dest)
const in6_addr & ipv6_address() const
uint16_t calculateLength()
uint16_t calculateLength()
uint16_t calculateLength()
UeIpAddressIE & ue_ip_address()
Contains the class definitions for the PFCP release 15 messages and information elements.
Definition: pfcpr15.h:59
FTeidIE & remote_fteid(uint8_t idx)
FqCsidIE & pgw_c_fqcsid(Bool forceInit=False)
ApplyActionIE & apply_action()
pfcp_dur_meas_ie_t & data()
pfcp_pfcpsrrsp_flags_ie_t & data()
const in_addr & ipv4_node_address() const
uint16_t calculateLength()
FqCsidIE & node_address(const ESocket::Address &val)
CreateFarIE & create_far(uint8_t idx)
uint16_t calculateLength()
SubsequentVolumeThresholdIE & sbsqnt_vol_thresh()
SubsequentVolumeQuotaIE & sbsqnt_vol_quota()
uint16_t calculateLength()
pfcp_3gpp_intfc_type_ie_t & data()
uint16_t calculateLength()
uint16_t calculateLength()
uint32_t sbsqnt_time_thresh() const
pfcp_assn_upd_req_t & data()
pfcp_sess_mod_req_t & data()
FqCsidIE & epdg_fqcsid(Bool forceInit=False)
uint8_t nbr_of_mac_addrs() const
uint16_t calculateLength()
uint16_t calculateLength()
uint32_t base_time_int() const
NodeIdTypeEnum node_id_type() const
pfcp_create_urr_ie_t & data()
SourceInterfaceEnum interface_value() const
pfcp_paging_plcy_indctr_ie_t & data()
const struct sockaddr_in & getInet() const
Retrieves a reference to this address as an IPv4 address.
Definition: esocket.h:287
const uint8_t * domain_name() const
const in6_addr & ipv6_address() const
FqCsidIE & sgw_c_fqcsid(Bool forceInit=False)
const in_addr & ipv4_address() const
uint8_t pckt_cnt_val() const
const uint8_t * flow_desc() const
TgppInterfaceTypeIE & dst_intfc_type()
pfcp_user_plane_inact_timer_ie_t & data()
uint16_t calculateLength()
ETime time_of_lst_pckt() const
pfcp_assn_rel_req_t & data()
OffendingIeIE & offending_ie(Bool forceInit=False)
int next_create_traffic_endpt()
uint16_t calculateLength()
SubsequentVolumeQuotaIE & total_volume(uint64_t val)
FqCsidIE & epdg_fqcsid(Bool forceInit=False)
uint16_t calculateLength()
const uint8_t * src_mac_addr_val() const
SubsequentVolumeQuotaIE & sbsqnt_vol_quota()
ForwardingPolicyIE & frwdng_plcy()
pfcp_event_quota_ie_t & data()
AssociationReleaseRequestIE & up_assn_rel_req(Bool forceInit=False)
DestinationInterfaceIE & dst_intfc()
const ETime monitoring_time() const
SuggestedBufferingPacketsCountIE & suggstd_buf_pckts_cnt()
AdditionalMonitoringTimeIE & add_mntrng_time(uint8_t idx)
uint16_t calculateLength()
TgppInterfaceTypeIE & src_intrc_type()
uint16_t calculateLength()
pfcp_update_urr_ie_t & data()
SubsequentEventQuotaIE & sbsqnt_evnt_quota()
uint16_t calculateLength()
pfcp_end_time_ie_t & data()
DurationMeasurementIE & dur_meas()
SourceInterfaceIE & src_intfc()
EventThresholdIE & event_threshold()
#define PFCP_VERSION_NOT_SUPPORTED
Definition: pfcpr15.h:4856
pfcp_trnspt_lvl_marking_ie_t & data()
NetworkInstanceIE & ntwk_inst()
EthernetPacketFilterIE & eth_pckt_fltr(uint8_t idx)
uint16_t calculateLength()
uint8_t timer_value() const
#define False
False.
Definition: ebase.h:27
uint32_t urr_id_value() const
pfcp_sess_estab_rsp_t & data()
uint64_t uplink_volume() const
uint16_t calculateLength()
UpFunctionFeaturesIE & up_func_feat(Bool forceInit=False)
uint16_t max_uplnk_pckt_rate() const
uint16_t max_dnlnk_pckt_rate() const
HeaderEnrichmentIE & hdr_enrchmt()
ReportingTriggersIE & setTimth(Bool val)
uint16_t calculateLength()
RemoveTrafficEndpointIE & rmv_traffic_endpt(Bool forceInit=False)
CreateBarIE & create_bar(Bool forceInit=False)
EthernetPduSessionInformationIE & eth_pdu_sess_info()
BaseTimeIntervalTypeEnum btit() const
FlowDirectionEnum
Definition: pfcpr15.h:1801
pfcp_usage_rpt_sess_del_rsp_ie_t & data()
uint8_t length_of_nai() const
DlBufferingDurationTimerUnitEnum timer_unit() const
Class for manipulating date and time of day values.
Definition: etime.h:199
pfcp_up_func_feat_ie_t & data()
pfcp_user_id_ie_t & data()
PfdMgmtRsp & encode(uint8_t *dest)
pfcp_hrtbeat_rsp_t & data()
QueryUrrReferenceIE & query_urr_ref()
pfcp_hrtbeat_req_t & data()
uint16_t calculateLength()
SubsequentEventThresholdIE & sbsqnt_evnt_thresh()
uint16_t predef_rules_nm_len() const
uint16_t calculateLength()
UserPlaneIpResourceInformationIE & user_plane_ip_rsrc_info(uint8_t idx)
uint16_t calculateLength()
uint16_t calculateLength()
UpdateDuplicatingParametersIE & upd_dupng_parms(uint8_t idx)
FSeidIE & ip_address(const ESocket::Address &val)
NodeIdIE & node_id(Bool forceInit=False)
SubsequentEventThresholdIE & sbsqnt_evnt_thresh()
uint16_t calculateLength()
TimeThresholdIE & time_threshold()
uint8_t number_of_csids() const
SubsequentTimeThresholdIE & sbsqnt_time_thresh()
FqCsidIE & twan_fqcsid(Bool forceInit=False)
pfcp_eth_pckt_fltr_ie_t & data()
const in_addr & ipv4_address() const
InactivityDetectionTimeIE & inact_det_time()
CreatedTrafficEndpointIE & createdupdated_traffic_endpt(Bool forceInit=False)
uint16_t calculateLength()
uint32_t user_plane_inact_timer() const
uint32_t far_id_value() const
uint8_t cvid_value() const
uint8_t pcp_value() const
TrafficEndpointIdIE & traffic_endpt_id()
uint16_t len_of_flow_desc() const
uint16_t calculateLength()
uint32_t time_threshold() const
VolumeQuotaIE & total_volume(uint64_t val)
EventThresholdIE & event_threshold()
SessionSetDeletionReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
RecoveryTimeStampIE & rcvry_time_stmp(Bool forceInit=False)
uint16_t calculateLength()
SessionReportReq & encode(uint8_t *dest)
pfcp_vol_thresh_ie_t & data()
pfcp_sdf_filter_ie_t & data()
CauseIE & cause(Bool forceInit=False)
uint16_t calculateLength()
UplinkDownlinkTimeUnitEnum dnlnk_time_unit() const
OuterHeaderRemovalIE & outer_hdr_removal()
UsageReportSessionDeletionRspIE & usage_report(uint8_t idx)
uint16_t calculateLength()
uint16_t calculateLength()
ReportingTriggersIE & setTimqu(Bool val)
OuterHeaderCreationIE & outer_hdr_creation()
GracefulReleasePeriodTimerUnitEnum timer_unit() const
TimeOfFirstPacketIE & time_of_frst_pckt()
FramedRoutingIE & framed_routing()
UsageReportTriggerIE & usage_rpt_trig()
AssnUpdateReq & encode(uint8_t *dest)
pfcp_node_rpt_type_ie_t & data()
uint16_t calculateLength()
pfcp_graceful_rel_period_ie_t & data()
uint8_t qfi_value() const
QuotaHoldingTimeIE & quota_hldng_time()
uint16_t calculateLength()
ReportingTriggersIE & setVolth(Bool val)
uint8_t frwdng_plcy_ident_len() const
SdfFilterIE & sdf_filter(uint8_t idx)
MeasurementInformationIE & meas_info()
FqCsidIE & up_fqcsid(Bool forceInit=False)
BaseTimeIntervalTypeEnum
Definition: pfcpr15.h:2322
pfcp_mac_address_ie_t & data()
FqCsidNodeIdTypeEnum
Definition: pfcpr15.h:1344
uint16_t calculateLength()
pfcp_remove_urr_ie_t & data()
uint8_t svid_value2() const
uint16_t calculateLength()
FramedRoutingIE & framed_routing()
uint8_t nbr_of_mac_addrs() const
FramedIpv6RouteIE & frmd_ipv6_rte(uint8_t idx)
ULong seqNbr() const
Returns the sequence number associated wtih this message.
Definition: epfcp.h:895
pfcp_pdr_id_ie_t & data()
pfcp_bar_id_ie_t & data()
uint32_t rule_id_value() const
CreatedTrafficEndpointIE & created_traffic_endpt(uint8_t idx)
uint16_t calculateLength()
const in_addr & node_id_value_ipv4_address() const
FSeidIE & up_fseid(Bool forceInit=False)
uint16_t calculateLength()
uint32_t quota_hldng_time_val() const
NodeIdIE & node_id(Bool forceInit=False)
CreateBarIE & create_bar(Bool forceInit=False)
UsageReportSessionModificationRspIE & usage_report(uint8_t idx)
pfcp_gate_status_ie_t & data()
DownlinkDataNotificationDelayIE & dnlnk_data_notif_delay()
pfcp_upd_traffic_endpt_ie_t & data()
uint16_t calculateLength()
pfcp_upd_bar_sess_rpt_rsp_ie_t & data()
uint16_t calculateLength()
RedirectInformationIE & redir_info()
pfcp_pfd_context_ie_t & data()
FqCsidIE & sgw_c_fqcsid(Bool forceInit=False)
const uint8_t * app_ident() const
uint16_t calculateLength()
pfcp_sess_rpt_req_t & data()
uint16_t calculateLength()
std::shared_ptr< SessionBase > SessionBaseSPtr
Definition: epfcp.h:401
pfcp_rmt_gtpu_peer_ie_t & data()
uint32_t query_urr_ref_val() const
uint16_t calculateLength()
TransportLevelMarkingIE & trnspt_lvl_marking()
uint16_t calculateLength()
AggregatedUrrsIE & aggregated_urrs(uint8_t idx)
FqCsidIE & epdg_fqcsid(Bool forceInit=False)
DlFlowLevelMarkingIE & dl_flow_lvl_marking()
pfcp_monitoring_time_ie_t & data()
DlFlowLevelMarkingIE & dl_flow_lvl_marking()
pfcp_packet_rate_ie_t & data()
CauseIE & cause(Bool forceInit=False)
RuleIdTypeEnum
Definition: pfcpr15.h:2292
uint16_t apn_dnn_len() const
InactivityDetectionTimeIE & inact_det_time()
uint16_t calculateLength()
pfcp_update_pdr_ie_t & data()
uint32_t urr_id_value() const
uint16_t calculateLength()
UpdateForwardingParametersIE & upd_frwdng_parms()
uint32_t mcc_mnc_id_node_address() const
uint16_t calculateLength()
uint32_t sbsqnt_evnt_quota() const
uint16_t calculateLength()
pfcp_time_quota_mech_ie_t & data()
UpdateBarSessionModificationReqIE & update_bar(Bool forceInit=False)
NodeReportTypeIE & node_rpt_type(Bool forceInit=False)
FqCsidIE & mme_fqcsid(Bool forceInit=False)
LoadControlInformationIE & load_ctl_info(Bool forceInit=False)
uint16_t type_of_the_offending_ie() const
NetworkInstanceIE & ntwk_inst()
SubsequentTimeThresholdIE & sbsqnt_time_thresh()
const in_addr & ipv4_address() const
FqCsidIE & mme_fqcsid(Bool forceInit=False)
AveragingWindowIE & avgng_wnd()
VolumeQuotaIE & volume_quota()
CreatePdrIE & create_pdr(uint8_t idx)
ActivatePredefinedRulesIE & actvt_predef_rules(uint8_t idx)
PfdContentsIE & pfdContents(uint8_t idx)
AssnUpdateReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
uint16_t calculateLength()
MeasurementMethodIE & meas_mthd()
Represents an IP address with mask.
Definition: eip.h:40
uint16_t calculateLength()
CreateUrrIE & create_urr(uint8_t idx)
SessionEstablishmentReq & encode(uint8_t *dest)
pfcp_created_traffic_endpt_ie_t & data()
NodeIdIE & node_id(Bool forceInit=False)
uint8_t bar_id_value() const
pfcp_mac_addrs_rmvd_ie_t & data()
CpFunctionFeaturesIE & cp_func_feat(Bool forceInit=False)
SubsequentVolumeQuotaIE & uplink_volume(uint64_t val)
DownlinkDataServiceInformationIE & dnlnk_data_svc_info(uint8_t idx)
GateStatusIE & gate_status()
TimeOfLastPacketIE & time_of_lst_pckt()
uint16_t calculateLength()
pfcp_sess_set_del_rsp_t & data()
uint16_t calculateLength()
pfcp_dnlnk_data_rpt_ie_t & data()
pfcp_ethertype_ie_t & data()
AssnReleaseRsp & encode(uint8_t *dest)
uint16_t len_of_add_domain_nm_prot() const
int next_add_mntrng_time()
NodeIdIE & node_id(Bool forceInit=False)
ForwardingPolicyIE & frwdng_plcy()
ETime evnt_time_stmp() const
const uint8_t * imei() const
uint16_t calculateLength()
HeaderEnrichmentIE & hdr_enrchmt()
AssnUpdateRsp & encode(uint8_t *dest)
FailedRuleIdIE & failed_rule_id(Bool forceInit=False)
pfcp_fqcsid_ie_t & data()
AggregatedUrrIdIE & agg_urr_id()
ReportingTriggersIE & setPerio(Bool val)
pfcp_deact_predef_rules_ie_t & data()
FqCsidIE & up_fqcsid(Bool forceInit=False)
UpdateQerIE & update_qer(uint8_t idx)
uint32_t time_quota_val() const
const in_addr & ipv4Address() const
Returns a reference to the in_addr structure that represents an IPv4 address.
Definition: eip.h:225
FramedRoutingIE & framed_routing()
uint16_t calculateLength()
FramedRouteIE & framed_route(uint8_t idx)
pfcp_proxying_ie_t & data()
GateStatusIE & gate_status()
int next_deact_predef_rules()
FSeidIE & cp_fseid(Bool forceInit=False)
HeartbeatReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
uint16_t calculateLength()
const sa_family_t family() const
Returns the address family associated with this address object.
Definition: eip.h:231
DroppedDlTrafficThresholdIE & dnlnk_pckts(uint64_t val)
TrafficEndpointIdIE & traffic_endpt_id()
ActivatePredefinedRulesIE & actvt_predef_rules(uint8_t idx)
uint16_t calculateLength()
uint16_t calculateLength()
pfcp_sbsqnt_time_thresh_ie_t & data()
DestinationInterfaceEnum
Definition: pfcpr15.h:762
NodeReportRsp & encode(uint8_t *dest)
pfcp_offending_ie_ie_t & data()
int next_aggregated_urrs()
UserIdIE & user_id(Bool forceInit=False)
OffendingIeIE & offending_ie(Bool forceInit=False)
AdditionalMonitoringTimeIE & add_mntrng_time()
pfcp_rcvry_time_stmp_ie_t & data()
UplinkDownlinkTimeUnitEnum uplnk_time_unit() const
AssnReleaseReq & encode(uint8_t *dest)
uint16_t calculateLength()
SessionEstablishmentReq(PFCP::SessionBaseSPtr &ses, Bool allocSeqNbr=True)
uint16_t len_of_ntwk_intfc_fld() const
CreatedPdrIE & created_pdr(Bool forceInit=False)
pfcp_upd_frwdng_parms_ie_t & data()
const uint8_t * flow_desc() const
UplinkGateEnum
Definition: pfcpr15.h:332
DurationMeasurementIE & dur_meas()
pfcp_pfd_contents_ie_t & data()
PacketRateIE & packet_rate()
TrafficEndpointIdIE & lnkd_traffic_endpt_id()
pfcp_qer_corr_id_ie_t & data()
CauseIE & cause(Bool forceInit=False)
const uint8_t * predef_rules_nm() const
pfcp_sess_estab_req_t & data()
pfcp_application_id_ie_t & data()
pfcp_assn_rel_rsp_t & data()
pfcp_query_urr_ref_ie_t & data()
EthernetInactivityTimerIE & eth_inact_timer()
pfcp_create_far_ie_t & data()
pfcp_frmd_ipv6_rte_ie_t & data()
RemovePdrIE & remove_pdr(uint8_t idx)
TrafficEndpointIdIE & lnkd_traffic_endpt_id()
SubsequentTimeQuotaIE & sbsqnt_time_quota()
ReportingTriggersIE & setQuhti(Bool val)
pfcp_suggstd_buf_pckts_cnt_ie_t & data()
ApplicationIdIE & applicationId()
SubsequentVolumeQuotaIE & sbsqnt_vol_quota()
GbrIE & guaranteed_bitrate()
CauseEnum
Definition: pfcpr15.h:119
CreatedPdrIE & created_pdr(uint8_t idx)
CreateQerIE & create_qer(uint8_t idx)
uint16_t calculateLength()
uint16_t calculateLength()
CreateUrrIE & create_urr(uint8_t idx)
pfcp_dupng_parms_ie_t & data()
FTeidIE & ip_address(const ESocket::Address &val)
uint16_t len_of_cstm_pfd_cntnt() const
OverloadControlInformationIE & ovrld_ctl_info(Bool forceInit=False)
EthernetPduSessionInformationIE & eth_pdu_sess_info()
GbrIE & guaranteed_bitrate()
PdrIdIE & pdr_id(uint8_t idx)
QueryUrrReferenceIE & query_urr_ref()
PacketRateIE & packet_rate()
FramedRoutingEnum framed_routing() const
ForwardingPolicyIE & frwdng_plcy()
uint16_t calculateLength()
TgppInterfaceTypeEnum interface_type_value() const
uint16_t calculateLength()
pfcp_sbsqnt_evnt_thresh_ie_t & data()
DestinationInterfaceIE & dst_intfc()
SubsequentTimeQuotaIE & sbsqnt_time_quota()
UsageInformationIE & usage_info()
TraceInformationIE & trc_info(Bool forceInit=False)
int next_aggregated_urrs()
uint16_t calculateLength()
ApplicationIdsPfdsIE & app_ids_pfds(uint8_t idx)
RemoteGTPUPeerIE & ip_address(const ESocket::Address &val)
uint16_t calculateLength()
TimerTimerUnitEnum
Definition: pfcpr15.h:1052
NodeIdIE & node_id(Bool forceInit=False)
SessionSetDeletionReq & encode(uint8_t *dest)
uint16_t calculateLength()
TimeQuotaMechanismIE & time_quota_mech()
VolumeMeasurementIE & vol_meas()
uint16_t calculateLength()
FqCsidIE & twan_fqcsid(Bool forceInit=False)
EthernetTrafficInformationIE & eth_traffic_info()
const uint8_t * secur_parm_idx() const
DroppedDlTrafficThresholdIE & drpd_dl_traffic_thresh()
UsageInformationIE & usage_info()
uint32_t sbsqnt_evnt_quota() const
pfcp_inact_det_time_ie_t & data()
pfcp_eth_fltr_props_ie_t & data()
PdnTypeIE & pdn_type(Bool forceInit=False)
AssnReleaseReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
const uint8_t * tostraffic_cls() const
uint16_t calculateLength()
uint64_t pckt_cnt_val() const
uint16_t calculateLength()
MeasurementInformationIE & meas_info()
TimeOfLastPacketIE & time_of_lst_pckt()
pfcp_meas_period_ie_t & data()
uint16_t len_of_add_url() const
SubsequentVolumeThresholdIE & sbsqnt_vol_thresh()
UeIpAddressIE & ip_address(const ESocket::Address &val)
FramedRouteIE & framed_route(uint8_t idx)
const uint8_t * predef_rules_nm() const
CauseIE & cause(Bool forceInit=False)
OffendingIeIE & offending_ie(Bool forceInit=False)
EventQuotaIE & event_quota()
uint16_t calculateLength()
uint64_t total_volume() const
pfcp_time_threshold_ie_t & data()
uint16_t calculateLength()
FqCsidIE & pgw_c_fqcsid(Bool forceInit=False)
int64_t value_digits() const
UsageReportTriggerIE & usage_rpt_trig()
OffendingIeIE & offending_ie(Bool forceInit=False)
RecoveryTimeStampIE & rcvry_time_stmp(Bool forceInit=False)
int next_dnlnk_data_svc_info()
RemoveQerIE & remove_qer(uint8_t idx)
uint16_t len_of_add_flow_desc() const
uint8_t choose_id() const
uint16_t framed_route_len() const
LoadControlInformationIE & load_ctl_info(Bool forceInit=False)
NodeReportReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
RuleIdTypeEnum rule_id_type() const
QerCorrelationIdIE & qer_corr_id()
cpUChar data() const
Returns a pointer to the internal data buffer.
Definition: eostring.h:516
pfcp_dl_buf_dur_ie_t & data()
uint16_t calculateLength()
DlBufferingDurationIE & dl_buf_dur()
const uint8_t * mac_addr_val(uint8_t idx)
uint32_t eth_inact_timer() const
VolumeQuotaIE & downlink_volume(uint64_t val)
UeIpAddressIE & ue_ip_address()
MbrIE & maximum_bitrate()
pfcp_apply_action_ie_t & data()
uint64_t total_volume() const
QerIdIE & qer_id(uint8_t idx)
ApplicationIdIE & application_id()
uint16_t calculateLength()
uint16_t calculateLength()
PfcpSmReqFlagsIE & pfcpsmreq_flags(Bool forceInit=False)
uint64_t downlink_volume() const
ReportingTriggersIE & setEnvcl(Bool val)
uint8_t svid_value() const
EthernetFilterIdIE & eth_fltr_id()
uint16_t calculateLength()
CpFunctionFeaturesIE & cp_func_feat(Bool forceInit=False)
EthernetInactivityTimerIE & eth_inact_timer()
LinkedUrrIdIE & linked_urr_id(uint8_t idx)
uint16_t calculateLength()
uint16_t calculateLength()
UserPlaneIpResourceInformationIE & user_plane_ip_rsrc_info(uint8_t idx)
TraceInformationIE & trc_info(Bool forceInit=False)
uint8_t length_of_imsi() const
uint16_t calculateLength()
TgppInterfaceTypeEnum
Definition: pfcpr15.h:3181
uint16_t calculateLength()
TransportLevelMarkingIE & trnspt_lvl_marking()
uint16_t calculateLength()
TransportLevelMarkingIE & trnspt_lvl_marking()
DroppedDlTrafficThresholdIE & nbr_of_bytes_of_dnlnk_data(uint64_t val)
ReportingTriggersIE & setEvequ(Bool val)
NodeIdIE & node_id(Bool forceInit=False)
OuterHeaderRemovalIE & outer_hdr_removal()
uint16_t calculateLength()
UpdateFarIE & update_far(uint8_t idx)
NodeIdIE & node_id(Bool forceInit=False)
PdnTypeEnum pdn_type() const
const uint16_t ntwk_inst_len() const
uint16_t calculateLength()
pfcp_create_qer_ie_t & data()
pfcp_eth_inact_timer_ie_t & data()
pfcp_pfcpsmreq_flags_ie_t & data()
UInt getNTPTimeSeconds() const
Retrieves the NTP time seconds representation of this ETime object.
Definition: etime.h:496
AdditionalUsageReportsInformationIE & add_usage_rpts_info(Bool forceInit=False)
FailedRuleIdIE & failed_rule_id(Bool forceInit=False)
OffendingIeIE & offending_ie(Bool forceInit=False)
const uint8_t * framed_route() const
const uint8_t * frwdng_plcy_ident() const
ForwardingParametersIE & frwdng_parms()
pfcp_metric_ie_t & data()
SessionEstablishmentRsp()
uint16_t calculateLength()
StartTimeIE & start_time()
const uint8_t * ntwk_inst() const
OuterHeaderRemovalEnum
Definition: pfcpr15.h:1897
uint16_t calculateLength()
uint32_t sbsqnt_evnt_thresh() const
uint16_t len_of_domain_nm_prot() const
pfcp_sess_set_del_req_t & data()
uint32_t sdf_filter_id() const
uint64_t uplink_volume() const
OverloadControlInformationIE & ovrld_ctl_info(Bool forceInit=False)
UsageReportTriggerIE & usage_rpt_trig()
uint16_t calculateLength()
AssnSetupReq(PFCP::LocalNodeSPtr &ln, PFCP::RemoteNodeSPtr &rn, Bool allocSeqNbr=True)
FramedIpv6RouteIE & frmd_ipv6_rte(uint8_t idx)
pfcp_remove_far_ie_t & data()
pfcp_usage_rpt_sess_rpt_req_ie_t & data()
uint16_t calculateLength()
PrecedenceIE & precedence()
UserPlanePathFailureReportIE & user_plane_path_fail_rpt(Bool forceInit=False)
ReportingTriggersIE & setVolqu(Bool val)
PdnTypeEnum
Definition: pfcpr15.h:2264
uint16_t calculateLength()
StartTimeIE & start_time()
RedirectAddressTypeEnum
Definition: pfcpr15.h:654
uint16_t calculateLength()
pfcp_quota_hldng_time_ie_t & data()
int next_evnt_time_stmp()
FramedIpv6RouteIE & frmd_ipv6_rte(uint8_t idx)
VolumeThresholdIE & vol_thresh()
pfcp_update_far_ie_t & data()
uint16_t calculateLength()
NetworkInstanceIE & ntwk_inst()
SessionSetDeletionRsp & encode(uint8_t *dest)
int next_actvt_predef_rules()
UplinkDownlinkTimeUnitEnum
Definition: pfcpr15.h:1862
EthertypeIE & ethertype()
uint16_t calculateLength()
ReportingTriggersIE & setLiusa(Bool val)
GracefulReleasePeriodTimerUnitEnum
Definition: pfcpr15.h:2234
Void setNTPTime(const ntp_time_t &ntp)
Assigns the time represented by the NTP time to this ETime object.
Definition: etime.cpp:1188
ETime time_of_frst_pckt() const
uint32_t eth_fltr_id_val() const
pfcp_node_rpt_rsp_t & data()
int next_user_plane_ip_rsrc_info()
MonitoringTimeIE & monitoring_time()
uint16_t calculateLength()
SubsequentEventQuotaIE & sbsqnt_evnt_quota()
ForwardingPolicyIE & frwdng_plcy()
pfcp_frwdng_parms_ie_t & data()
pfcp_vol_meas_ie_t & data()
VersionNotSupportedRsp & encode(uint8_t *dest)
pfcp_time_of_frst_pckt_ie_t & data()
ReportingTriggersIE & rptng_triggers()
const uint8_t * imsi() const
PagingPolicyIndicatorIE & paging_plcy_indctr()
const in6_addr & ipv6Address() const
Returns a reference to the in6_addr structure that represents an IPv6 address.
Definition: eip.h:228
CpFunctionFeaturesIE & cp_func_feat(Bool forceInit=False)
FarIdIE & far_id_for_quota_act()
SubsequentTimeQuotaIE & sbsqnt_time_quota()
uint16_t calculateLength()
pfcp_usage_rpt_sess_mod_rsp_ie_t & data()
UsageInformationIE & usage_info()
uint8_t timer_value() const
OuterHeaderCreationIE & outer_hdr_creation()
SubsequentEventThresholdIE & sbsqnt_evnt_thresh()
uint16_t calculateLength()
UplinkGateEnum ul_gate() const
ApplicationDetectionInformationIE & app_det_info()
pfcp_start_time_ie_t & data()
Encapsulates a sockaddr_storage structure that represents a socket address.
Definition: esocket.h:148
LinkedUrrIdIE & linked_urr_id(uint8_t idx)
uint16_t pdn_conn_set_ident(uint8_t idx) const
FqCsidIE & twan_fqcsid(Bool forceInit=False)
RecoveryTimeStampIE & rcvry_time_stmp(Bool forceInit=False)
VolumeQuotaIE & volume_quota()
pfcp_time_of_lst_pckt_ie_t & data()
uint16_t calculateLength()
pfcp_cp_func_feat_ie_t & data()
LoadControlInformationIE & load_ctl_info(Bool forceInit=False)
Family getFamily() const
Retrieves the address family for this address.
Definition: esocket.h:272
AggregatedUrrsIE & aggregated_urrs(uint8_t idx)
pfcp_evnt_time_stmp_ie_t & data()
uint16_t calculateLength()
ReportTypeIE & report_type(Bool forceInit=False)
const in6_addr & ipv6_address() const
uint16_t calculateLength()
TrafficEndpointIdIE & traffic_endpt_id()
const uint8_t * url2() const
pfcp_sess_del_req_t & data()
uint8_t pcp_value() const
uint8_t length_of_imei() const
DeactivatePredefinedRulesIE & deact_predef_rules(uint8_t idx)
pfcp_create_bar_ie_t & data()
pfcp_apn_dnn_ie_t & data()
CauseIE & cause(Bool forceInit=False)
UserPlaneInactivityTimerIE & user_plane_inact_timer(Bool forceInit=False)
pfcp_create_pdr_ie_t & data()
SessionModificationReq(PFCP::SessionBaseSPtr &ses, Bool allocSeqNbr=True)
TgppInterfaceTypeIE & dst_intfc_type()
pfcp_framed_route_ie_t & data()
RemoveFarIE & remove_far(uint8_t idx)
const uint8_t * cstm_pfd_cntnt() const
MultiplierIE & multiplier()
CreateTrafficEndpointIE & create_traffic_endpt(uint8_t idx)
uint16_t calculateLength()
int next_actvt_predef_rules()
TimeOfLastPacketIE & time_of_lst_pckt()
pfcp_drpd_dl_traffic_thresh_ie_t & data()
uint16_t calculateLength()
QuotaHoldingTimeIE & quota_hldng_time()
pfcp_update_qer_ie_t & data()
SessionDeletionRsp & encode(uint8_t *dest)
uint16_t calculateLength()
SubsequentVolumeQuotaIE & downlink_volume(uint64_t val)
uint16_t length_of_url() const
StartTimeIE & start_time()
const in_addr & ipv4_address() const
ApnDnnIE & apn_dnn(Bool forceInit=False)
uint16_t calculateLength()
HeartbeatRsp & encode(uint8_t *dest)
MbrIE & maximum_bitrate()
const uint8_t * node_id_value_fqdn() const
int next_pdn_conn_set_ident()
pfcp_precedence_ie_t & data()
DlBufferingDurationTimerUnitEnum
Definition: pfcpr15.h:920
uint8_t ppi_value() const
uint16_t calculateLength()
pfcp_sbsqnt_time_quota_ie_t & data()
NodeIdIE & node_id_value(const ESocket::Address &val)
uint64_t downlink_volume() const
uint32_t meas_period() const
AssnSetupRsp & encode(uint8_t *dest)
uint8_t len_of_msisdn() const
pfcp_eth_fltr_id_ie_t & data()
const uint8_t * msisdn() const
uint16_t calculateLength()
TrafficEndpointIdIE & traffic_endpt_id()
pfcp_aggregated_urrs_ie_t & data()
CreateQerIE & create_qer(uint8_t idx)