blob: 569efdd93044688443d1eaa61b5b21686574ce9b [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef __LINUX_DCBNL_H__
20#define __LINUX_DCBNL_H__
21#include <linux/types.h>
22#define IEEE_8021QAZ_MAX_TCS 8
Ben Cheng655a7c02013-10-16 16:09:24 -070023#define IEEE_8021QAZ_TSA_STRICT 0
24#define IEEE_8021QAZ_TSA_CB_SHAPER 1
25#define IEEE_8021QAZ_TSA_ETS 2
26#define IEEE_8021QAZ_TSA_VENDOR 255
Ben Cheng655a7c02013-10-16 16:09:24 -070027struct ieee_ets {
Tao Baod7db5942015-01-28 10:07:51 -080028 __u8 willing;
29 __u8 ets_cap;
30 __u8 cbs;
Tao Baod7db5942015-01-28 10:07:51 -080031 __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
32 __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
33 __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
34 __u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
Tao Baod7db5942015-01-28 10:07:51 -080035 __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
36 __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
37 __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
Ben Cheng655a7c02013-10-16 16:09:24 -070038};
Ben Cheng655a7c02013-10-16 16:09:24 -070039struct ieee_maxrate {
Tao Baod7db5942015-01-28 10:07:51 -080040 __u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
Ben Cheng655a7c02013-10-16 16:09:24 -070041};
Christopher Ferris05d08e92016-02-04 13:16:38 -080042enum dcbnl_cndd_states {
Christopher Ferris05d08e92016-02-04 13:16:38 -080043 DCB_CNDD_RESET = 0,
44 DCB_CNDD_EDGE,
45 DCB_CNDD_INTERIOR,
46 DCB_CNDD_INTERIOR_READY,
Christopher Ferris05d08e92016-02-04 13:16:38 -080047};
48struct ieee_qcn {
49 __u8 rpg_enable[IEEE_8021QAZ_MAX_TCS];
50 __u32 rppp_max_rps[IEEE_8021QAZ_MAX_TCS];
Christopher Ferris05d08e92016-02-04 13:16:38 -080051 __u32 rpg_time_reset[IEEE_8021QAZ_MAX_TCS];
52 __u32 rpg_byte_reset[IEEE_8021QAZ_MAX_TCS];
53 __u32 rpg_threshold[IEEE_8021QAZ_MAX_TCS];
54 __u32 rpg_max_rate[IEEE_8021QAZ_MAX_TCS];
Christopher Ferris05d08e92016-02-04 13:16:38 -080055 __u32 rpg_ai_rate[IEEE_8021QAZ_MAX_TCS];
56 __u32 rpg_hai_rate[IEEE_8021QAZ_MAX_TCS];
57 __u32 rpg_gd[IEEE_8021QAZ_MAX_TCS];
58 __u32 rpg_min_dec_fac[IEEE_8021QAZ_MAX_TCS];
Christopher Ferris05d08e92016-02-04 13:16:38 -080059 __u32 rpg_min_rate[IEEE_8021QAZ_MAX_TCS];
60 __u32 cndd_state_machine[IEEE_8021QAZ_MAX_TCS];
61};
62struct ieee_qcn_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -080063 __u64 rppp_rp_centiseconds[IEEE_8021QAZ_MAX_TCS];
64 __u32 rppp_created_rps[IEEE_8021QAZ_MAX_TCS];
65};
Ben Cheng655a7c02013-10-16 16:09:24 -070066struct ieee_pfc {
Tao Baod7db5942015-01-28 10:07:51 -080067 __u8 pfc_cap;
68 __u8 pfc_en;
69 __u8 mbc;
70 __u16 delay;
Tao Baod7db5942015-01-28 10:07:51 -080071 __u64 requests[IEEE_8021QAZ_MAX_TCS];
72 __u64 indications[IEEE_8021QAZ_MAX_TCS];
Ben Cheng655a7c02013-10-16 16:09:24 -070073};
74#define CEE_DCBX_MAX_PGS 8
Ben Cheng655a7c02013-10-16 16:09:24 -070075#define CEE_DCBX_MAX_PRIO 8
76struct cee_pg {
Tao Baod7db5942015-01-28 10:07:51 -080077 __u8 willing;
78 __u8 error;
Tao Baod7db5942015-01-28 10:07:51 -080079 __u8 pg_en;
80 __u8 tcs_supported;
81 __u8 pg_bw[CEE_DCBX_MAX_PGS];
82 __u8 prio_pg[CEE_DCBX_MAX_PGS];
Ben Cheng655a7c02013-10-16 16:09:24 -070083};
84struct cee_pfc {
Tao Baod7db5942015-01-28 10:07:51 -080085 __u8 willing;
86 __u8 error;
Tao Baod7db5942015-01-28 10:07:51 -080087 __u8 pfc_en;
88 __u8 tcs_supported;
Ben Cheng655a7c02013-10-16 16:09:24 -070089};
90#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
Ben Cheng655a7c02013-10-16 16:09:24 -070091#define IEEE_8021QAZ_APP_SEL_STREAM 2
92#define IEEE_8021QAZ_APP_SEL_DGRAM 3
93#define IEEE_8021QAZ_APP_SEL_ANY 4
94struct dcb_app {
Tao Baod7db5942015-01-28 10:07:51 -080095 __u8 selector;
96 __u8 priority;
97 __u16 protocol;
Ben Cheng655a7c02013-10-16 16:09:24 -070098};
Ben Cheng655a7c02013-10-16 16:09:24 -070099struct dcb_peer_app_info {
Tao Baod7db5942015-01-28 10:07:51 -0800100 __u8 willing;
101 __u8 error;
Ben Cheng655a7c02013-10-16 16:09:24 -0700102};
Ben Cheng655a7c02013-10-16 16:09:24 -0700103struct dcbmsg {
Tao Baod7db5942015-01-28 10:07:51 -0800104 __u8 dcb_family;
105 __u8 cmd;
106 __u16 dcb_pad;
Ben Cheng655a7c02013-10-16 16:09:24 -0700107};
108enum dcbnl_commands {
Tao Baod7db5942015-01-28 10:07:51 -0800109 DCB_CMD_UNDEFINED,
110 DCB_CMD_GSTATE,
Tao Baod7db5942015-01-28 10:07:51 -0800111 DCB_CMD_SSTATE,
112 DCB_CMD_PGTX_GCFG,
113 DCB_CMD_PGTX_SCFG,
114 DCB_CMD_PGRX_GCFG,
Tao Baod7db5942015-01-28 10:07:51 -0800115 DCB_CMD_PGRX_SCFG,
116 DCB_CMD_PFC_GCFG,
117 DCB_CMD_PFC_SCFG,
118 DCB_CMD_SET_ALL,
Tao Baod7db5942015-01-28 10:07:51 -0800119 DCB_CMD_GPERM_HWADDR,
120 DCB_CMD_GCAP,
121 DCB_CMD_GNUMTCS,
122 DCB_CMD_SNUMTCS,
Tao Baod7db5942015-01-28 10:07:51 -0800123 DCB_CMD_PFC_GSTATE,
124 DCB_CMD_PFC_SSTATE,
125 DCB_CMD_BCN_GCFG,
126 DCB_CMD_BCN_SCFG,
Tao Baod7db5942015-01-28 10:07:51 -0800127 DCB_CMD_GAPP,
128 DCB_CMD_SAPP,
129 DCB_CMD_IEEE_SET,
130 DCB_CMD_IEEE_GET,
Tao Baod7db5942015-01-28 10:07:51 -0800131 DCB_CMD_GDCBX,
132 DCB_CMD_SDCBX,
133 DCB_CMD_GFEATCFG,
134 DCB_CMD_SFEATCFG,
Tao Baod7db5942015-01-28 10:07:51 -0800135 DCB_CMD_CEE_GET,
136 DCB_CMD_IEEE_DEL,
137 __DCB_CMD_ENUM_MAX,
138 DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700139};
140enum dcbnl_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800141 DCB_ATTR_UNDEFINED,
142 DCB_ATTR_IFNAME,
Tao Baod7db5942015-01-28 10:07:51 -0800143 DCB_ATTR_STATE,
144 DCB_ATTR_PFC_STATE,
145 DCB_ATTR_PFC_CFG,
146 DCB_ATTR_NUM_TC,
Tao Baod7db5942015-01-28 10:07:51 -0800147 DCB_ATTR_PG_CFG,
148 DCB_ATTR_SET_ALL,
149 DCB_ATTR_PERM_HWADDR,
150 DCB_ATTR_CAP,
Tao Baod7db5942015-01-28 10:07:51 -0800151 DCB_ATTR_NUMTCS,
152 DCB_ATTR_BCN,
153 DCB_ATTR_APP,
154 DCB_ATTR_IEEE,
Tao Baod7db5942015-01-28 10:07:51 -0800155 DCB_ATTR_DCBX,
156 DCB_ATTR_FEATCFG,
157 DCB_ATTR_CEE,
158 __DCB_ATTR_ENUM_MAX,
Tao Baod7db5942015-01-28 10:07:51 -0800159 DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700160};
161enum ieee_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800162 DCB_ATTR_IEEE_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800163 DCB_ATTR_IEEE_ETS,
164 DCB_ATTR_IEEE_PFC,
165 DCB_ATTR_IEEE_APP_TABLE,
166 DCB_ATTR_IEEE_PEER_ETS,
Tao Baod7db5942015-01-28 10:07:51 -0800167 DCB_ATTR_IEEE_PEER_PFC,
168 DCB_ATTR_IEEE_PEER_APP,
169 DCB_ATTR_IEEE_MAXRATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800170 DCB_ATTR_IEEE_QCN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800171 DCB_ATTR_IEEE_QCN_STATS,
172 __DCB_ATTR_IEEE_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700173};
174#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
175enum ieee_attrs_app {
Tao Baod7db5942015-01-28 10:07:51 -0800176 DCB_ATTR_IEEE_APP_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800177 DCB_ATTR_IEEE_APP,
178 __DCB_ATTR_IEEE_APP_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700179};
180#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700181enum cee_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800182 DCB_ATTR_CEE_UNSPEC,
183 DCB_ATTR_CEE_PEER_PG,
184 DCB_ATTR_CEE_PEER_PFC,
Tao Baod7db5942015-01-28 10:07:51 -0800185 DCB_ATTR_CEE_PEER_APP_TABLE,
186 DCB_ATTR_CEE_TX_PG,
187 DCB_ATTR_CEE_RX_PG,
188 DCB_ATTR_CEE_PFC,
Tao Baod7db5942015-01-28 10:07:51 -0800189 DCB_ATTR_CEE_APP_TABLE,
190 DCB_ATTR_CEE_FEAT,
191 __DCB_ATTR_CEE_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700192};
Ben Cheng655a7c02013-10-16 16:09:24 -0700193#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
194enum peer_app_attr {
Tao Baod7db5942015-01-28 10:07:51 -0800195 DCB_ATTR_CEE_PEER_APP_UNSPEC,
196 DCB_ATTR_CEE_PEER_APP_INFO,
Tao Baod7db5942015-01-28 10:07:51 -0800197 DCB_ATTR_CEE_PEER_APP,
198 __DCB_ATTR_CEE_PEER_APP_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700199};
200#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700201enum cee_attrs_app {
Tao Baod7db5942015-01-28 10:07:51 -0800202 DCB_ATTR_CEE_APP_UNSPEC,
203 DCB_ATTR_CEE_APP,
204 __DCB_ATTR_CEE_APP_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700205};
206#define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
207enum dcbnl_pfc_up_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800208 DCB_PFC_UP_ATTR_UNDEFINED,
Tao Baod7db5942015-01-28 10:07:51 -0800209 DCB_PFC_UP_ATTR_0,
210 DCB_PFC_UP_ATTR_1,
211 DCB_PFC_UP_ATTR_2,
212 DCB_PFC_UP_ATTR_3,
Tao Baod7db5942015-01-28 10:07:51 -0800213 DCB_PFC_UP_ATTR_4,
214 DCB_PFC_UP_ATTR_5,
215 DCB_PFC_UP_ATTR_6,
216 DCB_PFC_UP_ATTR_7,
Tao Baod7db5942015-01-28 10:07:51 -0800217 DCB_PFC_UP_ATTR_ALL,
218 __DCB_PFC_UP_ATTR_ENUM_MAX,
219 DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700220};
Ben Cheng655a7c02013-10-16 16:09:24 -0700221enum dcbnl_pg_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800222 DCB_PG_ATTR_UNDEFINED,
223 DCB_PG_ATTR_TC_0,
224 DCB_PG_ATTR_TC_1,
Tao Baod7db5942015-01-28 10:07:51 -0800225 DCB_PG_ATTR_TC_2,
226 DCB_PG_ATTR_TC_3,
227 DCB_PG_ATTR_TC_4,
228 DCB_PG_ATTR_TC_5,
Tao Baod7db5942015-01-28 10:07:51 -0800229 DCB_PG_ATTR_TC_6,
230 DCB_PG_ATTR_TC_7,
231 DCB_PG_ATTR_TC_MAX,
232 DCB_PG_ATTR_TC_ALL,
Tao Baod7db5942015-01-28 10:07:51 -0800233 DCB_PG_ATTR_BW_ID_0,
234 DCB_PG_ATTR_BW_ID_1,
235 DCB_PG_ATTR_BW_ID_2,
236 DCB_PG_ATTR_BW_ID_3,
Tao Baod7db5942015-01-28 10:07:51 -0800237 DCB_PG_ATTR_BW_ID_4,
238 DCB_PG_ATTR_BW_ID_5,
239 DCB_PG_ATTR_BW_ID_6,
240 DCB_PG_ATTR_BW_ID_7,
Tao Baod7db5942015-01-28 10:07:51 -0800241 DCB_PG_ATTR_BW_ID_MAX,
242 DCB_PG_ATTR_BW_ID_ALL,
243 __DCB_PG_ATTR_ENUM_MAX,
244 DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700245};
246enum dcbnl_tc_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800247 DCB_TC_ATTR_PARAM_UNDEFINED,
248 DCB_TC_ATTR_PARAM_PGID,
Tao Baod7db5942015-01-28 10:07:51 -0800249 DCB_TC_ATTR_PARAM_UP_MAPPING,
250 DCB_TC_ATTR_PARAM_STRICT_PRIO,
251 DCB_TC_ATTR_PARAM_BW_PCT,
252 DCB_TC_ATTR_PARAM_ALL,
Tao Baod7db5942015-01-28 10:07:51 -0800253 __DCB_TC_ATTR_PARAM_ENUM_MAX,
254 DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700255};
256enum dcbnl_cap_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800257 DCB_CAP_ATTR_UNDEFINED,
258 DCB_CAP_ATTR_ALL,
259 DCB_CAP_ATTR_PG,
260 DCB_CAP_ATTR_PFC,
Tao Baod7db5942015-01-28 10:07:51 -0800261 DCB_CAP_ATTR_UP2TC,
262 DCB_CAP_ATTR_PG_TCS,
263 DCB_CAP_ATTR_PFC_TCS,
264 DCB_CAP_ATTR_GSP,
Tao Baod7db5942015-01-28 10:07:51 -0800265 DCB_CAP_ATTR_BCN,
266 DCB_CAP_ATTR_DCBX,
267 __DCB_CAP_ATTR_ENUM_MAX,
268 DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700269};
270#define DCB_CAP_DCBX_HOST 0x01
271#define DCB_CAP_DCBX_LLD_MANAGED 0x02
272#define DCB_CAP_DCBX_VER_CEE 0x04
Ben Cheng655a7c02013-10-16 16:09:24 -0700273#define DCB_CAP_DCBX_VER_IEEE 0x08
274#define DCB_CAP_DCBX_STATIC 0x10
275enum dcbnl_numtcs_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800276 DCB_NUMTCS_ATTR_UNDEFINED,
Tao Baod7db5942015-01-28 10:07:51 -0800277 DCB_NUMTCS_ATTR_ALL,
278 DCB_NUMTCS_ATTR_PG,
279 DCB_NUMTCS_ATTR_PFC,
280 __DCB_NUMTCS_ATTR_ENUM_MAX,
Tao Baod7db5942015-01-28 10:07:51 -0800281 DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700282};
Tao Baod7db5942015-01-28 10:07:51 -0800283enum dcbnl_bcn_attrs {
284 DCB_BCN_ATTR_UNDEFINED = 0,
Tao Baod7db5942015-01-28 10:07:51 -0800285 DCB_BCN_ATTR_RP_0,
286 DCB_BCN_ATTR_RP_1,
287 DCB_BCN_ATTR_RP_2,
288 DCB_BCN_ATTR_RP_3,
Tao Baod7db5942015-01-28 10:07:51 -0800289 DCB_BCN_ATTR_RP_4,
290 DCB_BCN_ATTR_RP_5,
291 DCB_BCN_ATTR_RP_6,
292 DCB_BCN_ATTR_RP_7,
Tao Baod7db5942015-01-28 10:07:51 -0800293 DCB_BCN_ATTR_RP_ALL,
294 DCB_BCN_ATTR_BCNA_0,
295 DCB_BCN_ATTR_BCNA_1,
296 DCB_BCN_ATTR_ALPHA,
Tao Baod7db5942015-01-28 10:07:51 -0800297 DCB_BCN_ATTR_BETA,
298 DCB_BCN_ATTR_GD,
299 DCB_BCN_ATTR_GI,
300 DCB_BCN_ATTR_TMAX,
Tao Baod7db5942015-01-28 10:07:51 -0800301 DCB_BCN_ATTR_TD,
302 DCB_BCN_ATTR_RMIN,
303 DCB_BCN_ATTR_W,
304 DCB_BCN_ATTR_RD,
Tao Baod7db5942015-01-28 10:07:51 -0800305 DCB_BCN_ATTR_RU,
306 DCB_BCN_ATTR_WRTT,
307 DCB_BCN_ATTR_RI,
308 DCB_BCN_ATTR_C,
Tao Baod7db5942015-01-28 10:07:51 -0800309 DCB_BCN_ATTR_ALL,
310 __DCB_BCN_ATTR_ENUM_MAX,
311 DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700312};
Ben Cheng655a7c02013-10-16 16:09:24 -0700313enum dcb_general_attr_values {
Tao Baod7db5942015-01-28 10:07:51 -0800314 DCB_ATTR_VALUE_UNDEFINED = 0xff
Ben Cheng655a7c02013-10-16 16:09:24 -0700315};
316#define DCB_APP_IDTYPE_ETHTYPE 0x00
Ben Cheng655a7c02013-10-16 16:09:24 -0700317#define DCB_APP_IDTYPE_PORTNUM 0x01
318enum dcbnl_app_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800319 DCB_APP_ATTR_UNDEFINED,
320 DCB_APP_ATTR_IDTYPE,
Tao Baod7db5942015-01-28 10:07:51 -0800321 DCB_APP_ATTR_ID,
322 DCB_APP_ATTR_PRIORITY,
323 __DCB_APP_ATTR_ENUM_MAX,
324 DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700325};
326#define DCB_FEATCFG_ERROR 0x01
327#define DCB_FEATCFG_ENABLE 0x02
328#define DCB_FEATCFG_WILLING 0x04
Ben Cheng655a7c02013-10-16 16:09:24 -0700329#define DCB_FEATCFG_ADVERTISE 0x08
330enum dcbnl_featcfg_attrs {
Tao Baod7db5942015-01-28 10:07:51 -0800331 DCB_FEATCFG_ATTR_UNDEFINED,
332 DCB_FEATCFG_ATTR_ALL,
Tao Baod7db5942015-01-28 10:07:51 -0800333 DCB_FEATCFG_ATTR_PG,
334 DCB_FEATCFG_ATTR_PFC,
335 DCB_FEATCFG_ATTR_APP,
336 __DCB_FEATCFG_ATTR_ENUM_MAX,
Tao Baod7db5942015-01-28 10:07:51 -0800337 DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700338};
Ben Cheng655a7c02013-10-16 16:09:24 -0700339#endif