summaryrefslogtreecommitdiffstats
path: root/stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h
diff options
context:
space:
mode:
Diffstat (limited to 'stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h')
-rw-r--r--stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h b/stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h
new file mode 100644
index 0000000..a73565b
--- /dev/null
+++ b/stacks/lwip_stack/lwip_src/common/stackx_pbuf_comm.h
@@ -0,0 +1,109 @@
+/*
+*
+* Copyright (c) 2018 Huawei Technologies Co.,Ltd.
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at:
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef STACKX_PBUF_COMM_H
+#define STACKX_PBUF_COMM_H
+#include "types.h"
+
+#ifdef __cplusplus
+/* *INDENT-OFF* */
+extern "C" {
+/* *INDENT-ON* */
+#endif
+
+#define SPL_PBUF_TRANSPORT_HLEN 20
+#define SPL_PBUF_UDP_HLEN 8
+#define SPL_PBUF_IP_HLEN 20
+
+#define SPL_PBUF_VLAN_HLEN 0
+
+#ifndef SPL_PBUF_LINK_HLEN
+#define SPL_PBUF_LINK_HLEN (14 + SPL_PBUF_VLAN_HLEN)
+#endif
+
+typedef enum spl_pbuf_layer
+{
+ SPL_PBUF_TRANSPORT,
+ SPL_PBUF_UDP,
+ SPL_PBUF_IP,
+ SPL_PBUF_LINK,
+ SPL_PBUF_RAW,
+ SPL_PBUF_MAX_LAYER,
+} spl_pbuf_layer;
+
+typedef enum spl_pbuf_type
+{
+ SPL_PBUF_RAM, /* pbuf data is stored in RAM */
+ SPL_PBUF_ROM, /* pbuf data is stored in ROM */
+ SPL_PBUF_REF, /* pbuf comes from the pbuf pool */
+ SPL_PBUF_POOL, /* pbuf payload refers to RAM */
+ SPL_PBUF_HUGE /* pbuf is stored in HugePage memory in struct common_mem_mbuf */
+} spl_pbuf_type;
+
+enum spl_pbuf_proto
+{
+ SPL_PBUF_PROTO_NONE,
+ SPL_PBUF_TCP_SEND,
+ SPL_PBUF_TCP_RECV
+} spl_pbuf_proto;
+
+typedef struct spl_pbuf
+{
+ /** next pbuf in singly linked pbuf chain */
+ union
+ {
+ struct spl_pbuf *next;
+ u64 next_a;
+ };
+
+ /** pointer to the actual data in the buffer */
+ union
+ {
+ void *payload;
+ u64 payload_a;
+ };
+
+ union
+ {
+ void *msg;
+ u64 msg_a;
+ };
+
+ union
+ {
+ void *conn;
+ u64 conn_a;
+ };
+
+ struct spl_pbuf *freeNext; // This pointer will point to next pbuf you want to free in stackx
+
+ u32 tot_len;
+ u32 len;
+ int proto_type;
+ u16 ref;
+ u8 type;
+ u8 flags;
+ nsfw_res res_chk;
+
+} spl_pbuf;
+
+#ifdef __cplusplus
+/* *INDENT-OFF* */
+}
+/* *INDENT-ON* */
+#endif
+
+#endif