uc-sdk
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
udp.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
#ifndef __LWIP_UDP_H__
33
#define __LWIP_UDP_H__
34
35
#include "
lwip/opt.h
"
36
37
#if LWIP_UDP
/* don't build if not configured for use in lwipopts.h */
38
39
#include "
lwip/pbuf.h
"
40
#include "
lwip/netif.h
"
41
#include "lwip/ip_addr.h"
42
#include "lwip/ip.h"
43
44
#ifdef __cplusplus
45
extern
"C"
{
46
#endif
47
48
#define UDP_HLEN 8
49
50
/* Fields are (of course) in network byte order. */
51
#ifdef PACK_STRUCT_USE_INCLUDES
52
# include "arch/bpstruct.h"
53
#endif
54
PACK_STRUCT_BEGIN
55
struct
udp_hdr {
56
PACK_STRUCT_FIELD
(
u16_t
src);
57
PACK_STRUCT_FIELD
(
u16_t
dest);
/* src/dest UDP ports */
58
PACK_STRUCT_FIELD
(
u16_t
len);
59
PACK_STRUCT_FIELD
(
u16_t
chksum);
60
}
PACK_STRUCT_STRUCT
;
61
PACK_STRUCT_END
62
#ifdef PACK_STRUCT_USE_INCLUDES
63
# include "arch/epstruct.h"
64
#endif
65
66
#define UDP_FLAGS_NOCHKSUM 0x01U
67
#define UDP_FLAGS_UDPLITE 0x02U
68
#define UDP_FLAGS_CONNECTED 0x04U
69
#define UDP_FLAGS_MULTICAST_LOOP 0x08U
70
71
struct
udp_pcb;
72
87
typedef
void (*udp_recv_fn)(
void
*arg,
struct
udp_pcb *pcb,
struct
pbuf
*p,
88
ip_addr_t
*addr,
u16_t
port);
89
90
91
struct
udp_pcb {
92
/* Common members of all PCB types */
93
IP_PCB
;
94
95
/* Protocol specific PCB members */
96
97
struct
udp_pcb *next;
98
99
u8_t
flags;
101
u16_t
local_port, remote_port;
102
103
#if LWIP_IGMP
104
105
ip_addr_t
multicast_ip;
106
#endif
/* LWIP_IGMP */
107
108
#if LWIP_UDPLITE
109
110
u16_t
chksum_len_rx, chksum_len_tx;
111
#endif
/* LWIP_UDPLITE */
112
114
udp_recv_fn recv;
116
void
*recv_arg;
117
};
118
/* udp_pcbs export for exernal reference (e.g. SNMP agent) */
119
extern
struct
udp_pcb *udp_pcbs;
120
121
/* The following functions is the application layer interface to the
122
UDP code. */
123
struct
udp_pcb * udp_new (
void
);
124
void
udp_remove (
struct
udp_pcb *pcb);
125
err_t
udp_bind (
struct
udp_pcb *pcb,
ip_addr_t
*ipaddr,
126
u16_t
port);
127
err_t
udp_connect (
struct
udp_pcb *pcb,
ip_addr_t
*ipaddr,
128
u16_t
port);
129
void
udp_disconnect (
struct
udp_pcb *pcb);
130
void
udp_recv (
struct
udp_pcb *pcb, udp_recv_fn recv,
131
void
*recv_arg);
132
err_t
udp_sendto_if (
struct
udp_pcb *pcb,
struct
pbuf
*p,
133
ip_addr_t
*dst_ip,
u16_t
dst_port,
134
struct
netif
*
netif
);
135
err_t
udp_sendto (
struct
udp_pcb *pcb,
struct
pbuf
*p,
136
ip_addr_t
*dst_ip,
u16_t
dst_port);
137
err_t
udp_send (
struct
udp_pcb *pcb,
struct
pbuf
*p);
138
139
#if LWIP_CHECKSUM_ON_COPY
140
err_t
udp_sendto_if_chksum(
struct
udp_pcb *pcb,
struct
pbuf
*p,
141
ip_addr_t
*dst_ip,
u16_t
dst_port,
142
struct
netif
*
netif
,
u8_t
have_chksum,
143
u16_t
chksum);
144
err_t
udp_sendto_chksum(
struct
udp_pcb *pcb,
struct
pbuf
*p,
145
ip_addr_t
*dst_ip,
u16_t
dst_port,
146
u8_t
have_chksum,
u16_t
chksum);
147
err_t
udp_send_chksum(
struct
udp_pcb *pcb,
struct
pbuf
*p,
148
u8_t
have_chksum,
u16_t
chksum);
149
#endif
/* LWIP_CHECKSUM_ON_COPY */
150
151
#define udp_flags(pcb) ((pcb)->flags)
152
#define udp_setflags(pcb, f) ((pcb)->flags = (f))
153
154
/* The following functions are the lower layer interface to UDP. */
155
void
udp_input (
struct
pbuf
*p,
struct
netif
*inp);
156
157
#define udp_init()
/* Compatibility define, not init needed. */
158
159
#if UDP_DEBUG
160
void
udp_debug_print(
struct
udp_hdr *udphdr);
161
#else
162
#define udp_debug_print(udphdr)
163
#endif
164
165
#ifdef __cplusplus
166
}
167
#endif
168
169
#endif
/* LWIP_UDP */
170
171
#endif
/* __LWIP_UDP_H__ */
lwip
src
include
lwip
udp.h
Generated on Fri Nov 15 2013 05:00:22 for uc-sdk by
1.8.4