blob: 52240c358fec21f99a6192f60c011778e6954a25 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36#ifndef __NETINFO_COMMON_STRUCT_H__
37#define __NETINFO_COMMON_STRUCT_H__
38
39#include "kal_public_defs.h"
40#include "atcmd_struct.h"
41#include "l3_inc_enums_public.h"
42
43#define MAX_NETWORK_V4_IP_INFO_NUM (1)
44#define MAX_NETWORK_V6_IP_INFO_NUM (1)
45
46#define MAX_IPSTK_V4_IP_INFO_NUM (1)
47#define MAX_IPSTK_V6_IP_INFO_NUM (8)
rjw8e44aab2022-11-30 16:42:16 +080048#define RES_INFO_MAX_CAUSE_NUM (5)
rjw6c1fd8f2022-11-30 14:33:01 +080049
50typedef struct {
51 kal_bool mtu_present;
52 kal_int32 mtu;
53 kal_uint8 addr[IPV4_ADDR_LEN];
54 kal_int32 netmask;
55} ipv4_info_struct;
56
57typedef struct {
58 kal_bool mtu_present;
59 kal_int32 mtu;
60 kal_uint8 addr[IPV6_ADDR_LEN];
61 kal_int32 prefix;
62} ipv6_info_struct;
63
64typedef struct {
65 kal_uint32 v4_count;
66 ipv4_info_struct v4_list[MAX_NETWORK_V4_IP_INFO_NUM];
67 kal_uint32 v6_count;
68 ipv6_info_struct v6_list[MAX_NETWORK_V6_IP_INFO_NUM];
69} network_ip_info_struct;
70
71typedef struct {
72 kal_uint32 v4_count;
73 ipv4_info_struct v4_list[MAX_IPSTK_V4_IP_INFO_NUM];
74 kal_uint32 v6_count;
75 ipv6_info_struct v6_list[MAX_IPSTK_V6_IP_INFO_NUM];
76 network_ip_info_struct network_ip_info; // Colgin workaround for L5 obtaining the network IP address to setup the IP stack manually
77} ipstk_ip_info_struct;
78
79typedef struct {
80 network_ip_info_struct network_ip_info;
81 ipstk_ip_info_struct ap_ipstk_ip_info;
82 ipstk_ip_info_struct md_ipstk_ip_info;
83} new_ip_info_struct;
84
85
86#define MAX_ADDR_BUF_NUM 10
87
88typedef enum {
89 INTERFACE_TYPE_NONE,
90 INTERFACE_TYPE_CCMNI,
91 INTERFACE_TYPE_RNDIS,
92 INTERFACE_TYPE_DUMMY_RNDIS,
93 INTERFACE_TYPE_VNIF,
94 INTERFACE_TYPE_MBIM,
95 INTERFACE_TYPE_MAX
96} interface_type_enum;
97
98typedef struct
99{
100 kal_bool PDPv4_addr_present;
101 kal_uint8 PDPv4_addr[IPV4_ADDR_LEN];
102 kal_int32 PDPv4_netmask;
103 kal_bool PDPv6_addr_present;
104 kal_uint8 PDPv6_addr[IPV6_ADDR_LEN];
105 kal_int32 PDPv6_prefix;
106 // Colgin workaround for L5 obtaining the network IP address to setup the IP stack manually
107 kal_bool network_PDPv4_addr_present;
108 kal_uint8 network_PDPv4_addr[IPV4_ADDR_LEN];
109 kal_int32 network_PDPv4_netmask;
110 kal_bool network_PDPv6_addr_present;
111 kal_uint8 network_PDPv6_addr[IPV6_ADDR_LEN];
112 kal_int32 network_PDPv6_prefix;
113} ip_info_struct;
114
115typedef struct
116{
117 kal_bool bearer_id_present;
118 kal_uint32 bearer_id;
119 kal_bool local_addr_and_subnet_mask_present;
120 at_addr_and_mask_struct local_addr_and_subnet_mask;
121 kal_bool gw_addr_present;
122 at_addr_struct gw_addr;
123 kal_uint32 pcscfv4_num;
124 kal_uint8 pcscfv4_addr[MAX_ADDR_BUF_NUM][IPV4_ADDR_LEN];
125 kal_uint32 pcscfv6_num;
126 kal_uint8 pcscfv6_addr[MAX_ADDR_BUF_NUM][IPV6_ADDR_LEN];
127 kal_uint32 dnsv4_num;
128 kal_uint8 dnsv4_addr[MAX_ADDR_BUF_NUM][IPV4_ADDR_LEN];
129 kal_uint32 dnsv6_num;
130 kal_uint8 dnsv6_addr[MAX_ADDR_BUF_NUM][IPV6_ADDR_LEN];
131 kal_bool IM_CN_Signalling_Flag_present;
132 atcmd_IM_CN_Signalling_Flag_enum IM_CN_Signalling_Flag;
133 kal_bool IPv4_MTU_present;
134 kal_uint32 IPv4_MTU;
135 kal_bool QCI_present;
136 kal_uint32 QCI;
137 kal_bool network_interface_id_present;
138 kal_uint32 network_interface_id; // get byipc_get_netif_id_from_l2p_chid(IPC_NETIF_ID_LHIF_BEGIN, interface_id.network_interface_id)
139 kal_bool PS_Data_off_Support_present;
140 kal_uint8 PS_Data_off_Support;
141 kal_bool PSI_present;
142 kal_uint8 PSI;
143 kal_bool SSC_mode_present;
144 kal_uint8 SSC_mode;
145 kal_bool S_NSSAI_present;
146 at_s_nssai_struct S_NSSAI;
147 kal_bool Access_type_present;
148 kal_uint8 Access_type;
149} net_info_struct;
150
151typedef struct
152{
153 kal_bool QCI_present;
154 kal_uint32 QCI;
155 kal_bool DL_GBR_present;
156 kal_uint32 DL_GBR;
157 kal_bool UL_GBR_present;
158 kal_uint32 UL_GBR;
159 kal_bool DL_MBR_present;
160 kal_uint32 DL_MBR;
161 kal_bool UL_MBR_present;
162 kal_uint32 UL_MBR;
163 kal_bool DL_AMBR_present;
164 kal_uint32 DL_AMBR;
165 kal_bool UL_AMBR_present;
166 kal_uint32 UL_AMBR;
167
168 /*c5gqosrdp_ind*/
169 kal_bool VQI_present;
170 kal_uint32 VQI; // integer type
171 kal_bool DL_GFBR_present;
172 kal_uint64 DL_GFBR; // integer type
173 kal_bool UL_GFBR_present;
174 kal_uint64 UL_GFBR; // integer type
175 kal_bool DL_MFBR_present;
176 kal_uint64 DL_MFBR; // integer type
177 kal_bool UL_MFBR_present;
178 kal_uint64 UL_MFBR; // integer type
179 kal_bool DL_SAMBR_present;
180 kal_uint64 DL_SAMBR; // integer type
181 kal_bool UL_SAMBR_present;
182 kal_uint64 UL_SAMBR; // integer type
183 kal_bool Averaging_window_present;
184 kal_uint32 Averaging_window; // integer type
185}QosInfo_t;
186typedef struct
187{
188 kal_bool packet_filter_identifier_present;
189 kal_uint32 packet_filter_identifier; // integer type
190 kal_bool evaluation_precedence_index_present;
191 kal_uint32 evaluation_precedence_index; // integer type
192 kal_bool remote_address_and_subnet_mask_present;
193 pdp_addr_len_enum remote_address_and_subnet_mask_len;
194 kal_uint8 remote_address_and_subnet_mask[MAXIMUM_POSSIBLE_ADDR_LEN * 2]; // string type
195 kal_bool protocol_number_next_header_present;
196 kal_uint32 protocol_number_next_header; // integer type
197 kal_bool local_port_range_present;
198 kal_uint8 local_port_range[LOCAL_PORT_RANGE_STRING_LEN]; // string type
199 kal_bool remote_port_range_present;
200 kal_uint8 remote_port_range[REMOTE_PORT_RANGE_STRING_LEN]; // string type
201 kal_bool ipsec_spi_present;
202 kal_uint32 ipsec_spi; // numeric value
203 kal_bool tos_traffic_class_and_mask_present;
204 kal_uint8 tos_traffic_class_and_mask[TOS_TRAFFIC_CLASS_AND_MASK_STRING_LEN]; // string type
205 kal_bool flow_label_present;
206 kal_uint32 flow_label; // numeric value
207 kal_bool direction_present;
208 atcmd_direction_enum direction; // integer type
209 kal_bool NW_packet_filter_Identifier_present;
210 kal_uint32 NW_packet_filter_Identifier; // integer type
211 kal_bool local_address_and_subnet_mask_present;
212 pdp_addr_len_enum local_address_and_subnet_mask_len;
213 kal_uint8 local_address_and_subnet_mask[MAXIMUM_POSSIBLE_ADDR_LEN * 2]; // string type
214 kal_bool QRI_present;
215 kal_uint32 QRI; // integer type
216}PktFilter_t;
217
218typedef struct
219{
220 kal_bool ims_info_present;
221 rat_enum current_rat;
222 pdp_addr_type_enum pdp_addr_type;
223 kal_uint32 primary_cid;
224 kal_uint32 bearer_id;
225 kal_uint8 pdu_session_id;
226 atcmd_IM_CN_Signalling_Flag_enum IM_CN_Signalling_Flag;
227 QosInfo_t qos;
228 kal_uint8 tft_count;
229 PktFilter_t tft[32];
230 kal_uint16 cgact_error_cause;
231 ps_cause_enum cgev_modify_cause;
232}ims_info_struct;
233
234typedef struct {
235 kal_uint32 if_type;
236 kal_uint32 if_id;
237} if_info_struct;
238
239typedef enum {
240 RETRYTIME_RESERVED_START = 0xFFFF0000,
241 RETRYTIME_NO_RETRY = 0xFFFFFFFF, //infinite
242 RETRYTIME_RESERVED_END = 0xFFFFFFFF,
243} retrytime_enum;
244
245typedef enum {
246 RETRY_CAUSE_UNKNOWN = 0,
247 RETRY_CAUSE_MAX = 0x7FFFFFFF,
248} retry_cause_enum;
249
250typedef struct {
251 kal_bool retrytime_present;
252 kal_uint32 retrytime;
253 retry_cause_enum cause;
254 kal_bool is_s_nssai_present;
255 at_s_nssai_struct s_nssai;
256} retry_info_struct;
257
rjw8e44aab2022-11-30 16:42:16 +0800258/* RES INFO Part*/
259enum {
260 RES_INFO_TYPE_PS = 0,
261 RES_INFO_TYPE_NW = 1,
262 RES_INFO_TYPE_EPDG = 2,
263 RES_INFO_TYPE_NUM,
264 RES_INFO_TYPE_MAX = 0x7fffffff,
265};
266typedef struct {
267 kal_uint8 num;
268 kal_uint16 value[RES_INFO_MAX_CAUSE_NUM];
269}res_info_ps_cause_t;
270
271typedef struct {
272 kal_uint8 num;
273 kal_uint16 value[RES_INFO_MAX_CAUSE_NUM];
274}res_info_nw_cause_t;
275
276typedef struct {
277 kal_uint8 num;
278 //kal_uint16 value;
279}res_info_epdg_cause_t;
280
281typedef struct {
282 res_info_ps_cause_t ps_cause;
283 res_info_nw_cause_t nw_cause;
284 //res_info_epdg_cause_t epdg_cause[ERR_CAUSE_NUM];
285}res_info_struct;
286
287#define res_info_get_cause(info_ptr, type, struct_type) (((info_ptr) == NULL ? NULL : \
288 ((type) == RES_INFO_TYPE_PS ? (struct_type *)&((info_ptr)->ps_cause) : \
289 ((type) == RES_INFO_TYPE_NW ? (struct_type *)&((info_ptr)->nw_cause) : \
290 NULL))))
rjw6c1fd8f2022-11-30 14:33:01 +0800291#endif /* __NETINFO_COMMON_STRUCT_H__ */