2 ==================================================================================
3 Copyright (c) 2018-2019 AT&T Intellectual Property.
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
9 http://www.apache.org/licenses/LICENSE-2.0
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 ==================================================================================
21 * Created on: Aug 14, 2019
22 * Author: Ashwin Sridharan
25 #ifndef SGNB_INDICATION_HELPER_
26 #define SGNB_INDICATION_HELPER_
32 struct erab_sgnb_item {
33 erab_sgnb_item(void): qci(0), priority_level(0), pre_emption_capability(0), pre_emption_vulnerability(0), dl_forwarding(0), ul_configuration(0), secondary_meNB_UTL_GTP(0), transport_layer_addr(0), transport_layer_addr_size(0), transport_layer_addr_unused(0), gtp_tei(0), gtp_tei_size(0), rlc_mode(0) {};
35 /* Erab level qos parameters */
37 long int priority_level;
38 long int pre_emption_capability;
39 long int pre_emption_vulnerability;
43 /* Optional forwarding info */
45 void * ul_configuration;
46 void * secondary_meNB_UTL_GTP;
48 /* Tunnel end point */
49 unsigned char * transport_layer_addr;
50 int transport_layer_addr_size;
51 int transport_layer_addr_unused;
53 unsigned char * gtp_tei;
64 erab_item(void):erab_id(0), drb_id(0), cause(0), pdcp_at_sgnb(0), mcg_resources(0), scg_resources(0), sgnb_pdcp_present(0) {};
69 int cause; // used when not admitting
70 /* enums describing type
71 of resources present */
73 long int pdcp_at_sgnb;
74 long int mcg_resources;
75 long int scg_resources;
78 int sgnb_pdcp_present;
79 struct erab_sgnb_item sgnb_item;
86 class sgnb_addition_helper {
91 sgnb_addition_helper(void): menb_ue_x2ap_id(0), sgnb_ue_x2ap_id(0), encryption_algs(0), encryption_algs_size(0), encryption_algs_unused(0), integrity_protection_algs(0), integrity_protection_algs_size(0), integrity_protection_algs_unused(0), sgnb_security_key(0), sgnb_security_key_size(0), sgnb_security_key_unused(0), bit_rate_max_up(0), bit_rate_max_dn(0), menb_sgnb_container(0), menb_sgnb_container_size(0), selected_plmn(0), selected_plmn_size(0), plmn_identity(0), plmn_identity_size(0), eutran_identifier(0), eutran_identifier_size(0), eutran_identifier_unused(0), subscriber_profile_id(0), cause(0), cause_desc(0) {};
93 long int menb_ue_x2ap_id, sgnb_ue_x2ap_id;
95 unsigned char *encryption_algs;
96 int encryption_algs_size;
97 int encryption_algs_unused;
99 unsigned char *integrity_protection_algs;
100 int integrity_protection_algs_size;
101 int integrity_protection_algs_unused;
103 unsigned char *sgnb_security_key;
104 int sgnb_security_key_size;
105 int sgnb_security_key_unused;
107 long int bit_rate_max_up, bit_rate_max_dn;
109 unsigned char *menb_sgnb_container;
110 int menb_sgnb_container_size;
112 unsigned char *selected_plmn;
113 int selected_plmn_size;
115 unsigned char *plmn_identity;
116 int plmn_identity_size;
118 unsigned char *eutran_identifier;
119 int eutran_identifier_size;
120 int eutran_identifier_unused;
123 int subscriber_profile_id;
125 int cause; // CHOICE {radioNetwork CauseRadioNetwork,transport CauseTransport,protocol CauseProtocol,misc CauseMisc}
126 int cause_desc; //enum CauseRadioNetwork, enum CauseTransport...etc
130 erab_admitted_list.clear();
131 erab_not_admitted_list.clear();
134 std::vector<struct erab_item> * get_list(void) { return &erab_list;};
135 std::vector<struct erab_item> * get_admitted_list(void) { return &erab_admitted_list;};
136 std::vector<struct erab_item> * get_not_admitted_list(void) { return &erab_not_admitted_list;};
138 std::vector<struct erab_item> erab_list;
139 std::vector<struct erab_item> erab_admitted_list;
140 std::vector<struct erab_item> erab_not_admitted_list;