uc-sdk
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
pbuf.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without modification,
6
* are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
* 3. The name of the author may not be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25
* OF SUCH DAMAGE.
26
*
27
* This file is part of the lwIP TCP/IP stack.
28
*
29
* Author: Adam Dunkels <adam@sics.se>
30
*
31
*/
32
33
#ifndef __LWIP_PBUF_H__
34
#define __LWIP_PBUF_H__
35
36
#include "
lwip/opt.h
"
37
#include "
lwip/err.h
"
38
39
#ifdef __cplusplus
40
extern
"C"
{
41
#endif
42
45
#define LWIP_SUPPORT_CUSTOM_PBUF (IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF)
46
47
#define PBUF_TRANSPORT_HLEN 20
48
#define PBUF_IP_HLEN 20
49
50
typedef
enum
{
51
PBUF_TRANSPORT
,
52
PBUF_IP
,
53
PBUF_LINK
,
54
PBUF_RAW
55
}
pbuf_layer
;
56
57
typedef
enum
{
58
PBUF_RAM
,
/* pbuf data is stored in RAM */
59
PBUF_ROM
,
/* pbuf data is stored in ROM */
60
PBUF_REF
,
/* pbuf comes from the pbuf pool */
61
PBUF_POOL
/* pbuf payload refers to RAM */
62
}
pbuf_type
;
63
64
66
#define PBUF_FLAG_PUSH 0x01U
67
69
#define PBUF_FLAG_IS_CUSTOM 0x02U
70
71
#define PBUF_FLAG_MCASTLOOP 0x04U
72
73
struct
pbuf
{
75
struct
pbuf
*
next
;
76
78
void
*
payload
;
79
87
u16_t
tot_len
;
88
90
u16_t
len
;
91
93
u8_t
/*pbuf_type*/
type
;
94
96
u8_t
flags
;
97
103
u16_t
ref
;
104
};
105
106
#if LWIP_SUPPORT_CUSTOM_PBUF
107
108
typedef
void (*pbuf_free_custom_fn)(
struct
pbuf
*p);
109
111
struct
pbuf_custom {
113
struct
pbuf
pbuf;
115
pbuf_free_custom_fn custom_free_function;
116
};
117
#endif
/* LWIP_SUPPORT_CUSTOM_PBUF */
118
119
/* Initializes the pbuf module. This call is empty for now, but may not be in future. */
120
#define pbuf_init()
121
122
struct
pbuf
*
pbuf_alloc
(
pbuf_layer
l,
u16_t
length,
pbuf_type
type
);
123
#if LWIP_SUPPORT_CUSTOM_PBUF
124
struct
pbuf
*pbuf_alloced_custom(
pbuf_layer
l,
u16_t
length,
pbuf_type
type
,
125
struct
pbuf_custom *p,
void
*payload_mem,
126
u16_t
payload_mem_len);
127
#endif
/* LWIP_SUPPORT_CUSTOM_PBUF */
128
void
pbuf_realloc
(
struct
pbuf
*p,
u16_t
size);
129
u8_t
pbuf_header
(
struct
pbuf
*p,
s16_t
header_size);
130
void
pbuf_ref
(
struct
pbuf
*p);
131
u8_t
pbuf_free
(
struct
pbuf
*p);
132
u8_t
pbuf_clen
(
struct
pbuf
*p);
133
void
pbuf_cat
(
struct
pbuf
*head,
struct
pbuf
*tail);
134
void
pbuf_chain
(
struct
pbuf
*head,
struct
pbuf
*tail);
135
struct
pbuf
*
pbuf_dechain
(
struct
pbuf
*p);
136
err_t
pbuf_copy
(
struct
pbuf
*p_to,
struct
pbuf
*p_from);
137
u16_t
pbuf_copy_partial
(
struct
pbuf
*p,
void
*dataptr,
u16_t
len
,
u16_t
offset);
138
err_t
pbuf_take
(
struct
pbuf
*buf,
const
void
*dataptr,
u16_t
len
);
139
struct
pbuf
*
pbuf_coalesce
(
struct
pbuf
*p,
pbuf_layer
layer);
140
#if LWIP_CHECKSUM_ON_COPY
141
err_t
pbuf_fill_chksum(
struct
pbuf
*p,
u16_t
start_offset,
const
void
*dataptr,
142
u16_t
len
,
u16_t
*chksum);
143
#endif
/* LWIP_CHECKSUM_ON_COPY */
144
145
u8_t
pbuf_get_at
(
struct
pbuf
* p,
u16_t
offset);
146
u16_t
pbuf_memcmp
(
struct
pbuf
* p,
u16_t
offset,
const
void
* s2,
u16_t
n);
147
u16_t
pbuf_memfind
(
struct
pbuf
* p,
const
void
*
mem
,
u16_t
mem_len,
u16_t
start_offset);
148
u16_t
pbuf_strstr
(
struct
pbuf
* p,
const
char
* substr);
149
150
#ifdef __cplusplus
151
}
152
#endif
153
154
#endif
/* __LWIP_PBUF_H__ */
lwip
src
include
lwip
pbuf.h
Generated on Fri Nov 15 2013 05:00:21 for uc-sdk by
1.8.4