Contiki-Inga 3.x
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
core
net
ip
uip_arch.h
Go to the documentation of this file.
1
/**
2
* \addtogroup uip
3
* {@
4
*/
5
6
/**
7
* \defgroup uiparch Architecture specific uIP functions
8
* @{
9
*
10
* The functions in the architecture specific module implement the IP
11
* check sum and 32-bit additions.
12
*
13
* The IP checksum calculation is the most computationally expensive
14
* operation in the TCP/IP stack and it therefore pays off to
15
* implement this in efficient assembler. The purpose of the uip-arch
16
* module is to let the checksum functions to be implemented in
17
* architecture specific assembler.
18
*
19
*/
20
21
/**
22
* \file
23
* Declarations of architecture specific functions.
24
* \author Adam Dunkels <adam@dunkels.com>
25
*/
26
27
/*
28
* Copyright (c) 2001, Adam Dunkels.
29
* All rights reserved.
30
*
31
* Redistribution and use in source and binary forms, with or without
32
* modification, are permitted provided that the following conditions
33
* are met:
34
* 1. Redistributions of source code must retain the above copyright
35
* notice, this list of conditions and the following disclaimer.
36
* 2. Redistributions in binary form must reproduce the above copyright
37
* notice, this list of conditions and the following disclaimer in the
38
* documentation and/or other materials provided with the distribution.
39
* 3. The name of the author may not be used to endorse or promote
40
* products derived from this software without specific prior
41
* written permission.
42
*
43
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
44
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
45
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
47
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
49
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
50
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
51
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
52
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
53
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54
*
55
* This file is part of the uIP TCP/IP stack.
56
*
57
*
58
*/
59
60
#ifndef UIP_ARCH_H_
61
#define UIP_ARCH_H_
62
63
#include "
net/ip/uip.h
"
64
65
/**
66
* Carry out a 32-bit addition.
67
*
68
* Because not all architectures for which uIP is intended has native
69
* 32-bit arithmetic, uIP uses an external C function for doing the
70
* required 32-bit additions in the TCP protocol processing. This
71
* function should add the two arguments and place the result in the
72
* global variable uip_acc32.
73
*
74
* \note The 32-bit integer pointed to by the op32 parameter and the
75
* result in the uip_acc32 variable are in network byte order (big
76
* endian).
77
*
78
* \param op32 A pointer to a 4-byte array representing a 32-bit
79
* integer in network byte order (big endian).
80
*
81
* \param op16 A 16-bit integer in host byte order.
82
*/
83
void
uip_add32
(uint8_t *op32, uint16_t op16);
84
85
/**
86
* Calculate the Internet checksum over a buffer.
87
*
88
* The Internet checksum is the one's complement of the one's
89
* complement sum of all 16-bit words in the buffer.
90
*
91
* See RFC1071.
92
*
93
* \note This function is not called in the current version of uIP,
94
* but future versions might make use of it.
95
*
96
* \param buf A pointer to the buffer over which the checksum is to be
97
* computed.
98
*
99
* \param len The length of the buffer over which the checksum is to
100
* be computed.
101
*
102
* \return The Internet checksum of the buffer.
103
*/
104
uint16_t
uip_chksum
(uint16_t *buf, uint16_t len);
105
106
/**
107
* Calculate the IP header checksum of the packet header in uip_buf.
108
*
109
* The IP header checksum is the Internet checksum of the 20 bytes of
110
* the IP header.
111
*
112
* \return The IP header checksum of the IP header in the uip_buf
113
* buffer.
114
*/
115
uint16_t
uip_ipchksum
(
void
);
116
117
/**
118
* Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
119
*
120
* The TCP checksum is the Internet checksum of data contents of the
121
* TCP segment, and a pseudo-header as defined in RFC793.
122
*
123
* \note The uip_appdata pointer that points to the packet data may
124
* point anywhere in memory, so it is not possible to simply calculate
125
* the Internet checksum of the contents of the uip_buf buffer.
126
*
127
* \return The TCP checksum of the TCP segment in uip_buf and pointed
128
* to by uip_appdata.
129
*/
130
uint16_t
uip_tcpchksum
(
void
);
131
132
uint16_t
uip_udpchksum
(
void
);
133
134
/** @} */
135
/** @} */
136
137
#endif
/* UIP_ARCH_H_ */
Generated on Thu Apr 24 2014 16:26:12 for Contiki-Inga 3.x by
1.8.3.1