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),
232 (ie_.ch ? 0 :
sizeof(ie_.teid)) +
234 (ie_.v6 ?
sizeof(in6_addr) : 0) +
235 (ie_.v4 ?
sizeof(in_addr) : 0);
240 inline NetworkInstanceIE::NetworkInstanceIE(pfcp_ntwk_inst_ie_t &ie, LengthCalculator *parent)
241 : IEHeader(ie.header, PFCP_IE_NTWK_INST, parent),
248 return ie_.ntwk_inst;
253 return ie_.header.len;
263 if (len >
sizeof(ie_.ntwk_inst))
264 len =
sizeof(ie_.ntwk_inst);
265 ie_.header.len = len;
266 std::memcpy(ie_.ntwk_inst, val, len);
278 return ie_.header.len;
283 inline SdfFilterIE::SdfFilterIE(pfcp_sdf_filter_ie_t &ie, LengthCalculator *parent)
284 : IEHeader(ie.header, PFCP_IE_SDF_FILTER, parent),
316 return ie_.flow_desc;
321 return ie_.len_of_flow_desc;
326 return ie_.tos_traffic_cls;
331 return ie_.secur_parm_idx;
336 return ie_.flow_label;
341 return ie_.sdf_filter_id;
346 ie_.bid = bid ? 1 : 0;
353 if (flowDescLen >
sizeof(ie_.flow_desc))
354 flowDescLen =
sizeof(ie_.flow_desc);
356 ie_.len_of_flow_desc = flowDescLen;
357 std::memcpy(ie_.flow_desc, flowDesc, flowDescLen);
365 std::memcpy(ie_.tos_traffic_cls, tosTrafficClass,
sizeof(ie_.tos_traffic_cls));
373 std::memcpy(ie_.secur_parm_idx, securityParameterIndex,
sizeof(ie_.secur_parm_idx));
381 std::memcpy(ie_.flow_label, flowLabel,
sizeof(ie_.flow_label));
388 ie_.sdf_filter_id = sdfFilterId;
402 sizeof(ie_.sdf_fltr_spare2) +
403 (ie_.fd ? (
sizeof(ie_.len_of_flow_desc) + ie_.len_of_flow_desc) : 0) +
404 (ie_.ttc ?
sizeof(ie_.tos_traffic_cls) : 0) +
405 (ie_.spi ?
sizeof(ie_.secur_parm_idx) : 0) +
407 sizeof(ie_.sdf_filter_id)
413 inline ApplicationIdIE::ApplicationIdIE(pfcp_application_id_ie_t &ie, LengthCalculator *parent)
414 : IEHeader(ie.header, PFCP_IE_APPLICATION_ID, parent),
421 return ie_.header.len;
426 return ie_.app_ident;
431 if (len >
sizeof(ie_.app_ident))
432 len =
sizeof(ie_.app_ident);
433 std::memcpy(ie_.app_ident, app_id, len);
434 ie_.header.len = len;
445 return ie_.header.len;
450 inline GateStatusIE::GateStatusIE(pfcp_gate_status_ie_t &ie, LengthCalculator *parent)
451 : IEHeader(ie.header, PFCP_IE_GATE_STATUS, parent),
479 ie_.dl_gate =
static_cast<uint8_t
>(dl);
500 ie_.ul_gate =
static_cast<uint8_t
>(ul);
515 return sizeof(pfcp_gate_status_ie_t) -
sizeof(pfcp_ie_header_t);
520 inline MbrIE::MbrIE(pfcp_mbr_ie_t &ie, LengthCalculator *parent)
521 : IEHeader(ie.header, PFCP_IE_MBR, parent),
538 ie_.ul_mbr = mbr & 0x000000ffffffffff;
545 ie_.dl_mbr = mbr & 0x000000ffffffffff;
562 inline GbrIE::GbrIE(pfcp_gbr_ie_t &ie, LengthCalculator *parent)
563 : IEHeader(ie.header, PFCP_IE_GBR, parent),
580 ie_.ul_gbr = mbr & 0x000000ffffffffff;
587 ie_.dl_gbr = mbr & 0x000000ffffffffff;
606 return ie_.qer_corr_id_val;
611 ie_.qer_corr_id_val = id;
621 inline QerCorrelationIdIE::QerCorrelationIdIE(pfcp_qer_corr_id_ie_t &ie, LengthCalculator *parent)
622 : IEHeader(ie.header, PFCP_IE_QER_CORR_ID, parent),
629 return sizeof(pfcp_qer_corr_id_ie_t) -
sizeof(pfcp_ie_header_t);
636 return ie_.prcdnc_val;
641 ie_.prcdnc_val = val;
651 inline PrecedenceIE::PrecedenceIE(pfcp_precedence_ie_t &ie, LengthCalculator *parent)
652 : IEHeader(ie.header, PFCP_IE_PRECEDENCE, parent),
659 return sizeof(pfcp_precedence_ie_t) -
sizeof(pfcp_ie_header_t);
666 return ie_.tostraffic_cls;
671 std::memcpy(ie_.tostraffic_cls, val,
sizeof(ie_.tostraffic_cls));
681 inline TransportLevelMarkingIE::TransportLevelMarkingIE(pfcp_trnspt_lvl_marking_ie_t &ie, LengthCalculator *parent)
682 : IEHeader(ie.header, PFCP_IE_TRNSPT_LVL_MARKING, parent),
689 return sizeof(pfcp_trnspt_lvl_marking_ie_t) -
sizeof(pfcp_ie_header_t);
711 return ie_.total_volume;
716 return ie_.uplink_volume;
721 return ie_.downlink_volume;
727 ie_.total_volume = val;
735 ie_.uplink_volume = val;
743 ie_.downlink_volume = val;
753 inline VolumeThresholdIE::VolumeThresholdIE(pfcp_vol_thresh_ie_t &ie, LengthCalculator *parent)
754 : IEHeader(ie.header, PFCP_IE_VOL_THRESH, parent),
763 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
764 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
765 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
771 inline TimeThresholdIE::TimeThresholdIE(pfcp_time_threshold_ie_t &ie, LengthCalculator *parent)
772 : IEHeader(ie.header, PFCP_IE_TIME_THRESHOLD, parent),
779 return ie_.time_threshold;
784 ie_.time_threshold = val;
796 return sizeof(pfcp_time_threshold_ie_t) -
sizeof(pfcp_ie_header_t);
801 inline MonitoringTimeIE::MonitoringTimeIE(pfcp_monitoring_time_ie_t &ie, LengthCalculator *parent)
802 : IEHeader(ie.header, PFCP_IE_MONITORING_TIME, parent),
816 ie_.monitoring_time = val;
835 return sizeof(pfcp_monitoring_time_ie_t) -
sizeof(pfcp_ie_header_t);
840 inline SubsequentVolumeThresholdIE::SubsequentVolumeThresholdIE(pfcp_sbsqnt_vol_thresh_ie_t &ie, LengthCalculator *parent)
841 : IEHeader(ie.header, PFCP_IE_SBSQNT_VOL_THRESH, parent),
863 return ie_.total_volume;
868 return ie_.uplink_volume;
873 return ie_.downlink_volume;
879 ie_.total_volume = val;
887 ie_.uplink_volume = val;
895 ie_.downlink_volume = val;
909 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
910 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
911 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
917 inline SubsequentTimeThresholdIE::SubsequentTimeThresholdIE(pfcp_sbsqnt_time_thresh_ie_t &ie, LengthCalculator *parent)
918 : IEHeader(ie.header, PFCP_IE_SBSQNT_TIME_THRESH, parent),
925 return ie_.sbsqnt_time_thresh;
930 ie_.sbsqnt_time_thresh = val;
942 return sizeof(pfcp_sbsqnt_time_thresh_ie_t) -
sizeof(pfcp_ie_header_t);
949 return ie_.inact_det_time;
954 ie_.inact_det_time = val;
964 inline InactivityDetectionTimeIE::InactivityDetectionTimeIE(pfcp_inact_det_time_ie_t &ie, LengthCalculator *parent)
965 : IEHeader(ie.header, PFCP_IE_INACT_DET_TIME, parent),
972 return sizeof(pfcp_inact_det_time_ie_t) -
sizeof(pfcp_ie_header_t);
977 inline ReportingTriggersIE::ReportingTriggersIE(pfcp_rptng_triggers_ie_t &ie, LengthCalculator *parent)
978 : IEHeader(ie.header, PFCP_IE_RPTNG_TRIGGERS, parent),
1055 ie_.
perio = val ? 1 : 0;
1062 ie_.
volth = val ? 1 : 0;
1069 ie_.
timth = val ? 1 : 0;
1076 ie_.
quhti = val ? 1 : 0;
1083 ie_.
start = val ? 1 : 0;
1090 ie_.
stopt = val ? 1 : 0;
1097 ie_.
droth = val ? 1 : 0;
1104 ie_.
liusa = val ? 1 : 0;
1111 ie_.
volqu = val ? 1 : 0;
1118 ie_.
timqu = val ? 1 : 0;
1125 ie_.
envcl = val ? 1 : 0;
1132 ie_.
macar = val ? 1 : 0;
1139 ie_.
eveth = val ? 1 : 0;
1146 ie_.
evequ = val ? 1 : 0;
1158 return sizeof(pfcp_rptng_triggers_ie_t) -
sizeof(pfcp_ie_header_t);
1163 inline RedirectInformationIE::RedirectInformationIE(pfcp_redir_info_ie_t &ie, LengthCalculator *parent)
1164 : IEHeader(ie.header, PFCP_IE_REDIR_INFO, parent),
1176 return ie_.redir_svr_addr_len;
1181 return ie_.redir_svr_addr;
1186 return ie_.other_redir_svr_addr_len;
1191 return ie_.other_redir_svr_addr;
1196 ie_.redir_addr_type =
static_cast<uint8_t
>(val);
1203 if (len >
sizeof(ie_.redir_svr_addr))
1204 len =
sizeof(ie_.redir_svr_addr);
1205 ie_.redir_svr_addr_len = len;
1206 std::memcpy(ie_.redir_svr_addr, val, len);
1213 if (len >
sizeof(ie_.other_redir_svr_addr))
1214 len =
sizeof(ie_.other_redir_svr_addr);
1215 ie_.other_redir_svr_addr_len = len;
1216 std::memcpy(ie_.other_redir_svr_addr, val, len);
1230 sizeof(ie_.redir_svr_addr_len) +
1231 ie_.redir_svr_addr_len +
1232 sizeof(ie_.other_redir_svr_addr_len) +
1233 ie_.other_redir_svr_addr_len
1239 inline ReportTypeIE::ReportTypeIE(pfcp_report_type_ie_t &ie, LengthCalculator *parent)
1240 : IEHeader(ie.header, PFCP_IE_REPORT_TYPE, parent),
1267 ie_.dldr = val ? 1 : 0; setLength();
1273 ie_.usar = val ? 1 : 0; setLength();
1279 ie_.erir = val ? 1 : 0; setLength();
1285 ie_.upir = val ? 1 : 0; setLength();
1296 return sizeof(pfcp_report_type_ie_t) -
sizeof(pfcp_ie_header_t);
1303 return ie_.type_of_the_offending_ie;
1308 ie_.type_of_the_offending_ie = val;
1318 inline OffendingIeIE::OffendingIeIE(pfcp_offending_ie_ie_t &ie, LengthCalculator *parent)
1319 : IEHeader(ie.header, PFCP_IE_OFFENDING_IE, parent),
1326 return sizeof(pfcp_offending_ie_ie_t) -
sizeof(pfcp_ie_header_t);
1333 return ie_.frwdng_plcy_ident_len;
1338 return ie_.frwdng_plcy_ident;
1343 if (len >
sizeof(ie_.frwdng_plcy_ident))
1344 len =
sizeof(ie_.frwdng_plcy_ident);
1345 ie_.frwdng_plcy_ident_len = len;
1346 std::memcpy(ie_.frwdng_plcy_ident, val, len);
1356 inline ForwardingPolicyIE::ForwardingPolicyIE(pfcp_frwdng_plcy_ie_t &ie, LengthCalculator *parent)
1357 : IEHeader(ie.header, PFCP_IE_FRWDNG_PLCY, parent),
1364 return sizeof(ie_.frwdng_plcy_ident_len) + ie_.frwdng_plcy_ident_len;
1369 inline DestinationInterfaceIE::DestinationInterfaceIE(pfcp_dst_intfc_ie_t &ie, LengthCalculator *parent)
1370 : IEHeader(ie.header, PFCP_IE_DST_INTFC, parent),
1382 ie_.interface_value =
static_cast<uint8_t
>(val);
1394 return sizeof(pfcp_dst_intfc_ie_t) -
sizeof(pfcp_ie_header_t);
1399 inline UpFunctionFeaturesIE::UpFunctionFeaturesIE(pfcp_up_func_feat_ie_t &ie, LengthCalculator *parent)
1400 : IEHeader(ie.header, PFCP_IE_UP_FUNC_FEAT, parent),
1407 return ie_.sup_feat.bucp;
1412 return ie_.sup_feat.ddnd;
1417 return ie_.sup_feat.dlbd;
1422 return ie_.sup_feat.trst;
1427 return ie_.sup_feat.ftup;
1432 return ie_.sup_feat.pfdm;
1437 return ie_.sup_feat.heeu;
1442 return ie_.sup_feat.treu;
1447 return ie_.sup_feat.empu;
1452 return ie_.sup_feat.pdiu;
1457 return ie_.sup_feat.udbc;
1462 return ie_.sup_feat.quoac;
1467 return ie_.sup_feat.trace;
1472 return ie_.sup_feat.frrt;
1477 return ie_.sup_feat.pfde;
1482 ie_.sup_feat.bucp = val ? 1 : 0;
1489 ie_.sup_feat.ddnd = val ? 1 : 0;
1496 ie_.sup_feat.dlbd = val ? 1 : 0;
1503 ie_.sup_feat.trst = val ? 1 : 0;
1510 ie_.sup_feat.ftup = val ? 1 : 0;
1517 ie_.sup_feat.pfdm = val ? 1 : 0;
1524 ie_.sup_feat.heeu = val ? 1 : 0;
1531 ie_.sup_feat.treu = val ? 1 : 0;
1538 ie_.sup_feat.empu = val ? 1 : 0;
1545 ie_.sup_feat.pdiu = val ? 1 : 0;
1552 ie_.sup_feat.udbc = val ? 1 : 0;
1559 ie_.sup_feat.quoac = val ? 1 : 0;
1566 ie_.sup_feat.trace = val ? 1 : 0;
1573 ie_.sup_feat.frrt = val ? 1 : 0;
1580 ie_.sup_feat.pfde = val ? 1 : 0;
1592 return sizeof(pfcp_up_func_feat_ie_t) -
sizeof(pfcp_ie_header_t);
1597 inline ApplyActionIE::ApplyActionIE(pfcp_apply_action_ie_t &ie, LengthCalculator *parent)
1598 : IEHeader(ie.header, PFCP_IE_APPLY_ACTION, parent),
1630 ie_.drop = val ? 1 : 0;
1637 ie_.forw = val ? 1 : 0;
1644 ie_.buff = val ? 1 : 0;
1651 ie_.nocp = val ? 1 : 0;
1658 ie_.dupl = val ? 1 : 0;
1670 return sizeof(pfcp_apply_action_ie_t) -
sizeof(pfcp_ie_header_t);
1675 inline DownlinkDataServiceInformationIE::DownlinkDataServiceInformationIE(pfcp_dnlnk_data_svc_info_ie_t &ie, LengthCalculator *parent)
1676 : IEHeader(ie.header, PFCP_IE_DNLNK_DATA_SVC_INFO, parent),
1693 return ie_.paging_plcy_indctn_val;
1703 ie_.paging_plcy_indctn_val = val; ie_.ppi = 1;
1710 ie_.qfi = val; ie_.qfii = 1;
1731 inline DownlinkDataNotificationDelayIE::DownlinkDataNotificationDelayIE(pfcp_dnlnk_data_notif_delay_ie_t &ie, LengthCalculator *parent)
1732 : IEHeader(ie.header, PFCP_IE_DNLNK_DATA_NOTIF_DELAY, parent),
1739 return ie_.delay_val_in_integer_multiples_of_50_millisecs_or_zero;
1744 ie_.delay_val_in_integer_multiples_of_50_millisecs_or_zero = val;
1756 return sizeof(pfcp_dnlnk_data_notif_delay_ie_t) -
sizeof(pfcp_ie_header_t);
1761 inline DlBufferingDurationIE::DlBufferingDurationIE(pfcp_dl_buf_dur_ie_t &ie, LengthCalculator *parent)
1762 : IEHeader(ie.header, PFCP_IE_DL_BUF_DUR, parent),
1769 return (ie_.timer_unit == 5 || ie_.timer_unit == 6) ?
1776 return ie_.timer_value;
1781 ie_.timer_unit =
static_cast<uint8_t
>(val);
1788 ie_.timer_value = val;
1800 return sizeof(pfcp_dl_buf_dur_ie_t) -
sizeof(pfcp_ie_header_t);
1805 inline DlBufferingSuggestedPacketCountIE::DlBufferingSuggestedPacketCountIE(pfcp_dl_buf_suggstd_pckt_cnt_ie_t &ie, LengthCalculator *parent)
1806 : IEHeader(ie.header, PFCP_IE_DL_BUF_SUGGSTD_PCKT_CNT, parent),
1813 return ie_.pckt_cnt_val;
1818 ie_.pckt_cnt_val = val;
1830 return ie_.pckt_cnt_val < 256 ? 1 : 2;
1835 inline PfcpSmReqFlagsIE::PfcpSmReqFlagsIE(pfcp_pfcpsmreq_flags_ie_t &ie, LengthCalculator *parent)
1836 : IEHeader(ie.header, PFCP_IE_PFCPSMREQ_FLAGS, parent),
1858 ie_.drobu = val ? 1 : 0;
1865 ie_.sndem = val ? 1 : 0;
1872 ie_.qaurr = val ? 1 : 0;
1884 return sizeof(pfcp_pfcpsmreq_flags_ie_t) -
sizeof(pfcp_ie_header_t);
1889 inline PfcpSrRspFlagsIE::PfcpSrRspFlagsIE(pfcp_pfcpsrrsp_flags_ie_t &ie, LengthCalculator *parent)
1890 : IEHeader(ie.header, PFCP_IE_PFCPSRRSP_FLAGS, parent),
1902 ie_.drobu = val ? 1 : 0;
1914 return sizeof(pfcp_pfcpsrrsp_flags_ie_t) -
sizeof(pfcp_ie_header_t);
1919 inline SequenceNumberIE::SequenceNumberIE(pfcp_sequence_number_ie_t &ie, LengthCalculator *parent)
1920 : IEHeader(ie.header, PFCP_IE_SEQUENCE_NUMBER, parent),
1927 return ie_.sequence_number;
1932 ie_.sequence_number = val;
1944 return sizeof(pfcp_sequence_number_ie_t) -
sizeof(pfcp_ie_header_t);
1949 inline MetricIE::MetricIE(pfcp_metric_ie_t &ie, LengthCalculator *parent)
1950 : IEHeader(ie.header, PFCP_IE_METRIC, parent),
1957 return ie_.metric > 100 ? 0 : ie_.metric;
1962 ie_.metric = val > 100 ? 0 : val;
1974 return sizeof(pfcp_metric_ie_t) -
sizeof(pfcp_ie_header_t);
1981 return (ie_.timer_unit == 5 || ie_.timer_unit == 6) ?
1988 return ie_.timer_value;
1993 ie_.timer_unit =
static_cast<uint8_t
>(val);
2000 ie_.timer_value = val;
2010 inline TimerIE::TimerIE(pfcp_timer_ie_t &ie, LengthCalculator *parent)
2011 : IEHeader(ie.header, PFCP_IE_DL_BUF_DUR, parent),
2018 return sizeof(pfcp_timer_ie_t) -
sizeof(pfcp_ie_header_t);
2040 inline PdrIdIE::PdrIdIE(pfcp_pdr_id_ie_t &ie, LengthCalculator *parent)
2041 : IEHeader(ie.header, PFCP_IE_PDR_ID, parent),
2048 return sizeof(pfcp_pdr_id_ie_t) -
sizeof(pfcp_ie_header_t);
2071 u.uint32_t_ptr = &ie_.ipv4_address;
2072 return *u.in_addr_ptr;
2078 u.uint8_t_ptr = ie_.ipv6_address;
2079 return *u.in6_addr_ptr;
2092 return ip_address(val.
getInet().sin_addr);
2094 return ip_address(val.
getInet6().sin6_addr);
2100 if (val.
family() == AF_INET)
2102 else if (val.
family() == AF_INET6)
2110 ie_.ipv4_address = val.s_addr;
2118 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
2128 inline FSeidIE::FSeidIE(pfcp_fseid_ie_t &ie, LengthCalculator *parent)
2129 : IEHeader(ie.header, PFCP_IE_FSEID, parent),
2138 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
2139 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0)
2153 u.uint32_t_ptr = &ie_.node_id_value_ipv4_address;
2154 return *u.in_addr_ptr;
2160 u.uint8_t_ptr = ie_.node_id_value_ipv6_address;
2161 return *u.in6_addr_ptr;
2166 return ie_.node_id_value_fqdn;
2171 return ie_.header.len - 1;
2177 return node_id_value(val.
getInet().sin_addr);
2179 return node_id_value(val.
getInet6().sin6_addr);
2185 if (val.
family() == AF_INET)
2187 else if (val.
family() == AF_INET6)
2195 std::memcpy(&ie_.node_id_value_ipv4_address, &val,
sizeof(val));
2203 std::memcpy(ie_.node_id_value_ipv6_address, val.s6_addr,
sizeof(val));
2216 if(len !=
sizeof(ie_.node_id_value_ipv4_address))
2217 throw NodeIdException_NodeIdTypeLengthMismatch();
2218 std::memcpy(&ie_.node_id_value_ipv4_address, val,
sizeof(ie_.node_id_value_ipv4_address));
2223 if(len !=
sizeof(ie_.node_id_value_ipv6_address))
2224 throw NodeIdException_NodeIdTypeLengthMismatch();
2225 std::memcpy(ie_.node_id_value_ipv6_address, val,
sizeof(ie_.node_id_value_ipv6_address));
2230 if (len >
sizeof(ie_.node_id_value_fqdn))
2231 len =
sizeof(ie_.node_id_value_fqdn);
2232 std::memcpy(ie_.node_id_value_fqdn, val, len);
2233 ie_.header.len = 1 + len;
2238 throw NodeIdException_UnrecognizedNodeIdType((Int) type);
2251 inline NodeIdIE::NodeIdIE(pfcp_node_id_ie_t &ie, LengthCalculator *parent)
2252 : IEHeader(ie.header, PFCP_IE_NODE_ID, parent),
2262 ie_.node_id_type == 0 ?
sizeof(in_addr) :
2263 ie_.node_id_type == 1 ?
sizeof(in6_addr) :
2270 #define REPLACE_DATA(flag,srcofs,len_of,dest,destofs,destsize,value,value_length) \ 2272 if (destofs + value_length > destsize) \ 2274 srcofs += flag ? len_of : 0; \ 2276 len_of = value_length; \ 2277 std::memcpy(&dest[destofs], value, value_length); \ 2278 destofs += value_length; \ 2281 #define ADD_DATA(flag,src,srcofs,len_of,dest,destofs,destsize,value,value_length) \ 2284 if (destofs + value_length + sizeof(uint16_t) > destsize) \ 2287 std::memcpy(&dest[destofs], &src[srcofs], len_of); \ 2289 destofs += len_of; \ 2294 len_of += value_length + sizeof(uint16_t); \ 2295 u.uint8_t_ptr = &dest[destofs]; \ 2296 *u.uint16_t_ptr = htons(value_length); \ 2297 destofs += sizeof(uint16_t); \ 2298 std::memcpy(&dest[destofs], value, value_length); \ 2299 destofs += value_length; \ 2344 return ie_.len_of_flow_desc;
2349 return ie_.flow_desc;
2354 return ie_.length_of_url;
2364 return ie_.len_of_domain_nm;
2369 return ie_.domain_name;
2374 return ie_.len_of_cstm_pfd_cntnt;
2379 return ie_.cstm_pfd_cntnt;
2384 return ie_.len_of_domain_nm_prot;
2389 return ie_.domain_name_prot;
2394 return ie_.len_of_add_flow_desc;
2399 return ie_.add_flow_desc;
2404 return ie_.len_of_add_url;
2414 return ie_.len_of_add_domain_nm_prot;
2419 return ie_.add_domain_nm_prot;
2424 uint16_t tmpofs = 0;
2425 uint16_t dataofs = 0;
2426 uint8_t tmp[
sizeof(ie_.data)];
2428 REPLACE_DATA(ie_.fd, dataofs, ie_.len_of_flow_desc, tmp, tmpofs,
sizeof(ie_.data), val, len);
2430 if (!move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2431 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2432 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2433 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2434 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2435 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2436 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2439 std::memcpy(ie_.data, tmp, tmpofs);
2448 uint16_t tmpofs = 0;
2449 uint16_t dataofs = 0;
2450 uint8_t tmp[
sizeof(ie_.data)];
2452 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)))
2455 REPLACE_DATA(ie_.url, dataofs, ie_.length_of_url, tmp, tmpofs,
sizeof(ie_.data), val, len);
2457 if (!move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2458 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2459 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2460 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2461 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2462 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2465 std::memcpy(ie_.data, tmp, tmpofs);
2474 uint16_t tmpofs = 0;
2475 uint16_t dataofs = 0;
2476 uint8_t tmp[
sizeof(ie_.data)];
2478 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2479 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)))
2482 REPLACE_DATA(ie_.dn, dataofs, ie_.len_of_domain_nm, tmp, tmpofs,
sizeof(ie_.data), val, len);
2484 if (!move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2485 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2486 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2487 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2488 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2491 std::memcpy(ie_.data, tmp, tmpofs);
2500 uint16_t tmpofs = 0;
2501 uint16_t dataofs = 0;
2502 uint8_t tmp[
sizeof(ie_.data)];
2504 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2505 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2506 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)))
2509 REPLACE_DATA(ie_.cp, dataofs, ie_.len_of_cstm_pfd_cntnt, tmp, tmpofs,
sizeof(ie_.data), val, len);
2511 if (!move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2512 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2513 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2514 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2517 std::memcpy(ie_.data, tmp, tmpofs);
2526 uint16_t tmpofs = 0;
2527 uint16_t dataofs = 0;
2528 uint8_t tmp[
sizeof(ie_.data)];
2530 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2531 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2532 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2533 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)))
2536 REPLACE_DATA(ie_.dnp, dataofs, ie_.len_of_domain_nm_prot, tmp, tmpofs,
sizeof(ie_.data), val, len);
2538 if (!move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2539 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2540 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2543 std::memcpy(ie_.data, tmp, tmpofs);
2552 uint16_t tmpofs = 0;
2553 uint16_t dataofs = 0;
2554 uint8_t tmp[
sizeof(ie_.data)];
2556 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2557 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2558 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2559 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2560 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)))
2563 ADD_DATA(ie_.afd, ie_.data, dataofs, ie_.len_of_add_flow_desc, tmp, tmpofs,
sizeof(ie_.data), val, len);
2565 if (!move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)) ||
2566 !move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2569 std::memcpy(ie_.data, tmp, tmpofs);
2578 uint16_t tmpofs = 0;
2579 uint16_t dataofs = 0;
2580 uint8_t tmp[
sizeof(ie_.data)];
2582 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2583 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2584 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2585 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2586 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2587 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)))
2590 ADD_DATA(ie_.aurl, ie_.data, dataofs, ie_.len_of_add_url, tmp, tmpofs,
sizeof(ie_.data), val, len);
2592 if (!move(ie_.adnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot,
sizeof(ie_.data)))
2595 std::memcpy(ie_.data, tmp, tmpofs);
2604 uint16_t tmpofs = 0;
2605 uint16_t dataofs = 0;
2606 uint8_t tmp[
sizeof(ie_.data)];
2608 if (!move(ie_.fd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_flow_desc,
sizeof(ie_.data)) ||
2609 !move(ie_.url, tmp, tmpofs, ie_.data, dataofs, ie_.length_of_url,
sizeof(ie_.data)) ||
2610 !move(ie_.dn, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm,
sizeof(ie_.data)) ||
2611 !move(ie_.cp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt,
sizeof(ie_.data)) ||
2612 !move(ie_.dnp, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_domain_nm_prot,
sizeof(ie_.data)) ||
2613 !move(ie_.afd, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_flow_desc,
sizeof(ie_.data)) ||
2614 !move(ie_.aurl, tmp, tmpofs, ie_.data, dataofs, ie_.len_of_add_url,
sizeof(ie_.data)))
2617 ADD_DATA(ie_.adnp, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot, tmp, tmpofs,
sizeof(ie_.data), val, len);
2619 std::memcpy(ie_.data, tmp, tmpofs);
2631 inline PfdContentsIE::PfdContentsIE(pfcp_pfd_contents_ie_t &ie, LengthCalculator *parent)
2632 : IEHeader(ie.header, PFCP_IE_PFD_CONTENTS, parent),
2641 (ie_.fd ? ie_.len_of_flow_desc : 0) +
2642 (ie_.url ? ie_.length_of_url : 0) +
2643 (ie_.dn ? ie_.len_of_domain_nm : 0) +
2644 (ie_.cp ? ie_.len_of_cstm_pfd_cntnt : 0) +
2645 (ie_.dnp ? ie_.len_of_domain_nm_prot : 0) +
2646 (ie_.afd ? ie_.len_of_add_flow_desc : 0) +
2647 (ie_.aurl ? ie_.len_of_add_url : 0) +
2648 (ie_.adnp ? ie_.len_of_add_domain_nm_prot : 0)
2652 inline Bool PfdContentsIE::move(Bool flag, uint8_t *dest, uint16_t &destofs, uint8_t *src, uint16_t &srcofs, uint16_t len, uint16_t maxlen)
2656 if (destofs + len < maxlen)
2658 std::memcpy(&dest[destofs], &src[srcofs], len);
2665 inline Void PfdContentsIE::updatePointer(Bool flag, uint8_t* &ptr, uint8_t *data, uint16_t &ofs, uint16_t len)
2678 inline Void PfdContentsIE::updatePointers()
2680 uint16_t dataofs = 0;
2681 updatePointer(ie_.fd, ie_.flow_desc, ie_.data, dataofs, ie_.len_of_flow_desc);
2682 updatePointer(ie_.url, ie_.url2, ie_.data, dataofs, ie_.length_of_url);
2683 updatePointer(ie_.dn, ie_.domain_name, ie_.data, dataofs, ie_.len_of_domain_nm);
2684 updatePointer(ie_.cp, ie_.cstm_pfd_cntnt, ie_.data, dataofs, ie_.len_of_cstm_pfd_cntnt);
2685 updatePointer(ie_.dnp, ie_.domain_name_prot, ie_.data, dataofs, ie_.len_of_domain_nm_prot);
2686 updatePointer(ie_.afd, ie_.add_flow_desc, ie_.data, dataofs, ie_.len_of_add_flow_desc);
2687 updatePointer(ie_.aurl, ie_.add_url, ie_.data, dataofs, ie_.len_of_add_url);
2688 updatePointer(ie_.adnp, ie_.add_domain_nm_prot, ie_.data, dataofs, ie_.len_of_add_domain_nm_prot);
2713 ie_.durat = val ? 1 : 0; setLength();
2719 ie_.volum = val ? 1 : 0; setLength();
2725 ie_.event = val ? 1 : 0; setLength();
2734 inline MeasurementMethodIE::MeasurementMethodIE(pfcp_meas_mthd_ie_t &ie, LengthCalculator *parent)
2735 : IEHeader(ie.header, PFCP_IE_MEAS_MTHD, parent),
2742 return sizeof(pfcp_meas_mthd_ie_t) -
sizeof(pfcp_ie_header_t);
2834 ie_.immer = val; setLength();
2840 ie_.droth = val; setLength();
2846 ie_.stopt = val; setLength();
2852 ie_.start = val; setLength();
2858 ie_.quhti = val; setLength();
2864 ie_.timth = val; setLength();
2870 ie_.volth = val; setLength();
2876 ie_.perio = val; setLength();
2882 ie_.eveth = val; setLength();
2888 ie_.macar = val; setLength();
2894 ie_.envcl = val; setLength();
2900 ie_.monit = val; setLength();
2906 ie_.termr = val; setLength();
2912 ie_.liusa = val; setLength();
2918 ie_.timqu = val; setLength();
2924 ie_.volqu = val; setLength();
2930 ie_.evequ = val; setLength();
2939 inline UsageReportTriggerIE::UsageReportTriggerIE(pfcp_usage_rpt_trig_ie_t &ie, LengthCalculator *parent)
2940 : IEHeader(ie.header, PFCP_IE_USAGE_RPT_TRIG, parent),
2947 return sizeof(pfcp_usage_rpt_trig_ie_t) -
sizeof(pfcp_ie_header_t);
2954 return ie_.meas_period;
2959 ie_.meas_period = val;
2969 inline MeasurementPeriodIE::MeasurementPeriodIE(pfcp_meas_period_ie_t &ie, LengthCalculator *parent)
2970 : IEHeader(ie.header, PFCP_IE_MEAS_PERIOD, parent),
2977 return sizeof(pfcp_meas_period_ie_t) -
sizeof(pfcp_ie_header_t);
2989 return ie_.number_of_csids;
2995 u.uint8_t_ptr = ie_.node_address;
2996 return *u.in_addr_ptr;
3002 u.uint8_t_ptr = ie_.node_address;
3003 return *u.in6_addr_ptr;
3009 u.uint8_t_ptr = ie_.node_address;
3010 return ntohl(*u.uint32_t_ptr);
3015 return ie_.pdn_conn_set_ident[idx];
3021 return node_address(val.
getInet().sin_addr);
3023 return node_address(val.
getInet6().sin6_addr);
3029 if (val.
family() == AF_INET)
3031 else if (val.
family() == AF_INET6)
3040 u.uint8_t_ptr = ie_.node_address;
3041 u.in_addr_ptr->s_addr = val.s_addr;
3049 std::memcpy(ie_.node_address, val.s6_addr,
sizeof(ie_.node_address));
3058 u.uint8_t_ptr = ie_.node_address;
3059 *u.uint32_t_ptr = htonl(val);
3067 return ie_.pdn_conn_set_ident[idx];
3072 return (ie_.number_of_csids < PDN_CONN_SET_IDENT_LEN) ?
3073 ie_.number_of_csids++ : -1;
3081 inline FqCsidIE::FqCsidIE(pfcp_fqcsid_ie_t &ie, LengthCalculator *parent)
3082 : IEHeader(ie.header, PFCP_IE_FQCSID, parent),
3091 (ie_.fqcsid_node_id_type == 1 ? IPV6_ADDRESS_LEN :
sizeof(uint32_t)) +
3092 (ie_.number_of_csids *
sizeof(uint16_t))
3115 return ie_.total_volume;
3120 return ie_.uplink_volume;
3125 return ie_.downlink_volume;
3131 ie_.total_volume = val;
3139 ie_.uplink_volume = val;
3147 ie_.downlink_volume = val;
3157 inline VolumeMeasurementIE::VolumeMeasurementIE(pfcp_vol_meas_ie_t &ie, LengthCalculator *parent)
3158 : IEHeader(ie.header, PFCP_IE_VOL_MEAS, parent),
3167 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
3168 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
3169 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
3177 return ie_.duration_value;
3182 ie_.duration_value = val;
3192 inline DurationMeasurementIE::DurationMeasurementIE(pfcp_dur_meas_ie_t &ie, LengthCalculator *parent)
3193 : IEHeader(ie.header, PFCP_IE_DUR_MEAS, parent),
3200 return sizeof(pfcp_dur_meas_ie_t) -
sizeof(pfcp_ie_header_t);
3221 ie_.time_of_frst_pckt = val;
3231 inline TimeOfFirstPacketIE::TimeOfFirstPacketIE(pfcp_time_of_frst_pckt_ie_t &ie, LengthCalculator *parent)
3232 : IEHeader(ie.header, PFCP_IE_TIME_OF_FRST_PCKT, parent),
3239 return sizeof(pfcp_time_of_frst_pckt_ie_t) -
sizeof(pfcp_ie_header_t);
3270 inline TimeOfLastPacketIE::TimeOfLastPacketIE(pfcp_time_of_lst_pckt_ie_t &ie, LengthCalculator *parent)
3271 : IEHeader(ie.header, PFCP_IE_TIME_OF_LST_PCKT, parent),
3278 return sizeof(pfcp_time_of_lst_pckt_ie_t) -
sizeof(pfcp_ie_header_t);
3285 return ie_.quota_hldng_time_val;
3290 ie_.quota_hldng_time_val = val;
3300 inline QuotaHoldingTimeIE::QuotaHoldingTimeIE(pfcp_quota_hldng_time_ie_t &ie, LengthCalculator *parent)
3301 : IEHeader(ie.header, PFCP_IE_QUOTA_HLDNG_TIME, parent),
3308 return sizeof(pfcp_quota_hldng_time_ie_t) -
sizeof(pfcp_ie_header_t);
3326 ie_.dnlnk_pckts = val;
3334 ie_.nbr_of_bytes_of_dnlnk_data = val;
3344 inline DroppedDlTrafficThresholdIE::DroppedDlTrafficThresholdIE(pfcp_drpd_dl_traffic_thresh_ie_t &ie, LengthCalculator *parent)
3345 : IEHeader(ie.header, PFCP_IE_DRPD_DL_TRAFFIC_THRESH, parent),
3354 (ie_.dlpa ?
sizeof(ie_.dnlnk_pckts) : 0) +
3355 (ie_.dlby ?
sizeof(ie_.nbr_of_bytes_of_dnlnk_data) : 0)
3379 ie_.total_volume = val;
3387 ie_.uplink_volume = val;
3395 ie_.downlink_volume = val;
3405 inline VolumeQuotaIE::VolumeQuotaIE(pfcp_volume_quota_ie_t &ie, LengthCalculator *parent)
3406 : IEHeader(ie.header, PFCP_IE_VOLUME_QUOTA, parent),
3415 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
3416 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
3417 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
3425 return ie_.time_quota_val;
3430 ie_.time_quota_val = val;
3440 inline TimeQuotaIE::TimeQuotaIE(pfcp_time_quota_ie_t &ie, LengthCalculator *parent)
3441 : IEHeader(ie.header, PFCP_IE_TIME_QUOTA, parent),
3448 return sizeof(pfcp_time_quota_ie_t) -
sizeof(pfcp_ie_header_t);
3469 ie_.start_time = val;
3479 inline StartTimeIE::StartTimeIE(pfcp_start_time_ie_t &ie, LengthCalculator *parent)
3480 : IEHeader(ie.header, PFCP_IE_START_TIME, parent),
3487 return sizeof(pfcp_start_time_ie_t) -
sizeof(pfcp_ie_header_t);
3518 inline EndTimeIE::EndTimeIE(pfcp_end_time_ie_t &ie, LengthCalculator *parent)
3519 : IEHeader(ie.header, PFCP_IE_END_TIME, parent),
3526 return sizeof(pfcp_end_time_ie_t) -
sizeof(pfcp_ie_header_t);
3533 return ie_.urr_id_value;
3538 ie_.urr_id_value = val;
3548 inline UrrIdIE::UrrIdIE(pfcp_urr_id_ie_t &ie, LengthCalculator *parent)
3549 : IEHeader(ie.header, PFCP_IE_URR_ID, parent),
3556 return sizeof(pfcp_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
3563 return ie_.lnkd_urr_id_val;
3568 ie_.lnkd_urr_id_val = val;
3578 inline LinkedUrrIdIE::LinkedUrrIdIE(pfcp_linked_urr_id_ie_t &ie, LengthCalculator *parent)
3579 : IEHeader(ie.header, PFCP_IE_LINKED_URR_ID, parent),
3586 return sizeof(pfcp_linked_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
3593 return ie_.outer_hdr_creation_desc.gtpu_udp_ipv4;
3598 return ie_.outer_hdr_creation_desc.gtpu_udp_ipv6;
3603 return ie_.outer_hdr_creation_desc.udp_ipv4;
3608 return ie_.outer_hdr_creation_desc.udp_ipv6;
3613 return ie_.outer_hdr_creation_desc.ipv4;
3618 return ie_.outer_hdr_creation_desc.ipv6;
3623 return ie_.outer_hdr_creation_desc.ctag;
3628 return ie_.outer_hdr_creation_desc.stag;
3639 u.uint32_t_ptr = &ie_.ipv4_address;
3640 return *u.in_addr_ptr;
3646 u.uint8_t_ptr = ie_.ipv6_address;
3647 return *u.in6_addr_ptr;
3652 return ie_.port_number;
3668 ip_address_teid(addr.
getInet().sin_addr, teid);
3670 ip_address_teid(addr.
getInet6().sin6_addr, teid);
3676 if (addr.
family() == AF_INET)
3678 else if (addr.
family() == AF_INET6)
3686 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3687 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3688 ie_.outer_hdr_creation_desc.ipv4 = 0;
3689 ie_.outer_hdr_creation_desc.ipv6 = 0;
3690 ie_.outer_hdr_creation_desc.ctag = 0;
3691 ie_.outer_hdr_creation_desc.stag = 0;
3693 ie_.ipv4_address = addr.s_addr;
3701 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3702 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3703 ie_.outer_hdr_creation_desc.ipv4 = 0;
3704 ie_.outer_hdr_creation_desc.ipv6 = 0;
3705 ie_.outer_hdr_creation_desc.ctag = 0;
3706 ie_.outer_hdr_creation_desc.stag = 0;
3708 std::memcpy(ie_.ipv6_address, addr.s6_addr,
sizeof(ie_.ipv6_address));
3716 ip_address_port(addr.
getInet().sin_addr, port, protocol);
3718 ip_address_port(addr.
getInet6().sin6_addr, port, protocol);
3724 if (addr.
family() == AF_INET)
3725 ip_address_port(addr.
ipv4Address(), port, protocol);
3726 else if (addr.
family() == AF_INET6)
3727 ip_address_port(addr.
ipv6Address(), port, protocol);
3735 ie_.outer_hdr_creation_desc.
udp_ipv4 = 0;
3736 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3737 ie_.outer_hdr_creation_desc.ipv4 = 1;
3738 ie_.outer_hdr_creation_desc.ipv6 = 0;
3742 ie_.outer_hdr_creation_desc.udp_ipv4 = 1;
3743 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3744 ie_.outer_hdr_creation_desc.ipv4 = 0;
3745 ie_.outer_hdr_creation_desc.ipv6 = 0;
3751 ie_.port_number = port;
3752 ie_.ipv4_address = addr.s_addr;
3761 ie_.outer_hdr_creation_desc.
udp_ipv4 = 0;
3762 ie_.outer_hdr_creation_desc.udp_ipv6 = 0;
3763 ie_.outer_hdr_creation_desc.ipv4 = 0;
3764 ie_.outer_hdr_creation_desc.ipv6 = 1;
3768 ie_.outer_hdr_creation_desc.udp_ipv4 = 0;
3769 ie_.outer_hdr_creation_desc.udp_ipv6 = 1;
3770 ie_.outer_hdr_creation_desc.ipv4 = 0;
3771 ie_.outer_hdr_creation_desc.ipv6 = 0;
3777 ie_.port_number = port;
3778 std::memcpy(ie_.ipv6_address, addr.s6_addr,
sizeof(ie_.ipv6_address));
3785 ie_.outer_hdr_creation_desc.ctag = 1;
3786 std::memcpy(ie_.ctag, val,
sizeof(ie_.ctag));
3793 ie_.outer_hdr_creation_desc.stag = 1;
3794 std::memcpy(ie_.stag, val,
sizeof(ie_.stag));
3804 inline OuterHeaderCreationIE::OuterHeaderCreationIE(pfcp_outer_hdr_creation_ie_t &ie, LengthCalculator *parent)
3805 : IEHeader(ie.header, PFCP_IE_OUTER_HDR_CREATION, parent),
3813 sizeof(ie_.outer_hdr_creation_desc) +
3814 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv4 || ie_.outer_hdr_creation_desc.gtpu_udp_ipv6 ?
sizeof(ie_.teid) : 0) +
3815 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3816 (ie_.outer_hdr_creation_desc.gtpu_udp_ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3817 (ie_.outer_hdr_creation_desc.udp_ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3818 (ie_.outer_hdr_creation_desc.udp_ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3819 (ie_.outer_hdr_creation_desc.ipv4 ?
sizeof(ie_.ipv4_address) : 0) +
3820 (ie_.outer_hdr_creation_desc.ipv6 ?
sizeof(ie_.ipv6_address) : 0) +
3821 (ie_.outer_hdr_creation_desc.udp_ipv4 || ie_.outer_hdr_creation_desc.udp_ipv6 ||
3822 ie_.outer_hdr_creation_desc.ipv4 || ie_.outer_hdr_creation_desc.ipv6 ?
sizeof(ie_.port_number) : 0) +
3823 (ie_.outer_hdr_creation_desc.ctag ?
sizeof(ie_.ctag) : 0) +
3824 (ie_.outer_hdr_creation_desc.stag ?
sizeof(ie_.stag) : 0)
3832 return ie_.bar_id_value;
3837 ie_.bar_id_value = val;
3847 inline BarIdIE::BarIdIE(pfcp_bar_id_ie_t &ie, LengthCalculator *parent)
3848 : IEHeader(ie.header, PFCP_IE_BAR_ID, parent),
3855 return sizeof(pfcp_bar_id_ie_t) -
sizeof(pfcp_ie_header_t);
3862 return ie_.sup_feat.load;
3867 return ie_.sup_feat.ovrl;
3872 ie_.sup_feat.load = val ? 1 : 0; setLength();
3878 ie_.sup_feat.ovrl = val ? 1 : 0; setLength();
3887 inline CpFunctionFeaturesIE::CpFunctionFeaturesIE(pfcp_cp_func_feat_ie_t &ie, LengthCalculator *parent)
3888 : IEHeader(ie.header, PFCP_IE_CP_FUNC_FEAT, parent),
3895 return sizeof(pfcp_cp_func_feat_ie_t) -
sizeof(pfcp_ie_header_t);
3922 ie_.bef = val ? 1 : 0; setLength();
3928 ie_.aft = val ? 1 : 0; setLength();
3934 ie_.uae = val ? 1 : 0; setLength();
3940 ie_.ube = val ? 1 : 0; setLength();
3949 inline UsageInformationIE::UsageInformationIE(pfcp_usage_info_ie_t &ie, LengthCalculator *parent)
3950 : IEHeader(ie.header, PFCP_IE_USAGE_INFO, parent),
3957 return sizeof(pfcp_usage_info_ie_t) -
sizeof(pfcp_ie_header_t);
3964 return ie_.app_inst_ident;
3969 if (len >
sizeof(ie_.app_inst_ident))
3970 len =
sizeof(ie_.app_inst_ident);
3971 std::memcpy(ie_.app_inst_ident, val, len);
3972 ie_.header.len = len;
3981 inline ApplicationInstanceIdIE::ApplicationInstanceIdIE(pfcp_app_inst_id_ie_t &ie, LengthCalculator *parent)
3982 : IEHeader(ie.header, PFCP_IE_APP_INST_ID, parent),
3989 return ie_.header.len;
4001 ie_.flow_direction =
static_cast<uint8_t
>(val);
4008 if (len >
sizeof(ie_.flow_desc))
4009 len =
sizeof(ie_.flow_desc);
4010 ie_.len_of_flow_desc = len;
4011 std::memcpy(ie_.flow_desc, val, len);
4021 inline FlowInformationIE::FlowInformationIE(pfcp_flow_info_ie_t &ie, LengthCalculator *parent)
4022 : IEHeader(ie.header, PFCP_IE_FLOW_INFO, parent),
4031 sizeof(ie_.len_of_flow_desc) +
4032 ie_.len_of_flow_desc
4061 u.uint32_t_ptr = &ie_.ipv4_address;
4062 return *u.in_addr_ptr;
4068 u.uint8_t_ptr = ie_.ipv6_address;
4069 return *u.in6_addr_ptr;
4074 return ie_.ipv6_pfx_dlgtn_bits;
4079 ie_.sd = val ? 1 : 0;
4087 return ip_address(val.
getInet().sin_addr);
4089 return ip_address(val.
getInet6().sin6_addr);
4095 if (val.
family() == AF_INET)
4097 else if (val.
family() == AF_INET6)
4105 ie_.ipv4_address = val.s_addr;
4113 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
4121 ie_.ipv6_pfx_dlgtn_bits = val;
4131 inline UeIpAddressIE::UeIpAddressIE(pfcp_ue_ip_address_ie_t &ie, LengthCalculator *parent)
4132 : IEHeader(ie.header, PFCP_IE_UE_IP_ADDRESS, parent),
4139 return sizeof(pfcp_ue_ip_address_ie_t) -
sizeof(pfcp_ie_header_t);
4161 return ie_.max_uplnk_pckt_rate;
4171 return ie_.max_dnlnk_pckt_rate;
4177 ie_.uplnk_time_unit =
static_cast<uint8_t
>(tu);
4178 ie_.max_uplnk_pckt_rate = val;
4186 ie_.dnlnk_time_unit =
static_cast<uint8_t
>(tu);
4187 ie_.max_dnlnk_pckt_rate = val;
4197 inline PacketRateIE::PacketRateIE(pfcp_packet_rate_ie_t &ie, LengthCalculator *parent)
4198 : IEHeader(ie.header, PFCP_IE_PACKET_RATE, parent),
4207 (ie_.ulpr ? 3 : 0) +
4221 return ie_.gtpu_ext_hdr_del.pdu_session_container;
4226 ie_.gtpu_ext_hdr_del.pdu_session_container = val ? 1 : 0;
4236 inline OuterHeaderRemovalIE::OuterHeaderRemovalIE(pfcp_outer_hdr_removal_ie_t &ie, LengthCalculator *parent)
4237 : IEHeader(ie.header, PFCP_IE_OUTER_HDR_REMOVAL, parent),
4246 (ie_.gtpu_ext_hdr_del.pdu_session_container ?
sizeof(ie_.gtpu_ext_hdr_del) : 0)
4271 inline RecoveryTimeStampIE::RecoveryTimeStampIE(pfcp_rcvry_time_stmp_ie_t &ie, LengthCalculator *parent)
4272 : IEHeader(ie.header, PFCP_IE_RCVRY_TIME_STMP, parent),
4279 return sizeof(pfcp_rcvry_time_stmp_ie_t) -
sizeof(pfcp_ie_header_t);
4296 return ie_.tostraffic_cls;
4301 return ie_.svc_cls_indctr;
4307 memcpy(ie_.tostraffic_cls, val,
sizeof(ie_.tostraffic_cls));
4315 memcpy(ie_.svc_cls_indctr, val,
sizeof(ie_.svc_cls_indctr));
4325 inline DlFlowLevelMarkingIE::DlFlowLevelMarkingIE(pfcp_dl_flow_lvl_marking_ie_t &ie, LengthCalculator *parent)
4326 : IEHeader(ie.header, PFCP_IE_DL_FLOW_LVL_MARKING, parent),
4335 (ie_.ttc ?
sizeof(ie_.svc_cls_indctr) : 0) +
4336 (ie_.sci ?
sizeof(ie_.svc_cls_indctr) : 0)
4349 return ie_.len_of_hdr_fld_nm;
4354 return ie_.hdr_fld_nm;
4359 return ie_.len_of_hdr_fld_val;
4364 return ie_.hdr_fld_val;
4369 ie_.header_type =
static_cast<uint8_t
>(val);
4376 if (len >
sizeof(ie_.hdr_fld_nm))
4377 len =
sizeof(ie_.hdr_fld_nm);
4379 std::memcpy(ie_.hdr_fld_nm, val, len);
4386 if (len >
sizeof(ie_.hdr_fld_val))
4387 len =
sizeof(ie_.hdr_fld_val);
4389 std::memcpy(ie_.hdr_fld_val, val, len);
4399 inline HeaderEnrichmentIE::HeaderEnrichmentIE(pfcp_hdr_enrchmt_ie_t &ie, LengthCalculator *parent)
4400 : IEHeader(ie.header, PFCP_IE_HDR_ENRCHMT, parent),
4409 sizeof(ie_.len_of_hdr_fld_nm) +
4410 ie_.len_of_hdr_fld_nm +
4411 sizeof(ie_.len_of_hdr_fld_val) +
4412 ie_.len_of_hdr_fld_val
4440 ie_.mbqe = val ? 1 : 0;
4447 ie_.inam = val ? 1 : 0;
4454 ie_.radi = val ? 1 : 0;
4461 ie_.istm = val ? 1 : 0;
4471 inline MeasurementInformationIE::MeasurementInformationIE(pfcp_meas_info_ie_t &ie, LengthCalculator *parent)
4472 : IEHeader(ie.header, PFCP_IE_MEAS_INFO, parent),
4479 return sizeof(pfcp_meas_info_ie_t) -
sizeof(pfcp_ie_header_t);
4501 inline NodeReportTypeIE::NodeReportTypeIE(pfcp_node_rpt_type_ie_t &ie, LengthCalculator *parent)
4502 : IEHeader(ie.header, PFCP_IE_NODE_RPT_TYPE, parent),
4509 return sizeof(pfcp_node_rpt_type_ie_t) -
sizeof(pfcp_ie_header_t);
4537 u.uint32_t_ptr = &ie_.ipv4_address;
4538 return *u.in_addr_ptr;
4544 u.uint8_t_ptr = ie_.ipv6_address;
4545 return *u.in6_addr_ptr;
4550 return ie_.len_of_dst_intfc_fld;
4560 return ie_.len_of_ntwk_instc_fld;
4565 return ie_.ntwk_instc;
4571 return ip_address(val.
getInet().sin_addr);
4573 return ip_address(val.
getInet6().sin6_addr);
4579 if (val.
family() == AF_INET)
4581 else if (val.
family() == AF_INET6)
4589 ie_.ipv4_address = val.s_addr;
4597 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
4605 ie_.len_of_dst_intfc_fld =
sizeof(ie_.dst_intfc);
4606 ie_.dst_intfc.intfc_value =
static_cast<uint8_t
>(val);
4614 if (len >
sizeof(ie_.ntwk_instc))
4615 len =
sizeof(ie_.ntwk_instc);
4616 ie_.len_of_ntwk_instc_fld = len;
4617 std::memcpy(ie_.ntwk_instc, val, len);
4627 inline RemoteGTPUPeerIE::RemoteGTPUPeerIE(pfcp_rmt_gtpu_peer_ie_t &ie, LengthCalculator *parent)
4628 : IEHeader(ie.header, PFCP_IE_RMT_GTPU_PEER, parent),
4637 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
4638 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0) +
4639 (ie_.di ?
sizeof(ie_.len_of_dst_intfc_fld) + ie_.len_of_dst_intfc_fld : 0) +
4640 (ie_.ni ?
sizeof(ie_.len_of_ntwk_instc_fld) + ie_.len_of_ntwk_instc_fld : 0)
4663 inline UrSeqnIE::UrSeqnIE(pfcp_urseqn_ie_t &ie, LengthCalculator *parent)
4664 : IEHeader(ie.header, PFCP_IE_URSEQN, parent),
4671 return sizeof(pfcp_urseqn_ie_t) -
sizeof(pfcp_ie_header_t);
4678 return ie_.header.len;
4683 return ie_.predef_rules_nm;
4688 if (len >
sizeof(ie_.predef_rules_nm))
4689 len =
sizeof(ie_.predef_rules_nm);
4690 std::memcpy(ie_.predef_rules_nm, val, len);
4691 ie_.header.len = len;
4700 inline ActivatePredefinedRulesIE::ActivatePredefinedRulesIE(pfcp_actvt_predef_rules_ie_t &ie, LengthCalculator *parent)
4701 : IEHeader(ie.header, PFCP_IE_ACTVT_PREDEF_RULES, parent),
4708 return ie_.header.len;
4715 return ie_.header.len;
4719 return ie_.predef_rules_nm;
4724 if (len >
sizeof(ie_.predef_rules_nm))
4725 len =
sizeof(ie_.predef_rules_nm);
4726 std::memcpy(ie_.predef_rules_nm, val, len);
4727 ie_.header.len = len;
4736 inline DeactivatePredefinedRulesIE::DeactivatePredefinedRulesIE(pfcp_deact_predef_rules_ie_t &ie, LengthCalculator *parent)
4737 : IEHeader(ie.header, PFCP_IE_DEACT_PREDEF_RULES, parent),
4744 return ie_.header.len;
4751 return ie_.far_id_value;
4756 ie_.far_id_value = val;
4766 inline FarIdIE::FarIdIE(pfcp_far_id_ie_t &ie, LengthCalculator *parent)
4767 : IEHeader(ie.header, PFCP_IE_FAR_ID, parent),
4774 return sizeof(pfcp_far_id_ie_t) -
sizeof(pfcp_ie_header_t);
4781 return ie_.qer_id_value;
4786 ie_.qer_id_value = val;
4796 inline QerIdIE::QerIdIE(pfcp_qer_id_ie_t &ie, LengthCalculator *parent)
4797 : IEHeader(ie.header, PFCP_IE_QER_ID, parent),
4804 return sizeof(pfcp_qer_id_ie_t) -
sizeof(pfcp_ie_header_t);
4815 ie_.aoci = val ? 1 : 0;
4825 inline OciFlagsIE::OciFlagsIE(pfcp_oci_flags_ie_t &ie, LengthCalculator *parent)
4826 : IEHeader(ie.header, PFCP_IE_OCI_FLAGS, parent),
4834 sizeof(pfcp_oci_flags_ie_t) -
sizeof(pfcp_ie_header_t) :
4848 ie_.sarr = val ? 1 : 0;
4858 inline AssociationReleaseRequestIE::AssociationReleaseRequestIE(pfcp_up_assn_rel_req_ie_t &ie, LengthCalculator *parent)
4859 : IEHeader(ie.header, PFCP_IE_UP_ASSN_REL_REQ, parent),
4867 sizeof(pfcp_up_assn_rel_req_ie_t) -
sizeof(pfcp_ie_header_t) :
4881 return ie_.timer_value;
4886 ie_.timer_unit =
static_cast<uint8_t
>(tu);
4887 ie_.timer_value = val;
4897 inline GracefulReleasePeriodIE::GracefulReleasePeriodIE(pfcp_graceful_rel_period_ie_t &ie, LengthCalculator *parent)
4898 : IEHeader(ie.header, PFCP_IE_GRACEFUL_REL_PERIOD, parent),
4905 return sizeof(pfcp_graceful_rel_period_ie_t) -
sizeof(pfcp_ie_header_t);
4917 ie_.pdn_type =
static_cast<uint8_t
>(val);
4927 inline PdnTypeIE::PdnTypeIE(pfcp_pdn_type_ie_t &ie, LengthCalculator *parent)
4928 : IEHeader(ie.header, PFCP_IE_PDN_TYPE, parent),
4935 return sizeof(pfcp_pdn_type_ie_t) -
sizeof(pfcp_ie_header_t);
4947 return ie_.rule_id_value;
4952 ie_.rule_id_type =
static_cast<uint8_t
>(rt);
4954 ie_.rule_id_value = val & 0x0000ffff;
4956 ie_.rule_id_value = val & 0x000000ff;
4958 ie_.rule_id_value = val;
4968 inline FailedRuleIdIE::FailedRuleIdIE(pfcp_failed_rule_id_ie_t &ie, LengthCalculator *parent)
4969 : IEHeader(ie.header, PFCP_IE_FAILED_RULE_ID, parent),
4978 (ie_.rule_id_type == 0 ? 2 :
4979 ie_.rule_id_type == 4 ? 1 : 4)
4992 return ie_.base_time_int;
4997 ie_.btit =
static_cast<uint8_t
>(btit);
4998 ie_.base_time_int = val;
5008 inline TimeQuotaMechanismIE::TimeQuotaMechanismIE(pfcp_time_quota_mech_ie_t &ie, LengthCalculator *parent)
5009 : IEHeader(ie.header, PFCP_IE_TIME_QUOTA_MECH, parent),
5016 return sizeof(pfcp_time_quota_mech_ie_t) -
sizeof(pfcp_ie_header_t);
5048 return ie_.teid_range;
5054 ie_.teid_range = val;
5060 u.uint32_t_ptr = &ie_.ipv4_address;
5061 return *u.in_addr_ptr;
5067 u.uint8_t_ptr = ie_.ipv6_address;
5068 return *u.in6_addr_ptr;
5073 return ie_.ntwk_inst_len;
5078 return ie_.ntwk_inst;
5089 return ip_address(val.
getInet().sin_addr);
5091 return ip_address(val.
getInet6().sin6_addr);
5097 if (val.
family() == AF_INET)
5099 else if (val.
family() == AF_INET6)
5107 ie_.ipv4_address = val.s_addr;
5115 std::memcpy(ie_.ipv6_address, val.s6_addr,
sizeof(ie_.ipv6_address));
5123 if (len >
sizeof(ie_.ntwk_inst))
5124 len =
sizeof(ie_.ntwk_inst);
5125 ie_.ntwk_inst_len = len;
5126 std::memcpy(ie_.ntwk_inst, val, ie_.ntwk_inst_len);
5134 ie_.src_intfc =
static_cast<uint8_t
>(val);
5144 inline UserPlaneIpResourceInformationIE::UserPlaneIpResourceInformationIE(pfcp_user_plane_ip_rsrc_info_ie_t &ie, LengthCalculator *parent)
5145 : IEHeader(ie.header, PFCP_IE_USER_PLANE_IP_RSRC_INFO, parent),
5154 (ie_.teidri > 0 ?
sizeof(ie_.teid_range) : 0) +
5155 (ie_.v4 ?
sizeof(ie_.ipv4_address) : 0) +
5156 (ie_.v6 ?
sizeof(ie_.ipv6_address) : 0) +
5157 (ie_.assoni ? ie_.ntwk_inst_len : 0) +
5158 (ie_.assosi ? 1 : 0)
5165 return ie_.user_plane_inact_timer;
5170 ie_.user_plane_inact_timer = val;
5180 inline UserPlaneInactivityTimerIE::UserPlaneInactivityTimerIE(pfcp_user_plane_inact_timer_ie_t &ie, LengthCalculator *parent)
5181 : IEHeader(ie.header, PFCP_IE_USER_PLANE_INACT_TIMER, parent),
5188 return sizeof(pfcp_user_plane_inact_timer_ie_t) -
sizeof(pfcp_ie_header_t);
5195 return ie_.value_digits;
5200 return ie_.exponent;
5205 ie_.value_digits = val;
5222 inline MultiplierIE::MultiplierIE(pfcp_multiplier_ie_t &ie, LengthCalculator *parent)
5223 : IEHeader(ie.header, PFCP_IE_MULTIPLIER, parent),
5230 return sizeof(pfcp_multiplier_ie_t) -
sizeof(pfcp_ie_header_t);
5237 return ie_.urr_id_value;
5242 ie_.urr_id_value = val;
5252 inline AggregatedUrrIdIE::AggregatedUrrIdIE(pfcp_agg_urr_id_ie_t &ie, LengthCalculator *parent)
5253 : IEHeader(ie.header, PFCP_IE_AGG_URR_ID, parent),
5260 return sizeof(pfcp_agg_urr_id_ie_t) -
sizeof(pfcp_ie_header_t);
5283 ie_.total_volume = val;
5291 ie_.uplink_volume = val;
5299 ie_.downlink_volume = val;
5309 inline SubsequentVolumeQuotaIE::SubsequentVolumeQuotaIE(pfcp_sbsqnt_vol_quota_ie_t &ie, LengthCalculator *parent)
5310 : IEHeader(ie.header, PFCP_IE_SBSQNT_VOL_QUOTA, parent),
5319 (ie_.tovol ?
sizeof(ie_.total_volume) : 0) +
5320 (ie_.ulvol ?
sizeof(ie_.uplink_volume) : 0) +
5321 (ie_.dlvol ?
sizeof(ie_.downlink_volume) : 0)
5329 return ie_.time_quota_val;
5334 ie_.time_quota_val = val;
5344 inline SubsequentTimeQuotaIE::SubsequentTimeQuotaIE(pfcp_sbsqnt_time_quota_ie_t &ie, LengthCalculator *parent)
5345 : IEHeader(ie.header, PFCP_IE_SBSQNT_TIME_QUOTA, parent),
5352 return sizeof(pfcp_sbsqnt_time_quota_ie_t) -
sizeof(pfcp_ie_header_t);
5364 ie_.rqi = val ? 1 : 0;
5374 inline RqiIE::RqiIE(pfcp_rqi_ie_t &ie, LengthCalculator *parent)
5375 : IEHeader(ie.header, PFCP_IE_RQI, parent),
5382 return sizeof(pfcp_rqi_ie_t) -
sizeof(pfcp_ie_header_t);
5389 return ie_.qfi_value;
5394 ie_.qfi_value = val;
5404 inline QfiIE::QfiIE(pfcp_qfi_ie_t &ie, LengthCalculator *parent)
5405 : IEHeader(ie.header, PFCP_IE_QFI, parent),
5412 return sizeof(pfcp_qfi_ie_t) -
sizeof(pfcp_ie_header_t);
5419 return ie_.query_urr_ref_val;
5424 ie_.query_urr_ref_val = val;
5434 inline QueryUrrReferenceIE::QueryUrrReferenceIE(pfcp_query_urr_ref_ie_t &ie, LengthCalculator *parent)
5435 : IEHeader(ie.header, PFCP_IE_QUERY_URR_REF, parent),
5442 return sizeof(pfcp_query_urr_ref_ie_t) -
sizeof(pfcp_ie_header_t);
5454 return ie_.nbr_of_add_usage_rpts_val;
5459 ie_.auri = val ? 1 : 0;
5466 ie_.nbr_of_add_usage_rpts_val = val;
5476 inline AdditionalUsageReportsInformationIE::AdditionalUsageReportsInformationIE(pfcp_add_usage_rpts_info_ie_t &ie, LengthCalculator *parent)
5477 : IEHeader(ie.header, PFCP_IE_ADD_USAGE_RPTS_INFO, parent),
5484 return sizeof(pfcp_add_usage_rpts_info_ie_t) -
sizeof(pfcp_ie_header_t);
5491 return ie_.traffic_endpt_id_val;
5496 ie_.traffic_endpt_id_val = val;
5506 inline TrafficEndpointIdIE::TrafficEndpointIdIE(pfcp_traffic_endpt_id_ie_t &ie, LengthCalculator *parent)
5507 : IEHeader(ie.header, PFCP_IE_TRAFFIC_ENDPT_ID, parent),
5514 return sizeof(pfcp_traffic_endpt_id_ie_t) -
sizeof(pfcp_ie_header_t);
5541 return ie_.src_mac_addr_val;
5546 return ie_.dst_mac_addr_val;
5551 return ie_.upr_src_mac_addr_val;
5556 return ie_.upr_dst_mac_addr_val;
5562 std::memcpy(ie_.src_mac_addr_val, val,
sizeof(ie_.src_mac_addr_val));
5570 std::memcpy(ie_.dst_mac_addr_val, val,
sizeof(ie_.dst_mac_addr_val));
5578 std::memcpy(ie_.upr_dst_mac_addr_val, val,
sizeof(ie_.upr_dst_mac_addr_val));
5586 std::memcpy(ie_.upr_src_mac_addr_val, val,
sizeof(ie_.upr_src_mac_addr_val));
5596 inline MacAddressIE::MacAddressIE(pfcp_mac_address_ie_t &ie, LengthCalculator *parent)
5597 : IEHeader(ie.header, PFCP_IE_MAC_ADDRESS, parent),
5606 (ie_.sour ?
sizeof(ie_.src_mac_addr_val) : 0) +
5607 (ie_.dest ?
sizeof(ie_.dst_mac_addr_val) : 0) +
5608 (ie_.usou ?
sizeof(ie_.upr_src_mac_addr_val) : 0) +
5609 (ie_.udes ?
sizeof(ie_.upr_dst_mac_addr_val) : 0)
5617 return ie_.ctag_pcp;
5622 return ie_.ctag_dei;
5627 return ie_.ctag_vid;
5632 return ie_.ctag_pcp_value;
5637 return ie_.ctag_dei_flag;
5642 return ie_.cvid_value;
5647 return ie_.cvid_value2;
5652 ie_.ctag_pcp = val ? 1 : 0;
5659 ie_.ctag_dei = val ? 1 : 0;
5666 ie_.ctag_vid = val ? 1 : 0;
5673 ie_.ctag_pcp_value = val;
5680 ie_.ctag_dei_flag = val ? 1 : 0;
5687 ie_.cvid_value = val;
5694 ie_.cvid_value2 = val;
5704 inline CTagIE::CTagIE(pfcp_ctag_ie_t &ie, LengthCalculator *parent)
5705 : IEHeader(ie.header, PFCP_IE_CTAG, parent),
5712 return sizeof(pfcp_ctag_ie_t) -
sizeof(pfcp_ie_header_t);
5719 return ie_.stag_pcp;
5724 return ie_.stag_dei;
5729 return ie_.stag_vid;
5734 return ie_.stag_pcp_value;
5739 return ie_.stag_dei_flag;
5744 return ie_.svid_value;
5749 return ie_.svid_value2;
5754 ie_.stag_pcp = val ? 1 : 0;
5761 ie_.stag_dei = val ? 1 : 0;
5768 ie_.stag_vid = val ? 1 : 0;
5775 ie_.stag_pcp_value = val;
5782 ie_.stag_dei_flag = val ? 1 : 0;
5789 ie_.svid_value = val;
5796 ie_.svid_value2 = val;
5806 inline STagIE::STagIE(pfcp_stag_ie_t &ie, LengthCalculator *parent)
5807 : IEHeader(ie.header, PFCP_IE_STAG, parent),
5814 return sizeof(pfcp_stag_ie_t) -
sizeof(pfcp_ie_header_t);
5821 return ie_.ethertype;
5826 ie_.ethertype = val;
5836 inline EthertypeIE::EthertypeIE(pfcp_ethertype_ie_t &ie, LengthCalculator *parent)
5837 : IEHeader(ie.header, PFCP_IE_ETHERTYPE, parent),
5844 return sizeof(pfcp_ethertype_ie_t) -
sizeof(pfcp_ie_header_t);
5861 ie_.arp = val ? 1 : 0;
5868 ie_.ins = val ? 1 : 0;
5878 inline ProxyingIE::ProxyingIE(pfcp_proxying_ie_t &ie, LengthCalculator *parent)
5879 : IEHeader(ie.header, PFCP_IE_PROXYING, parent),
5886 return sizeof(pfcp_proxying_ie_t) -
sizeof(pfcp_ie_header_t);
5893 return ie_.eth_fltr_id_val;
5898 ie_.eth_fltr_id_val = val;
5908 inline EthernetFilterIdIE::EthernetFilterIdIE(pfcp_eth_fltr_id_ie_t &ie, LengthCalculator *parent)
5909 : IEHeader(ie.header, PFCP_IE_ETH_FLTR_ID, parent),
5916 return sizeof(pfcp_eth_fltr_id_ie_t) -
sizeof(pfcp_ie_header_t);
5928 ie_.bide = val ? 1 : 0;
5938 inline EthernetFilterPropertiesIE::EthernetFilterPropertiesIE(pfcp_eth_fltr_props_ie_t &ie, LengthCalculator *parent)
5939 : IEHeader(ie.header, PFCP_IE_ETH_FLTR_PROPS, parent),
5946 return sizeof(pfcp_eth_fltr_props_ie_t) -
sizeof(pfcp_ie_header_t);
5953 return ie_.pckt_cnt_val;
5958 ie_.pckt_cnt_val = val;
5968 inline SuggestedBufferingPacketsCountIE::SuggestedBufferingPacketsCountIE(pfcp_suggstd_buf_pckts_cnt_ie_t &ie, LengthCalculator *parent)
5969 : IEHeader(ie.header, PFCP_IE_SUGGSTD_BUF_PCKTS_CNT, parent),
5976 return sizeof(pfcp_suggstd_buf_pckts_cnt_ie_t) -
sizeof(pfcp_ie_header_t);
6003 return ie_.length_of_imsi;
6008 return ie_.length_of_imei;
6013 return ie_.len_of_msisdn;
6018 return ie_.length_of_nai;
6044 if (len >
sizeof(ie_.imsi))
6045 len =
sizeof(ie_.imsi);
6046 ie_.length_of_imsi = len;
6047 std::memcpy(ie_.imsi, val, len);
6054 if (len >
sizeof(ie_.imei))
6055 len =
sizeof(ie_.imei);
6056 ie_.length_of_imei = len;
6057 std::memcpy(ie_.imei, val, len);
6064 if (len >
sizeof(ie_.msisdn))
6065 len =
sizeof(ie_.msisdn);
6066 ie_.len_of_msisdn = len;
6067 std::memcpy(ie_.msisdn, val, len);
6071 inline UserIdIE &
UserIdIE::nai(
const uint8_t *val, uint8_t len)
6074 if (len >
sizeof(ie_.nai))
6075 len =
sizeof(ie_.nai);
6076 ie_.length_of_nai = len;
6077 std::memcpy(ie_.nai, val, len);
6086 inline UserIdIE::UserIdIE(pfcp_user_id_ie_t &ie, LengthCalculator *parent)
6087 : IEHeader(ie.header, PFCP_IE_USER_ID, parent),
6096 (ie_.imsif ?
sizeof(ie_.length_of_imsi) + ie_.length_of_imsi : 0) +
6097 (ie_.imeif ?
sizeof(ie_.length_of_imei) + ie_.length_of_imei : 0) +
6098 (ie_.msisdnf ?
sizeof(ie_.len_of_msisdn) + ie_.len_of_msisdn : 0) +
6099 (ie_.naif ?
sizeof(ie_.length_of_nai) + ie_.length_of_nai : 0)
6112 ie_.ethi = val ? 1 : 0;
6122 inline EthernetPduSessionInformationIE::EthernetPduSessionInformationIE(pfcp_eth_pdu_sess_info_ie_t &ie, LengthCalculator *parent)
6123 : IEHeader(ie.header, PFCP_IE_ETH_PDU_SESS_INFO, parent),
6130 return sizeof(pfcp_eth_pdu_sess_info_ie_t) -
sizeof(pfcp_ie_header_t);
6137 return ie_.nbr_of_mac_addrs;
6142 if (idx > MAC_ADDR_VAL_LEN)
6144 return ie_.mac_addr_val[idx];
6149 if (ie_.nbr_of_mac_addrs >= MAC_ADDR_VAL_LEN)
6151 std::memcpy(ie_.mac_addr_val[ie_.nbr_of_mac_addrs], val, 6);
6152 ie_.nbr_of_mac_addrs++;
6162 inline MacAddressesDetectedIE::MacAddressesDetectedIE(pfcp_mac_addrs_detctd_ie_t &ie, LengthCalculator *parent)
6163 : IEHeader(ie.header, PFCP_IE_MAC_ADDRS_DETCTD, parent),
6171 sizeof(ie_.nbr_of_mac_addrs) +
6172 (ie_.nbr_of_mac_addrs * 6)
6180 return ie_.nbr_of_mac_addrs;
6185 if (idx > MAC_ADDR_VAL_LEN)
6187 return ie_.mac_addr_val[idx];
6192 if (ie_.nbr_of_mac_addrs >= MAC_ADDR_VAL_LEN)
6194 std::memcpy(ie_.mac_addr_val[ie_.nbr_of_mac_addrs], val, 6);
6195 ie_.nbr_of_mac_addrs++;
6205 inline MacAddressesRemovedIE::MacAddressesRemovedIE(pfcp_mac_addrs_rmvd_ie_t &ie, LengthCalculator *parent)
6206 : IEHeader(ie.header, PFCP_IE_MAC_ADDRS_RMVD, parent),
6213 return sizeof(pfcp_mac_addrs_rmvd_ie_t) -
sizeof(pfcp_ie_header_t);
6220 return ie_.eth_inact_timer;
6225 ie_.eth_inact_timer = val;
6235 inline EthernetInactivityTimerIE::EthernetInactivityTimerIE(pfcp_eth_inact_timer_ie_t &ie, LengthCalculator *parent)
6236 : IEHeader(ie.header, PFCP_IE_ETH_INACT_TIMER, parent),
6243 return sizeof(pfcp_eth_inact_timer_ie_t) -
sizeof(pfcp_ie_header_t);
6250 return ie_.sbsqnt_evnt_quota;
6255 ie_. sbsqnt_evnt_quota = val;
6265 inline SubsequentEventQuotaIE::SubsequentEventQuotaIE(pfcp_sbsqnt_evnt_quota_ie_t &ie, LengthCalculator *parent)
6266 : IEHeader(ie.header, PFCP_IE_SBSQNT_EVNT_QUOTA, parent),
6273 return sizeof(pfcp_sbsqnt_evnt_quota_ie_t) -
sizeof(pfcp_ie_header_t);
6280 return ie_.sbsqnt_evnt_thresh;
6285 ie_.sbsqnt_evnt_thresh = val;
6295 inline SubsequentEventThresholdIE::SubsequentEventThresholdIE(pfcp_sbsqnt_evnt_thresh_ie_t &ie, LengthCalculator *parent)
6296 : IEHeader(ie.header, PFCP_IE_SBSQNT_EVNT_THRESH, parent),
6303 return sizeof(pfcp_sbsqnt_evnt_thresh_ie_t) -
sizeof(pfcp_ie_header_t);
6310 return ie_.mcc_digit_1;
6315 return ie_.mcc_digit_2;
6320 return ie_.mcc_digit_3;
6325 return ie_.mnc_digit_1;
6330 return ie_.mnc_digit_2;
6335 return ie_.mnc_digit_3;
6340 return ie_.trace_id;
6345 return ie_.len_of_trigrng_evnts;
6350 return ie_.trigrng_evnts;
6355 return ie_.sess_trc_depth;
6360 return ie_.len_of_list_of_intfcs;
6365 return ie_.list_of_intfcs;
6370 return ie_.len_of_ip_addr_of_trc_coll_ent;
6376 u.uint8_t_ptr = ie_.ip_addr_of_trc_coll_ent;
6377 return *u.in_addr_ptr;
6383 u.uint8_t_ptr = ie_.ip_addr_of_trc_coll_ent;
6384 return *u.in6_addr_ptr;
6392 ie_.mcc_digit_2 = val[1] -
'0';
6393 ie_.mcc_digit_3 = val[2] -
'0';
6400 if (len < 2 || len > 3)
6403 ie_.mnc_digit_2 = val[1];
6404 ie_.mnc_digit_3 = len == 2 ? 15 : val[2];
6411 std::memcpy(reinterpret_cast<uint8_t*>(&ie_) +
sizeof(pfcp_ie_header_t), val, 3);
6425 ie_.len_of_trigrng_evnts =
sizeof(ie_.trigrng_evnts);
6426 std::memcpy(ie_.trigrng_evnts, val,
sizeof(ie_.trigrng_evnts));
6433 ie_.len_of_list_of_intfcs =
sizeof(ie_.list_of_intfcs);
6434 std::memcpy(ie_.list_of_intfcs, val,
sizeof(ie_.list_of_intfcs));
6442 return ip_addr_of_trc_coll_ent(val.
getInet().sin_addr);
6444 return ip_addr_of_trc_coll_ent(val.
getInet6().sin6_addr);
6450 if (val.
family() == AF_INET)
6451 return ip_addr_of_trc_coll_ent(val.
ipv4Address());
6452 else if (val.
family() == AF_INET6)
6453 return ip_addr_of_trc_coll_ent(val.
ipv6Address());
6460 std::memcpy(ie_.ip_addr_of_trc_coll_ent, &val,
sizeof(in_addr));
6468 std::memcpy(ie_.ip_addr_of_trc_coll_ent, &val,
sizeof(in6_addr));
6478 inline TraceInformationIE::TraceInformationIE(pfcp_trc_info_ie_t &ie, LengthCalculator *parent)
6479 : IEHeader(ie.header, PFCP_IE_TRC_INFO, parent),
6489 sizeof(ie_.len_of_trigrng_evnts) + ie_.len_of_trigrng_evnts +
6490 sizeof(ie_.len_of_list_of_intfcs) + ie_.len_of_list_of_intfcs +
6491 sizeof(ie_.len_of_ip_addr_of_trc_coll_ent) + ie_.len_of_ip_addr_of_trc_coll_ent
6499 return ie_.header.len;
6504 return ie_.framed_route;
6509 if (len >
sizeof(ie_.framed_route))
6510 len =
sizeof(ie_.framed_route);
6511 std::memcpy(ie_.framed_route, val, len);
6512 ie_.header.len = len;
6521 inline FramedRouteIE::FramedRouteIE(pfcp_framed_route_ie_t &ie, LengthCalculator *parent)
6522 : IEHeader(ie.header, PFCP_IE_FRAMED_ROUTE, parent),
6529 return sizeof(pfcp_framed_route_ie_t) -
sizeof(pfcp_ie_header_t);
6541 ie_.framed_routing =
static_cast<uint32_t
>(val);
6551 inline FramedRoutingIE::FramedRoutingIE(pfcp_framed_routing_ie_t &ie, LengthCalculator *parent)
6552 : IEHeader(ie.header, PFCP_IE_FRAMED_ROUTING, parent),
6559 return sizeof(pfcp_framed_routing_ie_t) -
sizeof(pfcp_ie_header_t);
6566 return ie_.header.len;
6571 return ie_.frmd_ipv6_rte;
6576 if (len >
sizeof(ie_.frmd_ipv6_rte))
6577 len =
sizeof(ie_.frmd_ipv6_rte);
6578 std::memcpy(ie_.frmd_ipv6_rte, val, len);
6579 ie_.header.len = len;
6588 inline FramedIpv6RouteIE::FramedIpv6RouteIE(pfcp_frmd_ipv6_rte_ie_t &ie, LengthCalculator *parent)
6589 : IEHeader(ie.header, PFCP_IE_FRMD_IPV6_RTE, parent),
6596 return sizeof(pfcp_frmd_ipv6_rte_ie_t) -
sizeof(pfcp_ie_header_t);
6603 return ie_.event_quota;
6608 ie_.event_quota = val;
6618 inline EventQuotaIE::EventQuotaIE(pfcp_event_quota_ie_t &ie, LengthCalculator *parent)
6619 : IEHeader(ie.header, PFCP_IE_EVENT_QUOTA, parent),
6626 return sizeof(pfcp_event_quota_ie_t) -
sizeof(pfcp_ie_header_t);
6633 return ie_.event_threshold;
6638 ie_.event_threshold = val;
6648 inline EventThresholdIE::EventThresholdIE(pfcp_event_threshold_ie_t &ie, LengthCalculator *parent)
6649 : IEHeader(ie.header, PFCP_IE_EVENT_THRESHOLD, parent),
6656 return sizeof(pfcp_event_threshold_ie_t) -
sizeof(pfcp_ie_header_t);
6680 inline EventTimeStampIE::EventTimeStampIE(pfcp_evnt_time_stmp_ie_t &ie, LengthCalculator *parent)
6681 : IEHeader(ie.header, PFCP_IE_EVNT_TIME_STMP, parent),
6688 return sizeof(pfcp_evnt_time_stmp_ie_t) -
sizeof(pfcp_ie_header_t);
6695 return ie_.avgng_wnd;
6700 ie_.avgng_wnd = val;
6710 inline AveragingWindowIE::AveragingWindowIE(pfcp_avgng_wnd_ie_t &ie, LengthCalculator *parent)
6711 : IEHeader(ie.header, PFCP_IE_AVGNG_WND, parent),
6718 return sizeof(pfcp_avgng_wnd_ie_t) -
sizeof(pfcp_ie_header_t);
6725 return ie_.ppi_value;
6730 ie_.ppi_value = val;
6740 inline PagingPolicyIndicatorIE::PagingPolicyIndicatorIE(pfcp_paging_plcy_indctr_ie_t &ie, LengthCalculator *parent)
6741 : IEHeader(ie.header, PFCP_IE_PAGING_PLCY_INDCTR, parent),
6748 return sizeof(pfcp_paging_plcy_indctr_ie_t) -
sizeof(pfcp_ie_header_t);
6755 return ie_.header.len;
6765 if (len >
sizeof(ie_.apn_dnn))
6766 len =
sizeof(ie_.apn_dnn);
6767 std::memcpy(ie_.apn_dnn, val, len);
6768 ie_.header.len = len;
6777 inline ApnDnnIE::ApnDnnIE(pfcp_apn_dnn_ie_t &ie, LengthCalculator *parent)
6778 : IEHeader(ie.header, PFCP_IE_APN_DNN, parent),
6785 return sizeof(pfcp_apn_dnn_ie_t) -
sizeof(pfcp_ie_header_t);
6797 ie_.interface_type_value =
static_cast<uint8_t
>(val);
6807 inline TgppInterfaceTypeIE::TgppInterfaceTypeIE(pfcp_3gpp_intfc_type_ie_t &ie, LengthCalculator *parent)
6808 : IEHeader(ie.header, PFCP_IE_3GPP_INTFC_TYPE, parent),
6815 return sizeof(pfcp_3gpp_intfc_type_ie_t) -
sizeof(pfcp_ie_header_t);
6824 return pfdcnts_[idx];
6832 inline PfdContextIE::PfdContextIE(pfcp_pfd_context_ie_t &ie, LengthCalculator *parent)
6833 : IEHeader(ie.header, IE_PFD_CONTEXT, parent),
6836 for (
int i=0; i<MAX_LIST_SIZE; i++)
6837 pfdcnts_.push_back(PfdContentsIE(ie_.pfd_contents[i],
this));
6843 for (
int idx=0; idx<ie_.pfd_contents_count; idx++)
6844 len += pfdcnts_[idx].packedLength();
6857 return pfdctxts_[idx];
6862 return (ie_.pfd_context_count < MAX_LIST_SIZE) ?
6863 ie_.pfd_context_count++ : -1;
6871 inline ApplicationIdsPfdsIE::ApplicationIdsPfdsIE(pfcp_app_ids_pfds_ie_t &ie, LengthCalculator *parent)
6872 : IEHeader(ie.header, IE_APP_IDS_PFDS, parent),
6874 appid_(ie_.application_id, this)
6876 for (
int i=0; i<MAX_LIST_SIZE; i++)
6877 pfdctxts_.push_back(PfdContextIE(ie_.pfd_context[i],
this));
6882 uint16_t len = appid_.packedLength();
6883 for (
int i=0; i<ie_.pfd_context_count; i++)
6884 len += pfdctxts_[i].packedLength();
6932 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
6933 ie_.framed_route_count++ : -1;
6938 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
6939 ie_.frmd_ipv6_rte_count++ : -1;
6947 inline CreateTrafficEndpointIE::CreateTrafficEndpointIE(pfcp_create_traffic_endpt_ie_t &ie, LengthCalculator *parent)
6948 : IEHeader(ie.header, IE_CREATE_TRAFFIC_ENDPT, parent),
6950 teid_(ie_.traffic_endpt_id, this),
6951 lfteid_(ie_.local_fteid, this),
6952 ni_(ie_.ntwk_inst, this),
6953 ueip_(ie_.ue_ip_address, this),
6954 epsi_(ie_.eth_pdu_sess_info, this),
6955 fring_(ie_.framed_routing, this)
6957 for (
int i=0; i<MAX_LIST_SIZE; i++)
6958 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
6959 for (
int i=0; i<MAX_LIST_SIZE; i++)
6960 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
6967 len += teid_.packedLength();
6968 len += lfteid_.packedLength();
6969 len += ni_.packedLength();
6970 len += ueip_.packedLength();
6971 len += epsi_.packedLength();
6972 for (
int i=0; i<ie_.framed_route_count; i++)
6973 len += fr_[i].packedLength();
6974 len += fring_.packedLength();
6975 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
6976 len += fr6_[i].packedLength();
7003 inline CreateBarIE::CreateBarIE(pfcp_create_bar_ie_t &ie, LengthCalculator *parent)
7004 : IEHeader(ie.header, IE_CREATE_BAR, parent),
7006 barid_(ie_.bar_id, this),
7007 ddndelay_(ie_.dnlnk_data_notif_delay, this),
7008 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
7014 return sizeof(pfcp_create_bar_ie_t) -
sizeof(pfcp_ie_header_t);
7079 inline CreateQerIE::CreateQerIE(pfcp_create_qer_ie_t &ie, LengthCalculator *parent)
7080 : IEHeader(ie.header, IE_CREATE_QER, parent),
7082 qerid_(ie_.qer_id, this),
7083 qci_(ie_.qer_corr_id, this),
7084 gs_(ie_.gate_status, this),
7085 mbr_(ie_.maximum_bitrate, this),
7086 gbr_(ie_.guaranteed_bitrate, this),
7087 pr_(ie_.packet_rate, this),
7088 dfm_(ie_.dl_flow_lvl_marking, this),
7089 qfi_(ie_.qos_flow_ident, this),
7090 rqi_(ie_.reflective_qos, this),
7091 ppi_(ie_.paging_plcy_indctr, this),
7092 aw_(ie_.avgng_wnd, this)
7099 qerid_.packedLength() +
7100 qci_.packedLength() +
7101 gs_.packedLength() +
7102 mbr_.packedLength() +
7103 gbr_.packedLength() +
7104 pr_.packedLength() +
7105 dfm_.packedLength() +
7106 qfi_.packedLength() +
7107 rqi_.packedLength() +
7108 ppi_.packedLength() +
7154 inline AdditionalMonitoringTimeIE::AdditionalMonitoringTimeIE(pfcp_add_mntrng_time_ie_t &ie, LengthCalculator *parent)
7155 : IEHeader(ie.header, IE_ADD_MNTRNG_TIME, parent),
7157 mt_(ie_.monitoring_time, this),
7158 svt_(ie_.sbsqnt_vol_thresh, this),
7159 stt_(ie_.sbsqnt_time_thresh, this),
7160 svq_(ie_.sbsqnt_vol_quota, this),
7161 stq_(ie_.sbsqnt_time_quota, this),
7162 set_(ie_.sbsqnt_evnt_thresh, this),
7163 seq_(ie_.sbsqnt_evnt_quota, this)
7170 mt_.packedLength() +
7171 svt_.packedLength() +
7172 stt_.packedLength() +
7173 svq_.packedLength() +
7174 stq_.packedLength() +
7175 set_.packedLength() +
7176 seq_.packedLength();
7196 inline AggregatedUrrsIE::AggregatedUrrsIE(pfcp_aggregated_urrs_ie_t &ie, LengthCalculator *parent)
7197 : IEHeader(ie.header, IE_AGGREGATED_URRS, parent),
7199 aui_(ie_.agg_urr_id, this),
7200 m_(ie_.multiplier, this)
7207 aui_.packedLength() +
7350 return (ie_.linked_urr_id_count < MAX_LIST_SIZE) ?
7351 ie_.linked_urr_id_count++ : -1;
7356 return (ie_.aggregated_urrs_count < MAX_LIST_SIZE) ?
7357 ie_.aggregated_urrs_count++ : -1;
7362 return (ie_.add_mntrng_time_count < MAX_LIST_SIZE) ?
7363 ie_.add_mntrng_time_count++ : -1;
7371 inline CreateUrrIE::CreateUrrIE(pfcp_create_urr_ie_t &ie, LengthCalculator *parent)
7372 : IEHeader(ie.header, IE_CREATE_URR, parent),
7374 ui_(ie_.urr_id, this),
7375 mm_(ie_.meas_mthd, this),
7376 rt_(ie_.rptng_triggers, this),
7377 mp_(ie_.meas_period, this),
7378 vt_(ie_.vol_thresh, this),
7379 vq_(ie_.volume_quota, this),
7380 et_(ie_.event_threshold, this),
7381 eq_(ie_.event_quota, this),
7382 tt_(ie_.time_threshold, this),
7383 tq_(ie_.time_quota, this),
7384 qht_(ie_.quota_hldng_time, this),
7385 ddtt_(ie_.drpd_dl_traffic_thresh, this),
7386 mt_(ie_.monitoring_time, this),
7387 svt_(ie_.sbsqnt_vol_thresh, this),
7388 stt_(ie_.sbsqnt_time_thresh, this),
7389 svq_(ie_.sbsqnt_vol_quota, this),
7390 stq_(ie_.sbsqnt_time_quota, this),
7391 set_(ie_.sbsqnt_evnt_thresh, this),
7392 seq_(ie_.sbsqnt_evnt_quota, this),
7393 idt_(ie_.inact_det_time, this),
7394 mi_(ie_.meas_info, this),
7395 tqm_(ie_.time_quota_mech, this),
7396 fiqa_(ie_.far_id_for_quota_act, this),
7397 eit_(ie_.eth_inact_timer, this)
7399 for (
int i=0; i<MAX_LIST_SIZE; i++)
7401 lui_.push_back(LinkedUrrIdIE(ie_.linked_urr_id[i],
this));
7402 aus_.push_back(AggregatedUrrsIE(ie_.aggregated_urrs[i],
this));
7403 amt_.push_back(AdditionalMonitoringTimeIE(ie_.add_mntrng_time[i],
this));
7411 len += ui_.packedLength();
7412 len += mm_.packedLength();
7413 len += rt_.packedLength();
7414 len += mp_.packedLength();
7415 len += vt_.packedLength();
7416 len += vq_.packedLength();
7417 len += et_.packedLength();
7418 len += eq_.packedLength();
7419 len += tt_.packedLength();
7420 len += tq_.packedLength();
7421 len += qht_.packedLength();
7422 len += ddtt_.packedLength();
7423 len += mt_.packedLength();
7424 len += svt_.packedLength();
7425 len += stt_.packedLength();
7426 len += svq_.packedLength();
7427 len += stq_.packedLength();
7428 len += set_.packedLength();
7429 len += seq_.packedLength();
7430 len += idt_.packedLength();
7431 len += mi_.packedLength();
7432 len += tqm_.packedLength();
7433 len += fiqa_.packedLength();
7434 len += eit_.packedLength();
7436 for (
int i=0; i<ie_.linked_urr_id_count; i++)
7437 len += lui_[i].packedLength();
7438 for (
int i=0; i<ie_.aggregated_urrs_count; i++)
7439 len += aus_[i].packedLength();
7440 for (
int i=0; i<ie_.add_mntrng_time_count; i++)
7441 len += amt_[i].packedLength();
7473 inline DuplicatingParametersIE::DuplicatingParametersIE(pfcp_dupng_parms_ie_t &ie, LengthCalculator *parent)
7474 : IEHeader(ie.header, IE_DUPNG_PARMS, parent),
7476 di_(ie_.dst_intfc, this),
7477 ohc_(ie_.outer_hdr_creation, this),
7478 tlm_(ie_.trnspt_lvl_marking, this),
7479 fp_(ie_.frwdng_plcy, this)
7486 di_.packedLength() +
7487 ohc_.packedLength() +
7488 tlm_.packedLength() +
7549 inline ForwardingParametersIE::ForwardingParametersIE(pfcp_frwdng_parms_ie_t &ie, LengthCalculator *parent)
7550 : IEHeader(ie.header, IE_FRWDNG_PARMS, parent),
7552 di_(ie_.dst_intfc, this),
7553 ni_(ie_.ntwk_inst, this),
7554 ri_(ie_.redir_info, this),
7555 ohc_(ie_.outer_hdr_creation, this),
7556 tlm_(ie_.trnspt_lvl_marking, this),
7557 fp_(ie_.frwdng_plcy, this),
7558 he_(ie_.hdr_enrchmt, this),
7559 ltei_(ie_.lnkd_traffic_endpt_id, this),
7560 p_(ie_.proxying, this),
7561 dit_(ie_.dst_intfc_type, this)
7568 di_.packedLength() +
7569 ni_.packedLength() +
7570 ri_.packedLength() +
7571 ohc_.packedLength() +
7572 tlm_.packedLength() +
7573 fp_.packedLength() +
7574 he_.packedLength() +
7575 ltei_.packedLength() +
7577 dit_.packedLength();
7609 return (ie_.dupng_parms_count < MAX_LIST_SIZE) ?
7610 ie_.dupng_parms_count++ : -1;
7618 inline CreateFarIE::CreateFarIE(pfcp_create_far_ie_t &ie, LengthCalculator *parent)
7619 : IEHeader(ie.header, IE_CREATE_FAR, parent),
7621 fi_(ie_.far_id, this),
7622 aa_(ie_.apply_action, this),
7623 fp_(ie_.frwdng_parms, this),
7624 bi_(ie_.bar_id, this)
7626 for (
int i=0; i<MAX_LIST_SIZE; i++)
7627 dp_.push_back(DuplicatingParametersIE(ie_.dupng_parms[i],
this));
7634 len += fi_.packedLength();
7635 len += aa_.packedLength();
7636 len += fp_.packedLength();
7637 len += bi_.packedLength();
7639 for (
int i=0; i<ie_.dupng_parms_count; i++)
7640 len += dp_[i].packedLength();
7684 return (ie_.sdf_filter_count < MAX_LIST_SIZE) ?
7685 ie_.sdf_filter_count++ : -1;
7693 inline EthernetPacketFilterIE::EthernetPacketFilterIE(pfcp_eth_pckt_fltr_ie_t &ie, LengthCalculator *parent)
7694 : IEHeader(ie.header, IE_ETH_PCKT_FLTR, parent),
7696 efi_(ie_.eth_fltr_id, this),
7697 efp_(ie_.eth_fltr_props, this),
7698 ma_(ie_.mac_address, this),
7699 e_(ie_.ethertype, this),
7700 ctag_(ie_.ctag, this),
7701 stag_(ie_.
stag, this)
7703 for (
int i=0; i<MAX_LIST_SIZE; i++)
7704 sf_.push_back(SdfFilterIE(ie_.sdf_filter[i],
this));
7711 len += efi_.packedLength();
7712 len += efp_.packedLength();
7713 len += ma_.packedLength();
7714 len += e_.packedLength();
7715 len += ctag_.packedLength();
7716 len += stag_.packedLength();
7718 for (
int i=0; i<ie_.sdf_filter_count; i++)
7719 len += sf_[i].packedLength();
7798 return (ie_.sdf_filter_count < MAX_LIST_SIZE) ?
7799 ie_.sdf_filter_count++ : -1;
7804 return (ie_.eth_pckt_fltr_count < MAX_LIST_SIZE) ?
7805 ie_.eth_pckt_fltr_count++ : -1;
7810 return (ie_.qfi_count < MAX_LIST_SIZE) ?
7811 ie_.qfi_count++ : -1;
7816 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
7817 ie_.framed_route_count++ : -1;
7822 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
7823 ie_.frmd_ipv6_rte_count++ : -1;
7831 inline PdiIE::PdiIE(pfcp_pdi_ie_t &ie, LengthCalculator *parent)
7832 : IEHeader(ie.header, IE_PDI, parent),
7834 si_(ie_.src_intfc, this),
7835 lft_(ie_.local_fteid, this),
7836 ni_(ie_.ntwk_inst, this),
7837 uia_(ie_.ue_ip_address, this),
7838 tei_(ie_.traffic_endpt_id, this),
7839 ai_(ie_.application_id, this),
7840 epsi_(ie_.eth_pdu_sess_info, this),
7841 fring_(ie_.framed_routing, this),
7842 sit_(ie_.src_intrc_type, this)
7844 for (
int i=0; i<MAX_LIST_SIZE; i++)
7846 sf_.push_back(SdfFilterIE(ie_.sdf_filter[i],
this));
7847 epf_.push_back(EthernetPacketFilterIE(ie_.eth_pckt_fltr[i],
this));
7848 qfi_.push_back(QfiIE(ie_.qfi[i],
this));
7849 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
7850 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
7858 len += si_.packedLength();
7859 len += lft_.packedLength();
7860 len += ni_.packedLength();
7861 len += uia_.packedLength();
7862 len += tei_.packedLength();
7863 len += ai_.packedLength();
7864 len += epsi_.packedLength();
7865 len += fring_.packedLength();
7866 len += sit_.packedLength();
7868 for (
int i=0; i<ie_.sdf_filter_count; i++)
7869 len += sf_[i].packedLength();
7870 for (
int i=0; i<ie_.eth_pckt_fltr_count; i++)
7871 len += epf_[i].packedLength();
7872 for (
int i=0; i<ie_.qfi_count; i++)
7873 len += qfi_[i].packedLength();
7874 for (
int i=0; i<ie_.framed_route_count; i++)
7875 len += fr_[i].packedLength();
7876 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
7877 len += fr6_[i].packedLength();
7926 return (ie_.urr_id_count < MAX_LIST_SIZE) ?
7927 ie_.urr_id_count++ : -1;
7932 return (ie_.qer_id_count < MAX_LIST_SIZE) ?
7933 ie_.qer_id_count++ : -1;
7938 return (ie_.actvt_predef_rules_count < MAX_LIST_SIZE) ?
7939 ie_.actvt_predef_rules_count++ : -1;
7947 inline CreatePdrIE::CreatePdrIE(pfcp_create_pdr_ie_t &ie, LengthCalculator *parent)
7948 : IEHeader(ie.header, IE_CREATE_PDR, parent),
7950 pi_(ie_.pdr_id, this),
7951 p_(ie_.precedence, this),
7952 pdi_(ie_.pdi, this),
7953 ohr_(ie_.outer_hdr_removal, this),
7954 fi_(ie_.far_id, this)
7956 for (
int i=0; i<MAX_LIST_SIZE; i++)
7958 ui_.push_back(UrrIdIE(ie_.urr_id[i],
this));
7959 qi_.push_back(QerIdIE(ie_.qer_id[i],
this));
7960 apr_.push_back(ActivatePredefinedRulesIE(ie_.actvt_predef_rules[i],
this));
7968 len += pi_.packedLength();
7969 len += p_.packedLength();
7970 len += pdi_.packedLength();
7971 len += ohr_.packedLength();
7972 len += fi_.packedLength();
7974 for (
int i=0; i<ie_.urr_id_count; i++)
7975 len += ui_[i].packedLength();
7976 for (
int i=0; i<ie_.qer_id_count; i++)
7977 len += qi_[i].packedLength();
7978 for (
int i=0; i<ie_.actvt_predef_rules_count; i++)
7979 len += apr_[i].packedLength();
8001 inline CreatedTrafficEndpointIE::CreatedTrafficEndpointIE(pfcp_created_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8002 : IEHeader(ie.header, IE_CREATED_TRAFFIC_ENDPT, parent),
8004 tei_(ie_.traffic_endpt_id, this),
8005 lft_(ie_.local_fteid, this)
8012 tei_.packedLength() +
8013 lft_.packedLength();
8043 inline OverloadControlInformationIE::OverloadControlInformationIE(pfcp_ovrld_ctl_info_ie_t &ie, LengthCalculator *parent)
8044 : IEHeader(ie.header, IE_OVRLD_CTL_INFO, parent),
8046 ocsn_(ie_.ovrld_ctl_seqn_nbr, this),
8047 orm_(ie_.ovrld_reduction_metric, this),
8048 pov_(ie_.period_of_validity, this),
8049 ocif_(ie_.ovrld_ctl_info_flgs, this)
8056 ocsn_.packedLength() +
8057 orm_.packedLength() +
8058 pov_.packedLength() +
8059 ocif_.packedLength();
8079 inline LoadControlInformationIE::LoadControlInformationIE(pfcp_load_ctl_info_ie_t &ie, LengthCalculator *parent)
8080 : IEHeader(ie.header, IE_LOAD_CTL_INFO, parent),
8082 lcsn_(ie_.load_ctl_seqn_nbr, this),
8083 lm_(ie_.load_metric, this)
8090 lcsn_.packedLength() +
8111 inline CreatedPdrIE::CreatedPdrIE(pfcp_created_pdr_ie_t &ie, LengthCalculator *parent)
8112 : IEHeader(ie.header, IE_CREATED_PDR, parent),
8114 pi_(ie_.pdr_id, this),
8115 lft_(ie_.local_fteid, this)
8122 pi_.packedLength() +
8123 lft_.packedLength();
8135 return (ie_.rmt_gtpu_peer_count < MAX_LIST_SIZE) ?
8136 ie_.rmt_gtpu_peer_count++ : -1;
8144 inline UserPlanePathFailureReportIE::UserPlanePathFailureReportIE(pfcp_user_plane_path_fail_rpt_ie_t &ie, LengthCalculator *parent)
8145 : IEHeader(ie.header, IE_USER_PLANE_PATH_FAIL_RPT, parent),
8148 for (
int i=0; i<MAX_LIST_SIZE; i++)
8149 rgp_.push_back(RemoteGTPUPeerIE(ie_.rmt_gtpu_peer[i],
this));
8155 for (
int i=0; i<ie_.rmt_gtpu_peer_count; i++)
8156 len += rgp_[i].packedLength();
8172 inline RemoveTrafficEndpointIE::RemoveTrafficEndpointIE(pfcp_rmv_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8173 : IEHeader(ie.header, IE_RMV_TRAFFIC_ENDPT, parent),
8175 tei_(ie_.traffic_endpt_id, this)
8182 tei_.packedLength();
8224 return (ie_.framed_route_count < MAX_LIST_SIZE) ?
8225 ie_.framed_route_count++ : -1;
8230 return (ie_.frmd_ipv6_rte_count < MAX_LIST_SIZE) ?
8231 ie_.frmd_ipv6_rte_count++ : -1;
8239 inline UpdateTrafficEndpointIE::UpdateTrafficEndpointIE(pfcp_upd_traffic_endpt_ie_t &ie, LengthCalculator *parent)
8240 : IEHeader(ie.header, IE_UPD_TRAFFIC_ENDPT, parent),
8242 tei_(ie_.traffic_endpt_id, this),
8243 lft_(ie_.local_fteid, this),
8244 ni_(ie_.ntwk_inst, this),
8245 uia_(ie_.ue_ip_address, this),
8246 fring_(ie_.framed_routing, this)
8248 for (
int i=0; i<MAX_LIST_SIZE; i++)
8250 fr_.push_back(FramedRouteIE(ie_.framed_route[i],
this));
8251 fr6_.push_back(FramedIpv6RouteIE(ie_.frmd_ipv6_rte[i],
this));
8259 len += tei_.packedLength();
8260 len += lft_.packedLength();
8261 len += ni_.packedLength();
8262 len += uia_.packedLength();
8263 len += fring_.packedLength();
8265 for (
int i=0; i<ie_.framed_route_count; i++)
8266 len += fr_[i].packedLength();
8267 for (
int i=0; i<ie_.frmd_ipv6_rte_count; i++)
8268 len += fr6_[i].packedLength();
8285 inline RemoveBarIE::RemoveBarIE(pfcp_remove_bar_ie_t &ie, LengthCalculator *parent)
8286 : IEHeader(ie.header, IE_REMOVE_BAR, parent),
8288 bi_(ie_.bar_id, this)
8294 return bi_.packedLength();
8319 inline UpdateBarSessionModificationReqIE::UpdateBarSessionModificationReqIE(pfcp_upd_bar_sess_mod_req_ie_t &ie, LengthCalculator *parent)
8320 : IEHeader(ie.header, IE_UPD_BAR_SESS_MOD_REQ, parent),
8322 bi_(ie_.bar_id, this),
8323 ddnd_(ie_.dnlnk_data_notif_delay, this),
8324 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
8331 bi_.packedLength() +
8332 ddnd_.packedLength() +
8333 sbpc_.packedLength();
8348 inline QueryUrrIE::QueryUrrIE(pfcp_query_urr_ie_t &ie, LengthCalculator *parent)
8349 : IEHeader(ie.header, IE_QUERY_URR, parent),
8351 ui_(ie_.urr_id, this)
8357 return ui_.packedLength();
8372 inline RemoveQerIE::RemoveQerIE(pfcp_remove_qer_ie_t &ie, LengthCalculator *parent)
8373 : IEHeader(ie.header, IE_REMOVE_QER, parent),
8375 qi_(ie_.qer_id, this)
8381 return qi_.packedLength();
8396 inline RemoveUrrIE::RemoveUrrIE(pfcp_remove_urr_ie_t &ie, LengthCalculator *parent)
8397 : IEHeader(ie.header, IE_REMOVE_URR, parent),
8399 ui_(ie_.urr_id, this)
8405 return ui_.packedLength();
8420 inline RemoveFarIE::RemoveFarIE(pfcp_remove_far_ie_t &ie, LengthCalculator *parent)
8421 : IEHeader(ie.header, IE_REMOVE_FAR, parent),
8423 fi_(ie_.far_id, this)
8429 return fi_.packedLength();
8444 inline RemovePdrIE::RemovePdrIE(pfcp_remove_pdr_ie_t &ie, LengthCalculator *parent)
8445 : IEHeader(ie.header, IE_REMOVE_PDR, parent),
8447 pi_(ie_.pdr_id, this)
8453 return pi_.packedLength();
8518 inline UpdateQerIE::UpdateQerIE(pfcp_update_qer_ie_t &ie, LengthCalculator *parent)
8519 : IEHeader(ie.header, IE_UPDATE_QER, parent),
8521 qi_(ie_.qer_id, this),
8522 qci_(ie_.qer_corr_id, this),
8523 gs_(ie_.gate_status, this),
8524 mb_(ie_.maximum_bitrate, this),
8525 gb_(ie_.guaranteed_bitrate, this),
8526 pr(ie_.packet_rate, this),
8527 dflm_(ie_.dl_flow_lvl_marking, this),
8528 qfi_(ie_.qos_flow_ident, this),
8529 rqi_(ie_.reflective_qos, this),
8530 ppi_(ie_.paging_plcy_indctr, this),
8531 aw_(ie_.avgng_wnd, this)
8538 qi_.packedLength() +
8539 qci_.packedLength() +
8540 gs_.packedLength() +
8541 mb_.packedLength() +
8542 gb_.packedLength() +
8544 dflm_.packedLength() +
8545 qfi_.packedLength() +
8546 rqi_.packedLength() +
8547 ppi_.packedLength() +
8690 return (ie_.linked_urr_id_count < MAX_LIST_SIZE) ?
8691 ie_.linked_urr_id_count++ : -1;
8696 return (ie_.aggregated_urrs_count < MAX_LIST_SIZE) ?
8697 ie_.aggregated_urrs_count++ : -1;
8705 inline UpdateUrrIE::UpdateUrrIE(pfcp_update_urr_ie_t &ie, LengthCalculator *parent)
8706 : IEHeader(ie.header, IE_UPDATE_URR, parent),
8708 ui_(ie_.urr_id, this),
8709 mm_(ie_.meas_mthd, this),
8710 rt_(ie_.rptng_triggers, this),
8711 mp_(ie_.meas_period, this),
8712 vt_(ie_.vol_thresh, this),
8713 vq_(ie_.volume_quota, this),
8714 tt_(ie_.time_threshold, this),
8715 tq_(ie_.time_quota, this),
8716 et_(ie_.event_threshold, this),
8717 eq_(ie_.event_quota, this),
8718 qht_(ie_.quota_hldng_time, this),
8719 ddtt_(ie_.drpd_dl_traffic_thresh, this),
8720 mt_(ie_.monitoring_time, this),
8721 svt_(ie_.sbsqnt_vol_thresh, this),
8722 stt_(ie_.sbsqnt_time_thresh, this),
8723 svq_(ie_.sbsqnt_vol_quota, this),
8724 stq_(ie_.sbsqnt_time_quota, this),
8725 set_(ie_.sbsqnt_evnt_thresh, this),
8726 seq_(ie_.sbsqnt_evnt_quota, this),
8727 idt_(ie_.inact_det_time, this),
8728 mi_(ie_.meas_info, this),
8729 tqm_(ie_.time_quota_mech, this),
8730 fifqa_(ie_.far_id_for_quota_act, this),
8731 eit_(ie_.eth_inact_timer, this),
8732 amt_(ie_.add_mntrng_time, this)
8734 for (
int i=0; i<MAX_LIST_SIZE; i++)
8736 lui_.push_back(LinkedUrrIdIE(ie_.linked_urr_id[i],
this));
8737 au_.push_back(AggregatedUrrsIE(ie_.aggregated_urrs[i],
this));
8744 len += ui_.packedLength();
8745 len += mm_.packedLength();
8746 len += rt_.packedLength();
8747 len += mp_.packedLength();
8748 len += vt_.packedLength();
8749 len += vq_.packedLength();
8750 len += tt_.packedLength();
8751 len += tq_.packedLength();
8752 len += et_.packedLength();
8753 len += eq_.packedLength();
8754 len += qht_.packedLength();
8755 len += ddtt_.packedLength();
8756 len += mt_.packedLength();
8757 len += svt_.packedLength();
8758 len += stt_.packedLength();
8759 len += svq_.packedLength();
8760 len += stq_.packedLength();
8761 len += set_.packedLength();
8762 len += seq_.packedLength();
8763 len += idt_.packedLength();
8764 len += mi_.packedLength();
8765 len += tqm_.packedLength();
8766 len += fifqa_.packedLength();
8767 len += eit_.packedLength();
8768 len += amt_.packedLength();
8770 for (
int i=0; i<ie_.linked_urr_id_count; i++)
8771 len += lui_[i].packedLength();
8772 for (
int i=0; i<ie_.aggregated_urrs_count; i++)
8773 len += au_[i].packedLength();
8805 inline UpdateDuplicatingParametersIE::UpdateDuplicatingParametersIE(pfcp_upd_dupng_parms_ie_t &ie, LengthCalculator *parent)
8806 : IEHeader(ie.header, IE_UPD_DUPNG_PARMS, parent),
8808 di_(ie_.dst_intfc, this),
8809 ohc_(ie_.outer_hdr_creation, this),
8810 tlm_(ie_.trnspt_lvl_marking, this),
8811 fp_(ie_.frwdng_plcy, this)
8818 di_.packedLength() +
8819 ohc_.packedLength() +
8820 tlm_.packedLength() +
8881 inline UpdateForwardingParametersIE::UpdateForwardingParametersIE(pfcp_upd_frwdng_parms_ie_t &ie, LengthCalculator *parent)
8882 : IEHeader(ie.header, IE_UPD_FRWDNG_PARMS, parent),
8884 di_(ie_.dst_intfc, this),
8885 ni_(ie_.ntwk_inst, this),
8886 ri_(ie_.redir_info, this),
8887 ohc_(ie_.outer_hdr_creation, this),
8888 tlm_(ie_.trnspt_lvl_marking, this),
8889 fp_(ie_.frwdng_plcy, this),
8890 he_(ie_.hdr_enrchmt, this),
8891 f_(ie_.pfcpsmreq_flags, this),
8892 ltei_(ie_.lnkd_traffic_endpt_id, this),
8893 dit_(ie_.dst_intfc_type, this)
8900 di_.packedLength() +
8901 ni_.packedLength() +
8902 ri_.packedLength() +
8903 ohc_.packedLength() +
8904 tlm_.packedLength() +
8905 fp_.packedLength() +
8906 he_.packedLength() +
8908 ltei_.packedLength() +
8909 dit_.packedLength();
8941 return (ie_.upd_dupng_parms_count < MAX_LIST_SIZE) ?
8942 ie_.upd_dupng_parms_count++ : -1;
8950 inline UpdateFarIE::UpdateFarIE(pfcp_update_far_ie_t &ie, LengthCalculator *parent)
8951 : IEHeader(ie.header, IE_UPDATE_FAR, parent),
8953 fi_(ie_.far_id, this),
8954 aa_(ie_.apply_action, this),
8955 ufp_(ie_.upd_frwdng_parms, this),
8956 bi_(ie_.bar_id, this)
8958 for (
int i=0; i<MAX_LIST_SIZE; i++)
8959 udp_.push_back(UpdateDuplicatingParametersIE(ie_.upd_dupng_parms[i],
this));
8966 len += fi_.packedLength();
8967 len += aa_.packedLength();
8968 len += ufp_.packedLength();
8969 len += bi_.packedLength();
8971 for (
int i=0; i<ie_.upd_dupng_parms_count; i++)
8972 len += udp_[i].packedLength();
9026 return (ie_.actvt_predef_rules_count < MAX_LIST_SIZE) ?
9027 ie_.actvt_predef_rules_count++ : -1;
9032 return (ie_.deact_predef_rules_count < MAX_LIST_SIZE) ?
9033 ie_.deact_predef_rules_count++ : -1;
9041 inline UpdatePdrIE::UpdatePdrIE(pfcp_update_pdr_ie_t &ie, LengthCalculator *parent)
9042 : IEHeader(ie.header, IE_UPDATE_PDR, parent),
9044 pi_(ie_.pdr_id, this),
9045 ohr_(ie_.outer_hdr_removal, this),
9046 p_(ie_.precedence, this),
9047 pdi_(ie_.pdi, this),
9048 fi_(ie_.far_id, this),
9049 ui_(ie_.urr_id, this),
9050 qi_(ie_.qer_id, this)
9052 for (
int i=0; i<MAX_LIST_SIZE; i++)
9054 apr_.push_back(ActivatePredefinedRulesIE(ie_.actvt_predef_rules[i],
this));
9055 dpr_.push_back(DeactivatePredefinedRulesIE(ie_.deact_predef_rules[i],
this));
9063 len += pi_.packedLength();
9064 len += ohr_.packedLength();
9065 len += p_.packedLength();
9066 len += pdi_.packedLength();
9067 len += fi_.packedLength();
9068 len += ui_.packedLength();
9069 len += qi_.packedLength();
9071 for (
int i=0; i<ie_.actvt_predef_rules_count; i++)
9072 len += apr_[i].packedLength();
9073 for (
int i=0; i<ie_.deact_predef_rules_count; i++)
9074 len += dpr_[i].packedLength();
9096 inline EthernetTrafficInformationIE::EthernetTrafficInformationIE(pfcp_eth_traffic_info_ie_t &ie, LengthCalculator *parent)
9097 : IEHeader(ie.header, IE_ETH_TRAFFIC_INFO, parent),
9099 mad_(ie_.mac_addrs_detctd, this),
9100 mar_(ie_.mac_addrs_rmvd, this)
9107 mad_.packedLength() +
9108 mar_.packedLength();
9178 inline UsageReportSessionModificationRspIE::UsageReportSessionModificationRspIE(pfcp_usage_rpt_sess_mod_rsp_ie_t &ie, LengthCalculator *parent)
9179 : IEHeader(ie.header, IE_USAGE_RPT_SESS_MOD_RSP, parent),
9181 ui_(ie_.urr_id, this),
9182 us_(ie_.urseqn, this),
9183 urt_(ie_.usage_rpt_trig, this),
9184 st_(ie_.start_time, this),
9185 et_(ie_.end_time, this),
9186 vm_(ie_.vol_meas, this),
9187 dm_(ie_.dur_meas, this),
9188 tofp_(ie_.time_of_frst_pckt, this),
9189 tolp_(ie_.time_of_lst_pckt, this),
9190 uinfo_(ie_.usage_info, this),
9191 qur_(ie_.query_urr_ref, this),
9192 eti_(ie_.eth_traffic_info, this)
9199 ui_.packedLength() +
9200 us_.packedLength() +
9201 urt_.packedLength() +
9202 st_.packedLength() +
9203 et_.packedLength() +
9204 vm_.packedLength() +
9205 dm_.packedLength() +
9206 tofp_.packedLength() +
9207 tolp_.packedLength() +
9208 uinfo_.packedLength() +
9209 qur_.packedLength() +
9210 eti_.packedLength();
9275 inline UsageReportSessionDeletionRspIE::UsageReportSessionDeletionRspIE(pfcp_usage_rpt_sess_del_rsp_ie_t &ie, LengthCalculator *parent)
9276 : IEHeader(ie.header, IE_USAGE_RPT_SESS_DEL_RSP, parent),
9278 ui_(ie_.urr_id, this),
9279 us_(ie_.urseqn, this),
9280 urt_(ie_.usage_rpt_trig, this),
9281 st_(ie_.start_time, this),
9282 et_(ie_.end_time, this),
9283 vm_(ie_.vol_meas, this),
9284 dm_(ie_.dur_meas, this),
9285 tofp_(ie_.time_of_frst_pckt, this),
9286 tolp_(ie_.time_of_lst_pckt, this),
9287 uinfo_(ie_.usage_info, this),
9288 eti_(ie_.eth_traffic_info, this)
9295 ui_.packedLength() +
9296 us_.packedLength() +
9297 urt_.packedLength() +
9298 st_.packedLength() +
9299 et_.packedLength() +
9300 vm_.packedLength() +
9301 dm_.packedLength() +
9302 tofp_.packedLength() +
9303 tolp_.packedLength() +
9304 uinfo_.packedLength() +
9305 eti_.packedLength();
9317 return (ie_.remote_fteid_count < MAX_LIST_SIZE) ?
9318 ie_.remote_fteid_count++ : -1;
9326 inline ErrorIndicationReportIE::ErrorIndicationReportIE(pfcp_err_indctn_rpt_ie_t &ie, LengthCalculator *parent)
9327 : IEHeader(ie.header, IE_ERR_INDCTN_RPT, parent),
9330 for (
int i=0; i<MAX_LIST_SIZE; i++)
9331 rft_.push_back(FTeidIE(ie_.remote_fteid[i],
this));
9337 for (
int i=0; i<ie_.remote_fteid_count; i++)
9338 len += rft_[i].packedLength();
9364 inline ApplicationDetectionInformationIE::ApplicationDetectionInformationIE(pfcp_app_det_info_ie_t &ie, LengthCalculator *parent)
9365 : IEHeader(ie.header, IE_APP_DET_INFO, parent),
9367 ai_(ie_.application_id, this),
9368 aii_(ie_.app_inst_id, this),
9369 fi_(ie_.flow_info, this)
9376 ai_.packedLength() +
9377 aii_.packedLength() +
9466 return (ie_.evnt_time_stmp_count < MAX_LIST_SIZE) ?
9467 ie_.evnt_time_stmp_count++ : -1;
9475 inline UsageReportSessionReportReqIE::UsageReportSessionReportReqIE(pfcp_usage_rpt_sess_rpt_req_ie_t &ie, LengthCalculator *parent)
9476 : IEHeader(ie.header, IE_USAGE_RPT_SESS_RPT_REQ, parent),
9478 ui_(ie_.urr_id, this),
9479 us_(ie_.urseqn, this),
9480 urt_(ie_.usage_rpt_trig, this),
9481 st_(ie_.start_time, this),
9482 et_(ie_.end_time, this),
9483 vm_(ie_.vol_meas, this),
9484 dm_(ie_.dur_meas, this),
9485 adi_(ie_.app_det_info, this),
9486 uia_(ie_.ue_ip_address, this),
9487 ni_(ie_.ntwk_inst, this),
9488 tofp_(ie_.time_of_frst_pckt, this),
9489 tolp_(ie_.time_of_lst_pckt, this),
9490 uinfo_(ie_.usage_info, this),
9491 qur_(ie_.query_urr_ref, this),
9492 eti_(ie_.eth_traffic_info, this)
9494 for (
int i=0; i<MAX_LIST_SIZE; i++)
9495 ets_.push_back(EventTimeStampIE(ie_.evnt_time_stmp[i],
this));
9502 len += ui_.packedLength();
9503 len += us_.packedLength();
9504 len += urt_.packedLength();
9505 len += st_.packedLength();
9506 len += et_.packedLength();
9507 len += vm_.packedLength();
9508 len += dm_.packedLength();
9509 len += adi_.packedLength();
9510 len += uia_.packedLength();
9511 len += ni_.packedLength();
9512 len += tofp_.packedLength();
9513 len += tolp_.packedLength();
9514 len += uinfo_.packedLength();
9515 len += qur_.packedLength();
9516 len += eti_.packedLength();
9518 for (
int i=0; i<ie_.evnt_time_stmp_count; i++)
9519 len += ets_[i].packedLength();
9538 return (ie_.pdr_id_count < MAX_LIST_SIZE) ?
9539 ie_.pdr_id_count++ : -1;
9544 return (ie_.dnlnk_data_svc_info_count < MAX_LIST_SIZE) ?
9545 ie_.dnlnk_data_svc_info_count++ : -1;
9553 inline DownlinkDataReportIE::DownlinkDataReportIE(pfcp_dnlnk_data_rpt_ie_t &ie, LengthCalculator *parent)
9554 : IEHeader(ie.header, IE_DNLNK_DATA_RPT, parent),
9557 for (
int i=0; i<MAX_LIST_SIZE; i++)
9559 pi_.push_back(PdrIdIE(ie_.pdr_id[i],
this));
9560 ddsi_.push_back(DownlinkDataServiceInformationIE(ie_.dnlnk_data_svc_info[i],
this));
9568 for (
int i=0; i<ie_.pdr_id_count; i++)
9569 len += pi_[i].packedLength();
9570 for (
int i=0; i<ie_.dnlnk_data_svc_info_count; i++)
9571 len += ddsi_[i].packedLength();
9608 inline UpdateBarSessionReportRspIE::UpdateBarSessionReportRspIE(pfcp_upd_bar_sess_rpt_rsp_ie_t &ie, LengthCalculator *parent)
9609 : IEHeader(ie.header, IE_UPD_BAR_SESS_RPT_RSP, parent),
9611 bi_(ie_.bar_id, this),
9612 ddnd_(ie_.dnlnk_data_notif_delay, this),
9613 dbd_(ie_.dl_buf_dur, this),
9614 dbspc_(ie_.dl_buf_suggstd_pckt_cnt, this),
9615 sbpc_(ie_.suggstd_buf_pckts_cnt, this)
9622 bi_.packedLength() +
9623 ddnd_.packedLength() +
9624 dbd_.packedLength() +
9625 dbspc_.packedLength() +
9626 sbpc_.packedLength();
9634 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9637 setMsgType(PFCP_HRTBEAT_REQ);
9638 data_.header.message_type = msgType();
9639 data_.header.version = 1;
9644 return data_.header.message_len;
9649 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9650 new (&(
reinterpret_cast<_HeartbeatReq*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9651 return (reinterpret_cast<_HeartbeatReq*>(iebuffer_))->rts_;
9656 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9657 UShort len = encode_pfcp_hrtbeat_req_t(&data_, dest);
9658 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9659 data_.header.message_len = len;
9660 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9671 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9679 setMsgType(PFCP_HRTBEAT_RSP);
9680 data_.header.message_type = msgType();
9681 data_.header.version = 1;
9686 return data_.header.message_len;
9691 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9692 new (&(
reinterpret_cast<_HeartbeatRsp*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9693 return (reinterpret_cast<_HeartbeatRsp*>(iebuffer_))->rts_;
9698 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9699 UShort len = encode_pfcp_hrtbeat_rsp_t(&data_, dest);
9700 data_.header.message_len = len;
9701 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9712 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9718 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9721 setMsgType(PFCP_PFD_MGMT_REQ);
9722 data_.header.message_type = msgType();
9723 data_.header.version = 1;
9724 for (
int i=0; i<MAX_LIST_SIZE; i++)
9725 appids_.push_back(ApplicationIdsPfdsIE(data_.app_ids_pfds[i],NULL));
9730 return data_.header.message_len;
9735 if (idx >= appids_.size())
9737 for (
auto i = appids_.size(); i < static_cast<size_t>(idx)+1; i++)
9738 appids_.push_back(ApplicationIdsPfdsIE(data_.app_ids_pfds[i],
nullptr));
9740 return appids_[idx];
9745 return (data_.app_ids_pfds_count < MAX_LIST_SIZE) ?
9746 data_.app_ids_pfds_count++ : -1;
9751 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9752 UShort len = encode_pfcp_pfd_mgmt_req_t(&data_, dest);
9753 data_.header.message_len = len;
9754 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9765 for (
int i=0; i<MAX_LIST_SIZE; i++)
9767 if (data_.app_ids_pfds[i].header.len > 0)
9769 next_app_ids_pfds();
9780 setMsgType(PFCP_PFD_MGMT_RSP);
9781 data_.header.message_type = msgType();
9782 data_.header.version = 1;
9787 return data_.header.message_len;
9792 if (forceInit || data_.cause.header.type == 0)
9793 new (&(
reinterpret_cast<_PfdMgmtRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
9794 return (reinterpret_cast<_PfdMgmtRsp*>(iebuffer_))->c_;
9799 if (forceInit || data_.offending_ie.header.type == 0)
9800 new (&(
reinterpret_cast<_PfdMgmtRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
9801 return (reinterpret_cast<_PfdMgmtRsp*>(iebuffer_))->oi_;
9806 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9807 uint16_t len = encode_pfcp_pfd_mgmt_rsp_t(&data_, dest);
9808 data_.header.message_len = len;
9809 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9820 if (data_.cause.header.len > 0) cause(
True);
9821 if (data_.offending_ie.header.len > 0) offending_ie(
True);
9827 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
9830 setMsgType(PFCP_ASSN_SETUP_REQ);
9831 data_.header.message_type = msgType();
9832 data_.header.version = 1;
9837 return data_.header.message_len;
9842 if (forceInit || data_.node_id.header.type == 0)
9843 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
9844 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->ni_;
9849 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9850 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9851 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->rts_;
9856 if (forceInit || data_.up_func_feat.header.type == 0)
9857 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
9858 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->uff_;
9863 if (forceInit || data_.cp_func_feat.header.type == 0)
9864 new (&(
reinterpret_cast<_AssnSetupReq*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
9865 return (reinterpret_cast<_AssnSetupReq*>(iebuffer_))->cff_;
9870 if (idx >= upiri_.size())
9872 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
9873 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
9880 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
9881 data_.user_plane_ip_rsrc_info_count++ : -1;
9886 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
9887 uint16_t len = encode_pfcp_assn_setup_req_t(&data_, dest);
9888 data_.header.message_len = len;
9889 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9900 if (data_.node_id.header.len > 0) node_id(
True);
9901 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9902 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
9903 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
9905 for (
int i=0; i<MAX_LIST_SIZE; i++)
9907 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
9916 setMsgType(PFCP_ASSN_SETUP_RSP);
9917 data_.header.message_type = msgType();
9918 data_.header.version = 1;
9923 return data_.header.message_len;
9928 if (forceInit || data_.node_id.header.type == 0)
9929 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
9930 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->ni_;
9935 if (forceInit || data_.cause.header.type == 0)
9936 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
9937 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->c_;
9942 if (forceInit || data_.rcvry_time_stmp.header.type == 0)
9943 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->rts_) RecoveryTimeStampIE(data_.rcvry_time_stmp,
nullptr);
9944 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->rts_;
9949 if (forceInit || data_.up_func_feat.header.type == 0)
9950 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
9951 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->uff_;
9956 if (forceInit || data_.cp_func_feat.header.type == 0)
9957 new (&(
reinterpret_cast<_AssnSetupRsp*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
9958 return (reinterpret_cast<_AssnSetupRsp*>(iebuffer_))->cff_;
9963 if (idx >= upiri_.size())
9965 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
9966 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
9973 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
9974 data_.user_plane_ip_rsrc_info_count++ : -1;
9979 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
9980 uint16_t len = encode_pfcp_assn_setup_rsp_t(&data_, dest);
9981 data_.header.message_len = len;
9982 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
9993 if (data_.node_id.header.len > 0) node_id(
True);
9994 if (data_.cause.header.len > 0) cause(
True);
9995 if (data_.rcvry_time_stmp.header.len > 0) rcvry_time_stmp(
True);
9996 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
9997 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
9999 for (
int i=0; i<MAX_LIST_SIZE; i++)
10001 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
10008 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10011 setMsgType(PFCP_ASSN_UPD_REQ);
10012 data_.header.message_type = msgType();
10013 data_.header.version = 1;
10018 return data_.header.message_len;
10023 if (forceInit || data_.node_id.header.type == 0)
10024 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10025 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->ni_;
10030 if (forceInit || data_.up_func_feat.header.type == 0)
10031 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
10032 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->uff_;
10037 if (forceInit || data_.cp_func_feat.header.type == 0)
10038 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
10039 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->cff_;
10044 if (forceInit || data_.up_assn_rel_req.header.type == 0)
10045 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->arr_) AssociationReleaseRequestIE(data_.up_assn_rel_req,
nullptr);
10046 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->arr_;
10051 if (forceInit || data_.graceful_rel_period.header.type == 0)
10052 new (&(
reinterpret_cast<_AssnUpdateReq*
>(iebuffer_))->grp_) GracefulReleasePeriodIE(data_.graceful_rel_period,
nullptr);
10053 return (reinterpret_cast<_AssnUpdateReq*>(iebuffer_))->grp_;
10058 if (idx >= upiri_.size())
10060 for (
auto i = upiri_.size(); i < static_cast<size_t>(idx)+1; i++)
10061 upiri_.push_back(UserPlaneIpResourceInformationIE(data_.user_plane_ip_rsrc_info[i],
nullptr));
10063 return upiri_[idx];
10068 return (data_.user_plane_ip_rsrc_info_count < MAX_LIST_SIZE) ?
10069 data_.user_plane_ip_rsrc_info_count++ : -1;
10074 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10075 uint16_t len = encode_pfcp_assn_upd_req_t(&data_, dest);
10076 data_.header.message_len = len;
10077 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10088 if (data_.node_id.header.len > 0) node_id(
True);
10089 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
10090 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
10091 if (data_.up_assn_rel_req.header.len > 0) up_assn_rel_req(
True);
10092 if (data_.graceful_rel_period.header.len > 0) graceful_rel_period(
True);
10094 for (
int i=0; i<MAX_LIST_SIZE; i++)
10096 if (data_.user_plane_ip_rsrc_info[i].header.len > 0) { next_user_plane_ip_rsrc_info(); user_plane_ip_rsrc_info(i); }
10105 setMsgType(PFCP_ASSN_UPD_RSP);
10106 data_.header.message_type = msgType();
10107 data_.header.version = 1;
10112 return data_.header.message_len;
10117 if (forceInit || data_.node_id.header.type == 0)
10118 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10119 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->ni_;
10124 if (forceInit || data_.cause.header.type == 0)
10125 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10126 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->c_;
10131 if (forceInit || data_.up_func_feat.header.type == 0)
10132 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->uff_) UpFunctionFeaturesIE(data_.up_func_feat,
nullptr);
10133 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->uff_;
10138 if (forceInit || data_.cp_func_feat.header.type == 0)
10139 new (&(
reinterpret_cast<_AssnUpdateRsp*
>(iebuffer_))->cff_) CpFunctionFeaturesIE(data_.cp_func_feat,
nullptr);
10140 return (reinterpret_cast<_AssnUpdateRsp*>(iebuffer_))->cff_;
10145 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10146 uint16_t len = encode_pfcp_assn_upd_rsp_t(&data_, dest);
10147 data_.header.message_len = len;
10148 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10159 if (data_.node_id.header.len > 0) node_id(
True);
10160 if (data_.cause.header.len > 0) cause(
True);
10161 if (data_.up_func_feat.header.len > 0) up_func_feat(
True);
10162 if (data_.cp_func_feat.header.len > 0) cp_func_feat(
True);
10168 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10171 setMsgType(PFCP_ASSN_REL_REQ);
10172 data_.header.message_type = msgType();
10173 data_.header.version = 1;
10178 return data_.header.message_len;
10183 if (forceInit || data_.node_id.header.type == 0)
10184 new (&(
reinterpret_cast<_AssnReleaseReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10185 return (reinterpret_cast<_AssnReleaseReq*>(iebuffer_))->ni_;
10190 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10191 uint16_t len = encode_pfcp_assn_rel_req_t(&data_, dest);
10192 data_.header.message_len = len;
10193 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10204 if (data_.node_id.header.len > 0) node_id(
True);
10212 setMsgType(PFCP_ASSN_REL_RSP);
10213 data_.header.message_type = msgType();
10214 data_.header.version = 1;
10219 return data_.header.message_len;
10224 if (forceInit || data_.node_id.header.type == 0)
10225 new (&(
reinterpret_cast<_AssnReleaseRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10226 return (reinterpret_cast<_AssnReleaseRsp*>(iebuffer_))->ni_;
10231 if (forceInit || data_.cause.header.type == 0)
10232 new (&(
reinterpret_cast<_AssnReleaseRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10233 return (reinterpret_cast<_AssnReleaseRsp*>(iebuffer_))->c_;
10238 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10239 uint16_t len = encode_pfcp_assn_rel_rsp_t(&data_, dest);
10240 data_.header.message_len = len;
10241 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10252 if (data_.node_id.header.len > 0) node_id(
True);
10253 if (data_.cause.header.len > 0) cause(
True);
10262 data_.message_type = msgType();
10268 return data_.message_len;
10273 data_.seid_seqno.no_seid.seq_no = 0;
10274 uint16_t len = encode_pfcp_header_t(&data_, dest);
10275 data_.message_len = len;
10276 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.message_len - 4);
10288 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10291 setMsgType(PFCP_NODE_RPT_REQ);
10292 data_.header.message_type = msgType();
10293 data_.header.version = 1;
10298 return data_.header.message_len;
10303 if (forceInit || data_.node_id.header.type == 0)
10304 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10305 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->ni_;
10310 if (forceInit || data_.node_rpt_type.header.type == 0)
10311 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->nrt_) NodeReportTypeIE(data_.node_rpt_type,
nullptr);
10312 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->nrt_;
10317 if (forceInit || data_.user_plane_path_fail_rpt.header.type == 0)
10318 new (&(
reinterpret_cast<_NodeReportReq*
>(iebuffer_))->uprfr_) UserPlanePathFailureReportIE(data_.user_plane_path_fail_rpt,
nullptr);
10319 return (reinterpret_cast<_NodeReportReq*>(iebuffer_))->uprfr_;
10324 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10325 uint16_t len = encode_pfcp_node_rpt_req_t(&data_, dest);
10326 data_.header.message_len = len;
10327 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10338 if (data_.node_id.header.len > 0) node_id(
True);
10339 if (data_.node_rpt_type.header.len > 0) node_rpt_type(
True);
10340 if (data_.user_plane_path_fail_rpt.header.len > 0) user_plane_path_fail_rpt(
True);
10348 setMsgType(PFCP_NODE_RPT_RSP);
10349 data_.header.message_type = msgType();
10350 data_.header.version = 1;
10355 return data_.header.message_len;
10360 if (forceInit || data_.node_id.header.type == 0)
10361 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10362 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->ni_;
10367 if (forceInit || data_.cause.header.type == 0)
10368 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10369 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->c_;
10374 if (forceInit || data_.offending_ie.header.type == 0)
10375 new (&(
reinterpret_cast<_NodeReportRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10376 return (reinterpret_cast<_NodeReportRsp*>(iebuffer_))->oi_;
10381 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10382 uint16_t len = encode_pfcp_node_rpt_rsp_t(&data_, dest);
10383 data_.header.message_len = len;
10384 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10395 if (data_.node_id.header.len > 0) node_id(
True);
10396 if (data_.cause.header.len > 0) cause(
True);
10397 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10403 :
PFCP::AppMsgNodeReq(ln,rn,allocSeqNbr),
10406 setMsgType(PFCP_SESS_SET_DEL_REQ);
10407 data_.header.message_type = msgType();
10408 data_.header.version = 1;
10413 return data_.header.message_len;
10418 if (forceInit || data_.node_id.header.type == 0)
10419 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10420 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->ni_;
10425 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10426 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->sc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10427 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->sc_;
10432 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10433 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->pc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10434 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->pc_;
10439 if (forceInit || data_.up_fqcsid.header.type == 0)
10440 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->u_) FqCsidIE(data_.up_fqcsid,
nullptr);
10441 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->u_;
10446 if (forceInit || data_.twan_fqcsid.header.type == 0)
10447 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->t_) FqCsidIE(data_.twan_fqcsid,
nullptr);
10448 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->t_;
10453 if (forceInit || data_.epdg_fqcsid.header.type == 0)
10454 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->e_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
10455 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->e_;
10460 if (forceInit || data_.mme_fqcsid.header.type == 0)
10461 new (&(
reinterpret_cast<_SessionSetDeletionReq*
>(iebuffer_))->m_) FqCsidIE(data_.mme_fqcsid,
nullptr);
10462 return (reinterpret_cast<_SessionSetDeletionReq*>(iebuffer_))->m_;
10467 data_.header.seid_seqno.no_seid.seq_no = seqNbr();
10468 uint16_t len = encode_pfcp_sess_set_del_req_t(&data_, dest);
10469 data_.header.message_len = len;
10470 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10481 if (data_.node_id.header.len > 0) node_id(
True);
10482 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
10483 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
10484 if (data_.up_fqcsid.header.len > 0) up_fqcsid(
True);
10485 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
10486 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
10487 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
10495 setMsgType(PFCP_SESS_SET_DEL_RSP);
10496 data_.header.message_type = msgType();
10497 data_.header.version = 1;
10502 return data_.header.message_len;
10507 if (forceInit || data_.node_id.header.type == 0)
10508 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10509 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->ni_;
10514 if (forceInit || data_.cause.header.type == 0)
10515 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10516 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->c_;
10521 if (forceInit || data_.offending_ie.header.type == 0)
10522 new (&(
reinterpret_cast<_SessionSetDeletionRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10523 return (reinterpret_cast<_SessionSetDeletionRsp*>(iebuffer_))->oi_;
10528 data_.header.seid_seqno.no_seid.seq_no = req()->
seqNbr();
10529 uint16_t len = encode_pfcp_sess_set_del_rsp_t(&data_, dest);
10530 data_.header.message_len = len;
10531 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10542 if (data_.node_id.header.len > 0) node_id(
True);
10543 if (data_.cause.header.len > 0) cause(
True);
10544 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10550 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
10553 setMsgType(PFCP_SESS_ESTAB_REQ);
10554 data_.header.message_type = msgType();
10555 data_.header.version = 1;
10556 data_.header.s = 1;
10561 return data_.header.message_len;
10566 if (forceInit || data_.node_id.header.type == 0)
10567 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10568 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ni_;
10573 if (forceInit || data_.cp_fseid.header.type == 0)
10574 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->cpf_) FSeidIE(data_.cp_fseid,
nullptr);
10575 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->cpf_;
10580 if (forceInit || data_.create_bar.header.type == 0)
10581 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->cb_) CreateBarIE(data_.create_bar,
nullptr);
10582 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->cb_;
10587 if (forceInit || data_.pdn_type.header.type == 0)
10588 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->pt_) PdnTypeIE(data_.pdn_type,
nullptr);
10589 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->pt_;
10594 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10595 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->sfc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10596 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->sfc_;
10601 if (forceInit || data_.mme_fqcsid.header.type == 0)
10602 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->mfc_) FqCsidIE(data_.mme_fqcsid,
nullptr);
10603 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->mfc_;
10608 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10609 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->pfc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10610 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->pfc_;
10615 if (forceInit || data_.epdg_fqcsid.header.type == 0)
10616 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->efc_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
10617 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->efc_;
10622 if (forceInit || data_.twan_fqcsid.header.type == 0)
10623 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->tfc_) FqCsidIE(data_.twan_fqcsid,
nullptr);
10624 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->tfc_;
10629 if (forceInit || data_.user_plane_inact_timer.header.type == 0)
10630 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->upit_) UserPlaneInactivityTimerIE(data_.user_plane_inact_timer,
nullptr);
10631 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->upit_;
10636 if (forceInit || data_.user_id.header.type == 0)
10637 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ui_) UserIdIE(data_.user_id,
nullptr);
10638 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ui_;
10643 if (forceInit || data_.trc_info.header.type == 0)
10644 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ti_) TraceInformationIE(data_.trc_info,
nullptr);
10645 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ti_;
10650 if (forceInit || data_.apn_dnn.header.type == 0)
10651 new (&(
reinterpret_cast<_SessionEstablishmentReq*
>(iebuffer_))->ad_) ApnDnnIE(data_.apn_dnn,
nullptr);
10652 return (reinterpret_cast<_SessionEstablishmentReq*>(iebuffer_))->ad_;
10657 if (idx >= cp_.size())
10659 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
10660 cp_.push_back(CreatePdrIE(data_.create_pdr[i],
nullptr));
10667 if (idx >= cf_.size())
10669 for (
auto i = cf_.size(); i < static_cast<size_t>(idx)+1; i++)
10670 cf_.push_back(CreateFarIE(data_.create_far[i],
nullptr));
10677 if (idx >= cu_.size())
10679 for (
auto i = cu_.size(); i < static_cast<size_t>(idx)+1; i++)
10680 cu_.push_back(CreateUrrIE(data_.create_urr[i],
nullptr));
10687 if (idx >= cq_.size())
10689 for (
auto i = cq_.size(); i < static_cast<size_t>(idx)+1; i++)
10690 cq_.push_back(CreateQerIE(data_.create_qer[i],
nullptr));
10697 if (idx >= cte_.size())
10699 for (
auto i = cte_.size(); i < static_cast<size_t>(idx)+1; i++)
10700 cte_.push_back(CreateTrafficEndpointIE(data_.create_traffic_endpt[i],
nullptr));
10707 return (data_.create_pdr_count < MAX_LIST_SIZE) ?
10708 data_.create_pdr_count++ : -1;
10713 return (data_.create_far_count < MAX_LIST_SIZE) ?
10714 data_.create_far_count++ : -1;
10719 return (data_.create_urr_count < MAX_LIST_SIZE) ?
10720 data_.create_urr_count++ : -1;
10725 return (data_.create_qer_count < MAX_LIST_SIZE) ?
10726 data_.create_qer_count++ : -1;
10731 return (data_.create_traffic_endpt_count < MAX_LIST_SIZE) ?
10732 data_.create_traffic_endpt_count++ : -1;
10737 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
10738 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
10739 UShort len = encode_pfcp_sess_estab_req_t(&data_, dest);
10740 data_.header.message_len = len;
10741 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10752 if (data_.node_id.header.len > 0) node_id(
True);
10753 if (data_.cp_fseid.header.len > 0) cp_fseid(
True);
10754 if (data_.create_bar.header.len > 0) create_bar(
True);
10755 if (data_.pdn_type.header.len > 0) pdn_type(
True);
10756 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
10757 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
10758 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
10759 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
10760 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
10761 if (data_.user_plane_inact_timer.header.len > 0) user_plane_inact_timer(
True);
10762 if (data_.user_id.header.len > 0) user_id(
True);
10763 if (data_.trc_info.header.len > 0) trc_info(
True);
10764 if (data_.apn_dnn.header.len > 0) apn_dnn(
True);
10781 setMsgType(PFCP_SESS_ESTAB_RSP);
10782 data_.header.message_type = msgType();
10783 data_.header.version = 1;
10784 data_.header.s = 1;
10789 return data_.header.message_len;
10794 if (forceInit || data_.node_id.header.type == 0)
10795 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ni_) NodeIdIE(data_.node_id,
nullptr);
10796 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ni_;
10801 if (forceInit || data_.cause.header.type == 0)
10802 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
10803 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->c_;
10808 if (forceInit || data_.offending_ie.header.type == 0)
10809 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
10810 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->oi_;
10815 if (forceInit || data_.up_fseid.header.type == 0)
10816 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ufs_) FSeidIE(data_.up_fseid,
nullptr);
10817 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ufs_;
10822 if (forceInit || data_.load_ctl_info.header.type == 0)
10823 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
10824 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->lci_;
10829 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
10830 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
10831 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->oci_;
10836 if (forceInit || data_.up_fqcsid.header.type == 0)
10837 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->ufc_) FqCsidIE(data_.up_fqcsid,
nullptr);
10838 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->ufc_;
10843 if (forceInit || data_.failed_rule_id.header.type == 0)
10844 new (&(
reinterpret_cast<_SessionEstablishmentRsp*
>(iebuffer_))->fri_) FailedRuleIdIE(data_.failed_rule_id,
nullptr);
10845 return (reinterpret_cast<_SessionEstablishmentRsp*>(iebuffer_))->fri_;
10850 if (idx >= cp_.size())
10852 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
10853 cp_.push_back(CreatedPdrIE(data_.created_pdr[i],
nullptr));
10860 if (idx >= cte_.size())
10862 for (
auto i = cte_.size(); i < static_cast<size_t>(idx)+1; i++)
10863 cte_.push_back(CreatedTrafficEndpointIE(data_.created_traffic_endpt[i],
nullptr));
10870 return (data_.created_pdr_count < MAX_LIST_SIZE) ?
10871 data_.created_pdr_count++ : -1;
10876 return (data_.created_traffic_endpt_count < MAX_LIST_SIZE) ?
10877 data_.created_traffic_endpt_count++ : -1;
10882 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
10883 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
10884 uint16_t len = encode_pfcp_sess_estab_rsp_t(&data_, dest);
10885 data_.header.message_len = len;
10886 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
10897 if (data_.node_id.header.len > 0) node_id(
True);
10898 if (data_.cause.header.len > 0) cause(
True);
10899 if (data_.offending_ie.header.len > 0) offending_ie(
True);
10900 if (data_.up_fseid.header.len > 0) up_fseid(
True);
10901 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
10902 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
10903 if (data_.up_fqcsid.header.len > 0) up_fqcsid(
True);
10904 if (data_.failed_rule_id.header.len > 0) failed_rule_id(
True);
10906 for (
int i=0; i<MAX_LIST_SIZE; i++)
10908 if (data_.created_pdr[i].header.len > 0) { next_created_pdr(); created_pdr(i); }
10909 if (data_.created_traffic_endpt[i].header.len > 0) { next_created_traffic_endpt(); created_traffic_endpt(i); }
10916 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
10919 setMsgType(PFCP_SESS_MOD_REQ);
10920 data_.header.message_type = msgType();
10921 data_.header.version = 1;
10922 data_.header.s = 1;
10927 return data_.header.message_len;
10932 if (forceInit || data_.cp_fseid.header.type == 0)
10933 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cfs_) FSeidIE(data_.cp_fseid,
nullptr);
10934 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cfs_;
10939 if (forceInit || data_.remove_bar.header.type == 0)
10940 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->rb_) RemoveBarIE(data_.remove_bar,
nullptr);
10941 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->rb_;
10946 if (forceInit || data_.rmv_traffic_endpt.header.type == 0)
10947 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->rte_) RemoveTrafficEndpointIE(data_.rmv_traffic_endpt,
nullptr);
10948 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->rte_;
10953 if (forceInit || data_.create_bar.header.type == 0)
10954 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cb_) CreateBarIE(data_.create_bar,
nullptr);
10955 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cb_;
10960 if (forceInit || data_.create_traffic_endpt.header.type == 0)
10961 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->cte_) CreateTrafficEndpointIE(data_.create_traffic_endpt,
nullptr);
10962 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->cte_;
10967 if (forceInit || data_.update_bar.header.type == 0)
10968 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ub_) UpdateBarSessionModificationReqIE(data_.update_bar,
nullptr);
10969 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ub_;
10974 if (forceInit || data_.upd_traffic_endpt.header.type == 0)
10975 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ute_) UpdateTrafficEndpointIE(data_.upd_traffic_endpt,
nullptr);
10976 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ute_;
10981 if (forceInit || data_.pfcpsmreq_flags.header.type == 0)
10982 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->f_) PfcpSmReqFlagsIE(data_.pfcpsmreq_flags,
nullptr);
10983 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->f_;
10988 if (forceInit || data_.pgw_c_fqcsid.header.type == 0)
10989 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->pcfc_) FqCsidIE(data_.pgw_c_fqcsid,
nullptr);
10990 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->pcfc_;
10995 if (forceInit || data_.sgw_c_fqcsid.header.type == 0)
10996 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->scfc_) FqCsidIE(data_.sgw_c_fqcsid,
nullptr);
10997 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->scfc_;
11002 if (forceInit || data_.mme_fqcsid.header.type == 0)
11003 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->mfc_) FqCsidIE(data_.mme_fqcsid,
nullptr);
11004 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->mfc_;
11009 if (forceInit || data_.epdg_fqcsid.header.type == 0)
11010 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->efc_) FqCsidIE(data_.epdg_fqcsid,
nullptr);
11011 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->efc_;
11016 if (forceInit || data_.twan_fqcsid.header.type == 0)
11017 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->tfc_) FqCsidIE(data_.twan_fqcsid,
nullptr);
11018 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->tfc_;
11023 if (forceInit || data_.user_plane_inact_timer.header.type == 0)
11024 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->upit_) UserPlaneInactivityTimerIE(data_.user_plane_inact_timer,
nullptr);
11025 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->upit_;
11030 if (forceInit || data_.query_urr_ref.header.type == 0)
11031 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->qur_) QueryUrrReferenceIE(data_.query_urr_ref,
nullptr);
11032 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->qur_;
11037 if (forceInit || data_.trc_info.header.type == 0)
11038 new (&(
reinterpret_cast<_SessionModificationReq*
>(iebuffer_))->ti_) TraceInformationIE(data_.trc_info,
nullptr);
11039 return (reinterpret_cast<_SessionModificationReq*>(iebuffer_))->ti_;
11044 if (idx >= rp_.size())
11046 for (
auto i = rp_.size(); i < static_cast<size_t>(idx)+1; i++)
11047 rp_.push_back(RemovePdrIE(data_.remove_pdr[i],
nullptr));
11054 if (idx >= rf_.size())
11056 for (
auto i = rf_.size(); i < static_cast<size_t>(idx)+1; i++)
11057 rf_.push_back(RemoveFarIE(data_.remove_far[i],
nullptr));
11064 if (idx >= ru_.size())
11066 for (
auto i = ru_.size(); i < static_cast<size_t>(idx)+1; i++)
11067 ru_.push_back(RemoveUrrIE(data_.remove_urr[i],
nullptr));
11074 if (idx >= rq_.size())
11076 for (
auto i = rq_.size(); i < static_cast<size_t>(idx)+1; i++)
11077 rq_.push_back(RemoveQerIE(data_.remove_qer[i],
nullptr));
11084 if (idx >= cp_.size())
11086 for (
auto i = cp_.size(); i < static_cast<size_t>(idx)+1; i++)
11087 cp_.push_back(CreatePdrIE(data_.create_pdr[i],
nullptr));
11094 if (idx >= cf_.size())
11096 for (
auto i = cf_.size(); i < static_cast<size_t>(idx)+1; i++)
11097 cf_.push_back(CreateFarIE(data_.create_far[i],
nullptr));
11104 if (idx >= cu_.size())
11106 for (
auto i = cu_.size(); i < static_cast<size_t>(idx)+1; i++)
11107 cu_.push_back(CreateUrrIE(data_.create_urr[i],
nullptr));
11114 if (idx >= cq_.size())
11116 for (
auto i = cq_.size(); i < static_cast<size_t>(idx)+1; i++)
11117 cq_.push_back(CreateQerIE(data_.create_qer[i],
nullptr));
11124 if (idx >= up_.size())
11126 for (
auto i = up_.size(); i < static_cast<size_t>(idx)+1; i++)
11127 up_.push_back(UpdatePdrIE(data_.update_pdr[i],
nullptr));
11134 if (idx >= uf_.size())
11136 for (
auto i = uf_.size(); i < static_cast<size_t>(idx)+1; i++)
11137 uf_.push_back(UpdateFarIE(data_.update_far[i],
nullptr));
11144 if (idx >= uu_.size())
11146 for (
auto i = uu_.size(); i < static_cast<size_t>(idx)+1; i++)
11147 uu_.push_back(UpdateUrrIE(data_.update_urr[i],
nullptr));
11154 if (idx >= uq_.size())
11156 for (
auto i = uq_.size(); i < static_cast<size_t>(idx)+1; i++)
11157 uq_.push_back(UpdateQerIE(data_.update_qer[i],
nullptr));
11164 if (idx >= qu_.size())
11166 for (
auto i = qu_.size(); i < static_cast<size_t>(idx)+1; i++)
11167 qu_.push_back(QueryUrrIE(data_.query_urr[i],
nullptr));
11174 return (data_.remove_pdr_count < MAX_LIST_SIZE) ?
11175 data_.remove_pdr_count++ : -1;
11180 return (data_.remove_far_count < MAX_LIST_SIZE) ?
11181 data_.remove_far_count++ : -1;
11186 return (data_.remove_urr_count < MAX_LIST_SIZE) ?
11187 data_.remove_urr_count++ : -1;
11192 return (data_.remove_qer_count < MAX_LIST_SIZE) ?
11193 data_.remove_qer_count++ : -1;
11198 return (data_.create_pdr_count < MAX_LIST_SIZE) ?
11199 data_.create_pdr_count++ : -1;
11204 return (data_.create_far_count < MAX_LIST_SIZE) ?
11205 data_.create_far_count++ : -1;
11210 return (data_.create_urr_count < MAX_LIST_SIZE) ?
11211 data_.create_urr_count++ : -1;
11216 return (data_.create_qer_count < MAX_LIST_SIZE) ?
11217 data_.create_qer_count++ : -1;
11222 return (data_.update_pdr_count < MAX_LIST_SIZE) ?
11223 data_.update_pdr_count++ : -1;
11228 return (data_.update_far_count < MAX_LIST_SIZE) ?
11229 data_.update_far_count++ : -1;
11234 return (data_.update_urr_count < MAX_LIST_SIZE) ?
11235 data_.update_urr_count++ : -1;
11240 return (data_.update_qer_count < MAX_LIST_SIZE) ?
11241 data_.update_qer_count++ : -1;
11246 return (data_.query_urr_count < MAX_LIST_SIZE) ?
11247 data_.query_urr_count++ : -1;
11252 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11253 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11254 uint16_t len = encode_pfcp_sess_mod_req_t(&data_, dest);
11255 data_.header.message_len = len;
11256 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11267 if (data_.cp_fseid.header.len > 0) cp_fseid(
True);
11268 if (data_.remove_bar.header.len > 0) remove_bar(
True);
11269 if (data_.rmv_traffic_endpt.header.len > 0) rmv_traffic_endpt(
True);
11270 if (data_.create_bar.header.len > 0) create_bar(
True);
11271 if (data_.create_traffic_endpt.header.len > 0) create_traffic_endpt(
True);
11272 if (data_.update_bar.header.len > 0) update_bar(
True);
11273 if (data_.upd_traffic_endpt.header.len > 0) upd_traffic_endpt(
True);
11274 if (data_.pfcpsmreq_flags.header.len > 0) pfcpsmreq_flags(
True);
11275 if (data_.pgw_c_fqcsid.header.len > 0) pgw_c_fqcsid(
True);
11276 if (data_.sgw_c_fqcsid.header.len > 0) sgw_c_fqcsid(
True);
11277 if (data_.mme_fqcsid.header.len > 0) mme_fqcsid(
True);
11278 if (data_.epdg_fqcsid.header.len > 0) epdg_fqcsid(
True);
11279 if (data_.twan_fqcsid.header.len > 0) twan_fqcsid(
True);
11280 if (data_.user_plane_inact_timer.header.len > 0) user_plane_inact_timer(
True);
11281 if (data_.query_urr_ref.header.len > 0) query_urr_ref(
True);
11282 if (data_.trc_info.header.len > 0) trc_info(
True);
11284 for (
int i=0; i<MAX_LIST_SIZE; i++)
11286 if (data_.remove_pdr[i].header.len > 0) { next_remove_pdr(); remove_pdr(i); }
11287 if (data_.remove_far[i].header.len > 0) { next_remove_far(); remove_far(i); }
11288 if (data_.remove_urr[i].header.len > 0) { next_remove_urr(); remove_urr(i); }
11289 if (data_.remove_qer[i].header.len > 0) { next_remove_qer(); remove_qer(i); }
11290 if (data_.create_pdr[i].header.len > 0) { next_create_pdr(); create_pdr(i); }
11291 if (data_.create_far[i].header.len > 0) { next_create_far(); create_far(i); }
11292 if (data_.create_urr[i].header.len > 0) { next_create_urr(); create_urr(i); }
11293 if (data_.create_qer[i].header.len > 0) { next_create_qer(); create_qer(i); }
11294 if (data_.update_pdr[i].header.len > 0) { next_update_pdr(); update_pdr(i); }
11295 if (data_.update_far[i].header.len > 0) { next_update_far(); update_far(i); }
11296 if (data_.update_urr[i].header.len > 0) { next_update_urr(); update_urr(i); }
11297 if (data_.update_qer[i].header.len > 0) { next_update_qer(); update_qer(i); }
11298 if (data_.query_urr[i].header.len > 0) { next_query_urr(); query_urr(i); }
11307 setMsgType(PFCP_SESS_MOD_RSP);
11308 data_.header.message_type = msgType();
11309 data_.header.version = 1;
11310 data_.header.s = 1;
11315 return data_.header.message_len;
11320 if (forceInit || data_.cause.header.type == 0)
11321 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11322 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->c_;
11327 if (forceInit || data_.offending_ie.header.type == 0)
11328 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11329 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->oi_;
11334 if (forceInit || data_.created_pdr.header.type == 0)
11335 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->cp_) CreatedPdrIE(data_.created_pdr,
nullptr);
11336 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->cp_;
11341 if (forceInit || data_.load_ctl_info.header.type == 0)
11342 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11343 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->lci_;
11348 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11349 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11350 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->oci_;
11355 if (forceInit || data_.failed_rule_id.header.type == 0)
11356 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->fri_) FailedRuleIdIE(data_.failed_rule_id,
nullptr);
11357 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->fri_;
11362 if (forceInit || data_.add_usage_rpts_info.header.type == 0)
11363 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->auri_) AdditionalUsageReportsInformationIE(data_.add_usage_rpts_info,
nullptr);
11364 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->auri_;
11369 if (forceInit || data_.createdupdated_traffic_endpt.header.type == 0)
11370 new (&(
reinterpret_cast<_SessionModificationRsp*
>(iebuffer_))->cute_) CreatedTrafficEndpointIE(data_.createdupdated_traffic_endpt,
nullptr);
11371 return (reinterpret_cast<_SessionModificationRsp*>(iebuffer_))->cute_;
11376 if (idx >= ur_.size())
11378 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11379 ur_.push_back(UsageReportSessionModificationRspIE(data_.usage_report[i],
nullptr));
11386 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11387 data_.usage_report_count++ : -1;
11392 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11393 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11394 uint16_t len = encode_pfcp_sess_mod_rsp_t(&data_, dest);
11395 data_.header.message_len = len;
11396 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11407 if (data_.cause.header.len > 0) cause(
True);
11408 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11409 if (data_.created_pdr.header.len > 0) created_pdr(
True);
11410 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11411 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11412 if (data_.failed_rule_id.header.len > 0) failed_rule_id(
True);
11413 if (data_.add_usage_rpts_info.header.len > 0) add_usage_rpts_info(
True);
11414 if (data_.createdupdated_traffic_endpt.header.len > 0) createdupdated_traffic_endpt(
True);
11420 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
11423 setMsgType(PFCP_SESS_DEL_REQ);
11424 data_.header.message_type = msgType();
11425 data_.header.version = 1;
11426 data_.header.s = 1;
11431 return data_.header.message_len;
11436 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11437 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11438 uint16_t len = encode_pfcp_sess_del_req_t(&data_, dest);
11439 data_.header.message_len = len;
11440 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11454 setMsgType(PFCP_SESS_DEL_RSP);
11455 data_.header.message_type = msgType();
11456 data_.header.version = 1;
11457 data_.header.s = 1;
11462 return data_.header.message_len;
11467 if (forceInit || data_.cause.header.type == 0)
11468 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11469 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->c_;
11474 if (forceInit || data_.offending_ie.header.type == 0)
11475 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11476 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->oi_;
11481 if (forceInit || data_.load_ctl_info.header.type == 0)
11482 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11483 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->lci_;
11488 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11489 new (&(
reinterpret_cast<_SessionDeletionRsp*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11490 return (reinterpret_cast<_SessionDeletionRsp*>(iebuffer_))->oci_;
11495 if (idx >= ur_.size())
11497 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11498 ur_.push_back(UsageReportSessionDeletionRspIE(data_.usage_report[i],
nullptr));
11505 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11506 data_.usage_report_count++ : -1;
11511 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11512 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11513 uint16_t len = encode_pfcp_sess_del_rsp_t(&data_, dest);
11514 data_.header.message_len = len;
11515 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11526 if (data_.cause.header.len > 0) cause(
True);
11527 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11528 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11529 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11531 for (
int i=0; i<MAX_LIST_SIZE; i++)
11533 if (data_.usage_report[i].header.len > 0) { next_usage_report(); usage_report(i); }
11540 :
PFCP::AppMsgSessionReq(ses,allocSeqNbr),
11543 setMsgType(PFCP_SESS_RPT_REQ);
11544 data_.header.message_type = msgType();
11545 data_.header.version = 1;
11546 data_.header.s = 1;
11551 return data_.header.message_len;
11556 if (forceInit || data_.report_type.header.type == 0)
11557 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->rt_) ReportTypeIE(data_.report_type,
nullptr);
11558 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->rt_;
11563 if (forceInit || data_.dnlnk_data_rpt.header.type == 0)
11564 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->ddr_) DownlinkDataReportIE(data_.dnlnk_data_rpt,
nullptr);
11565 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->ddr_;
11570 if (forceInit || data_.err_indctn_rpt.header.type == 0)
11571 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->eir_) ErrorIndicationReportIE(data_.err_indctn_rpt,
nullptr);
11572 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->eir_;
11577 if (forceInit || data_.load_ctl_info.header.type == 0)
11578 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->lci_) LoadControlInformationIE(data_.load_ctl_info,
nullptr);
11579 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->lci_;
11584 if (forceInit || data_.ovrld_ctl_info.header.type == 0)
11585 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->oci_) OverloadControlInformationIE(data_.ovrld_ctl_info,
nullptr);
11586 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->oci_;
11591 if (forceInit || data_.add_usage_rpts_info.header.type == 0)
11592 new (&(
reinterpret_cast<_SessionReportReq*
>(iebuffer_))->auri_) AdditionalUsageReportsInformationIE(data_.add_usage_rpts_info,
nullptr);
11593 return (reinterpret_cast<_SessionReportReq*>(iebuffer_))->auri_;
11598 if (idx >= ur_.size())
11600 for (
auto i = ur_.size(); i < static_cast<size_t>(idx)+1; i++)
11601 ur_.push_back(UsageReportSessionReportReqIE(data_.usage_report[i],
nullptr));
11608 return (data_.usage_report_count < MAX_LIST_SIZE) ?
11609 data_.usage_report_count++ : -1;
11614 data_.header.seid_seqno.has_seid.seq_no = seqNbr();
11615 data_.header.seid_seqno.has_seid.seid = session()->remoteSeid();
11616 uint16_t len = encode_pfcp_sess_rpt_req_t(&data_, dest);
11617 data_.header.message_len = len;
11618 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11629 if (data_.report_type.header.len > 0) report_type(
True);
11630 if (data_.dnlnk_data_rpt.header.len > 0) dnlnk_data_rpt(
True);
11631 if (data_.err_indctn_rpt.header.len > 0) err_indctn_rpt(
True);
11632 if (data_.load_ctl_info.header.len > 0) load_ctl_info(
True);
11633 if (data_.ovrld_ctl_info.header.len > 0) ovrld_ctl_info(
True);
11634 if (data_.add_usage_rpts_info.header.len > 0) add_usage_rpts_info(
True);
11636 for (
int i=0; i<MAX_LIST_SIZE; i++)
11638 if (data_.usage_report[i].header.len > 0) { next_usage_report(); usage_report(i); }
11647 setMsgType(PFCP_SESS_RPT_RSP);
11648 data_.header.message_type = msgType();
11649 data_.header.version = 1;
11650 data_.header.s = 1;
11655 return data_.header.message_len;
11660 if (forceInit || data_.cause.header.type == 0)
11661 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->c_) CauseIE(data_.cause,
nullptr);
11662 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->c_;
11667 if (forceInit || data_.offending_ie.header.type == 0)
11668 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->oi_) OffendingIeIE(data_.offending_ie,
nullptr);
11669 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->oi_;
11674 if (forceInit || data_.update_bar.header.type == 0)
11675 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->ub_) UpdateBarSessionReportRspIE(data_.update_bar,
nullptr);
11676 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->ub_;
11681 if (forceInit || data_.sxsrrsp_flags.header.type == 0)
11682 new (&(
reinterpret_cast<_SessionReportRsp*
>(iebuffer_))->flags_) PfcpSrRspFlagsIE(data_.sxsrrsp_flags,
nullptr);
11683 return (reinterpret_cast<_SessionReportRsp*>(iebuffer_))->flags_;
11688 data_.header.seid_seqno.has_seid.seq_no = req()->
seqNbr();
11689 data_.header.seid_seqno.has_seid.seid = req()->session()->remoteSeid();
11690 uint16_t len = encode_pfcp_sess_rpt_rsp_t(&data_, dest);
11691 data_.header.message_len = len;
11692 reinterpret_cast<pfcp_header_t*
>(dest)->message_len = htons(data_.header.message_len - 4);
11703 if (data_.cause.header.len > 0) cause(
True);
11704 if (data_.offending_ie.header.len > 0) offending_ie(
True);
11705 if (data_.update_bar.header.len > 0) update_bar(
True);
11706 if (data_.sxsrrsp_flags.header.len > 0) sxsrrsp_flags(
True);
11712 #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:36
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:1120
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:530
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)