Unverified Commit 6fd511e6 authored by Rohan's avatar Rohan

IE UPF Features - length fix

parent b341745a
...@@ -703,39 +703,39 @@ struct up_function_features_s { ...@@ -703,39 +703,39 @@ struct up_function_features_s {
uint16_t quoac : 1; uint16_t quoac : 1;
uint16_t trace : 1; uint16_t trace : 1;
uint16_t frrt : 1; uint16_t frrt : 1;
// uint16_t spare : 2; // uint16_t spare : 2;
uint16_t pfde : 1; uint16_t pfde : 1;
uint16_t epfar : 1; uint16_t epfar : 1;
uint16_t dpdra : 1; uint16_t dpdra : 1;
uint16_t adpdp : 1; uint16_t adpdp : 1;
uint16_t ueip : 1; uint16_t ueip : 1;
uint16_t sset : 1; uint16_t sset : 1;
uint8_t mnop : 1; uint8_t mnop : 1;
uint8_t mte : 1; uint8_t mte : 1;
uint8_t bundl : 1; uint8_t bundl : 1;
uint8_t gcom : 1; uint8_t gcom : 1;
uint8_t mpas : 1; uint8_t mpas : 1;
uint8_t rttl : 1; uint8_t rttl : 1;
uint8_t vtime : 1; uint8_t vtime : 1;
uint8_t norp : 1; uint8_t norp : 1;
uint8_t iptv : 1; uint8_t iptv : 1;
uint8_t ip6pl : 1; uint8_t ip6pl : 1;
uint8_t tscu : 1; uint8_t tscu : 1;
uint8_t mptcp : 1; uint8_t mptcp : 1;
uint8_t atsss_ll : 1; uint8_t atsss_ll : 1;
uint8_t qfqm : 1; uint8_t qfqm : 1;
uint8_t gpqm : 1; uint8_t gpqm : 1;
uint8_t mt_edt : 1; uint8_t mt_edt : 1;
uint8_t ciot : 1; uint8_t ciot : 1;
uint8_t ethar : 1; uint8_t ethar : 1;
uint8_t ddds : 1; uint8_t ddds : 1;
uint8_t rds : 1; uint8_t rds : 1;
uint8_t rttwp : 1; uint8_t rttwp : 1;
uint8_t spare : 7; uint8_t spare : 7;
// up_function_features_s& operator=(up_function_features_s i) // up_function_features_s& operator=(up_function_features_s i)
//{ //{
...@@ -777,7 +777,7 @@ struct up_function_features_s { ...@@ -777,7 +777,7 @@ struct up_function_features_s {
iptv(0), iptv(0),
ip6pl(0), ip6pl(0),
tscu(0), tscu(0),
mptcp(0), mptcp(0),
atsss_ll(0), atsss_ll(0),
qfqm(0), qfqm(0),
...@@ -820,25 +820,25 @@ struct up_function_features_s { ...@@ -820,25 +820,25 @@ struct up_function_features_s {
bundl = i.bundl; bundl = i.bundl;
gcom = i.gcom; gcom = i.gcom;
mpas = i.mpas; mpas = i.mpas;
rttl = i.rttl; rttl = i.rttl;
vtime = i.vtime; vtime = i.vtime;
norp = i.norp; norp = i.norp;
iptv = i.iptv; iptv = i.iptv;
ip6pl = i.ip6pl; ip6pl = i.ip6pl;
tscu = i.tscu; tscu = i.tscu;
mptcp = i.mptcp; mptcp = i.mptcp;
atsss_ll = i.atsss_ll; atsss_ll = i.atsss_ll;
qfqm = i.qfqm; qfqm = i.qfqm;
gpqm = i.gpqm; gpqm = i.gpqm;
mt_edt= i.mt_edt; mt_edt = i.mt_edt;
ciot = i.ciot; ciot = i.ciot;
ethar = i.ethar; ethar = i.ethar;
ddds = i.ddds; ddds = i.ddds;
rds = i.rds; rds = i.rds;
rttwp = i.rttwp; rttwp = i.rttwp;
} }
}; };
// typedef struct up_function_features_s up_function_features_t; // typedef struct up_function_features_s up_function_features_t;
......
...@@ -2220,7 +2220,7 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2220,7 +2220,7 @@ class pfcp_up_function_features_ie : public pfcp_ie {
uint8_t quoac : 1; uint8_t quoac : 1;
uint8_t trace : 1; uint8_t trace : 1;
uint8_t frrt : 1; uint8_t frrt : 1;
// uint8_t spare : 2; // uint8_t spare : 2;
uint8_t pfde : 1; uint8_t pfde : 1;
uint8_t epfar : 1; uint8_t epfar : 1;
} bf; } bf;
...@@ -2249,11 +2249,11 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2249,11 +2249,11 @@ class pfcp_up_function_features_ie : public pfcp_ie {
uint8_t iptv : 1; uint8_t iptv : 1;
uint8_t ip6pl : 1; uint8_t ip6pl : 1;
uint8_t tscu : 1; uint8_t tscu : 1;
uint8_t mptcp : 1; uint8_t mptcp : 1;
} bf; } bf;
uint8_t b; uint8_t b;
} u4; } u4;
union { union {
struct { struct {
uint8_t atsss_ll : 1; uint8_t atsss_ll : 1;
uint8_t qfqm : 1; uint8_t qfqm : 1;
...@@ -2266,7 +2266,7 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2266,7 +2266,7 @@ class pfcp_up_function_features_ie : public pfcp_ie {
} bf; } bf;
uint8_t b; uint8_t b;
} u5; } u5;
union { union {
struct { struct {
uint8_t rttwp : 1; uint8_t rttwp : 1;
uint8_t spare : 7; uint8_t spare : 7;
...@@ -2277,12 +2277,12 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2277,12 +2277,12 @@ class pfcp_up_function_features_ie : public pfcp_ie {
//-------- //--------
explicit pfcp_up_function_features_ie(const pfcp::up_function_features_s& b) explicit pfcp_up_function_features_ie(const pfcp::up_function_features_s& b)
: pfcp_ie(PFCP_IE_UP_FUNCTION_FEATURES) { : pfcp_ie(PFCP_IE_UP_FUNCTION_FEATURES) {
u1.b = 0; u1.b = 0;
u2.b = 0; u2.b = 0;
u3.b = 0; u3.b = 0;
u4.b = 0; u4.b = 0;
u5.b = 0; u5.b = 0;
u6.b = 0; u6.b = 0;
u1.bf.bucp = b.bucp; u1.bf.bucp = b.bucp;
u1.bf.ddnd = b.ddnd; u1.bf.ddnd = b.ddnd;
...@@ -2311,28 +2311,28 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2311,28 +2311,28 @@ class pfcp_up_function_features_ie : public pfcp_ie {
u3.bf.bundl = b.bundl; u3.bf.bundl = b.bundl;
u3.bf.gcom = b.gcom; u3.bf.gcom = b.gcom;
u4.bf.mpas = b.mpas; u4.bf.mpas = b.mpas;
u4.bf.rttl = b.rttl; u4.bf.rttl = b.rttl;
u4.bf.vtime = b.vtime; u4.bf.vtime = b.vtime;
u4.bf.norp = b.norp; u4.bf.norp = b.norp;
u4.bf.iptv = b.iptv; u4.bf.iptv = b.iptv;
u4.bf.ip6pl = b.ip6pl; u4.bf.ip6pl = b.ip6pl;
u4.bf.tscu = b.tscu; u4.bf.tscu = b.tscu;
u4.bf.mptcp = b.mptcp; u4.bf.mptcp = b.mptcp;
u5.bf.atsss_ll = b.atsss_ll; u5.bf.atsss_ll = b.atsss_ll;
u5.bf.qfqm = b.qfqm; u5.bf.qfqm = b.qfqm;
u5.bf.gpqm = b.gpqm; u5.bf.gpqm = b.gpqm;
u5.bf.mt_edt= b.mt_edt; u5.bf.mt_edt = b.mt_edt;
u5.bf.ciot = b.ciot; u5.bf.ciot = b.ciot;
u5.bf.ethar = b.ethar; u5.bf.ethar = b.ethar;
u5.bf.ddds = b.ddds; u5.bf.ddds = b.ddds;
u5.bf.rds = b.rds; u5.bf.rds = b.rds;
u6.bf.rttwp = b.rttwp; u6.bf.rttwp = b.rttwp;
// tlv.set_length(2); // tlv.set_length(2);
tlv.set_length(6); tlv.set_length(6);
} }
//-------- //--------
pfcp_up_function_features_ie() : pfcp_ie(PFCP_IE_UP_FUNCTION_FEATURES) { pfcp_up_function_features_ie() : pfcp_ie(PFCP_IE_UP_FUNCTION_FEATURES) {
...@@ -2343,8 +2343,8 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2343,8 +2343,8 @@ class pfcp_up_function_features_ie : public pfcp_ie {
u5.b = 0; u5.b = 0;
u6.b = 0; u6.b = 0;
// tlv.set_length(2); // tlv.set_length(2);
tlv.set_length(6); tlv.set_length(6);
} }
//-------- //--------
explicit pfcp_up_function_features_ie(const pfcp_tlv& t) : pfcp_ie(t) { explicit pfcp_up_function_features_ie(const pfcp_tlv& t) : pfcp_ie(t) {
...@@ -2372,7 +2372,7 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2372,7 +2372,7 @@ class pfcp_up_function_features_ie : public pfcp_ie {
b.quoac = u2.bf.quoac; b.quoac = u2.bf.quoac;
b.trace = u2.bf.trace; b.trace = u2.bf.trace;
b.frrt = u2.bf.frrt; b.frrt = u2.bf.frrt;
// b.spare = 0; // b.spare = 0;
b.pfde = u2.bf.pfde; b.pfde = u2.bf.pfde;
b.epfar = u2.bf.epfar; b.epfar = u2.bf.epfar;
...@@ -2385,32 +2385,32 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2385,32 +2385,32 @@ class pfcp_up_function_features_ie : public pfcp_ie {
b.bundl = u3.bf.bundl; b.bundl = u3.bf.bundl;
b.gcom = u3.bf.gcom; b.gcom = u3.bf.gcom;
b.mpas = u4.bf.mpas; b.mpas = u4.bf.mpas;
b.rttl = u4.bf.rttl; b.rttl = u4.bf.rttl;
b.vtime = u4.bf.vtime; b.vtime = u4.bf.vtime;
b.norp = u4.bf.norp; b.norp = u4.bf.norp;
b.iptv = u4.bf.iptv; b.iptv = u4.bf.iptv;
b.ip6pl = u4.bf.ip6pl; b.ip6pl = u4.bf.ip6pl;
b.tscu = u4.bf.tscu; b.tscu = u4.bf.tscu;
b.mptcp = u4.bf.mptcp; b.mptcp = u4.bf.mptcp;
b.atsss_ll = u5.bf.atsss_ll; b.atsss_ll = u5.bf.atsss_ll;
b.qfqm = u5.bf.qfqm; b.qfqm = u5.bf.qfqm;
b.gpqm = u5.bf.gpqm; b.gpqm = u5.bf.gpqm;
b.mt_edt= u5.bf.mt_edt; b.mt_edt = u5.bf.mt_edt;
b.ciot = u5.bf.ciot; b.ciot = u5.bf.ciot;
b.ethar = u5.bf.ethar; b.ethar = u5.bf.ethar;
b.ddds = u5.bf.ddds; b.ddds = u5.bf.ddds;
b.rds = u5.bf.rds; b.rds = u5.bf.rds;
b.rttwp = u6.bf.rttwp; b.rttwp = u6.bf.rttwp;
b.spare = 0; b.spare = 0;
} }
//-------- //--------
void dump_to(std::ostream& os) { void dump_to(std::ostream& os) {
// tlv.set_length(2); // tlv.set_length(2);
tlv.set_length(6); tlv.set_length(6);
tlv.dump_to(os); tlv.dump_to(os);
os.write(reinterpret_cast<const char*>(&u1.b), sizeof(u1.b)); os.write(reinterpret_cast<const char*>(&u1.b), sizeof(u1.b));
...@@ -2423,8 +2423,8 @@ class pfcp_up_function_features_ie : public pfcp_ie { ...@@ -2423,8 +2423,8 @@ class pfcp_up_function_features_ie : public pfcp_ie {
//-------- //--------
void load_from(std::istream& is) { void load_from(std::istream& is) {
// tlv.load_from(is); // tlv.load_from(is);
// if (tlv.get_length() != 2) { // if (tlv.get_length() != 2) {
if (tlv.get_length() != 6) { if (tlv.get_length() > 6) {
throw pfcp_tlv_bad_length_exception( throw pfcp_tlv_bad_length_exception(
tlv.type, tlv.get_length(), __FILE__, __LINE__); tlv.type, tlv.get_length(), __FILE__, __LINE__);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment