EVE 1.0
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
uip_arp.h
Go to the documentation of this file.
1
/**
2
* \addtogroup uip
3
* @{
4
*/
5
6
/**
7
* \addtogroup uiparp
8
* @{
9
*/
10
11
/**
12
* \file
13
* Macros and definitions for the ARP module.
14
* \author Adam Dunkels <adam@dunkels.com>
15
*/
16
17
18
/*
19
* Copyright (c) 2001-2003, Adam Dunkels.
20
* All rights reserved.
21
*
22
* Redistribution and use in source and binary forms, with or without
23
* modification, are permitted provided that the following conditions
24
* are met:
25
* 1. Redistributions of source code must retain the above copyright
26
* notice, this list of conditions and the following disclaimer.
27
* 2. Redistributions in binary form must reproduce the above copyright
28
* notice, this list of conditions and the following disclaimer in the
29
* documentation and/or other materials provided with the distribution.
30
* 3. The name of the author may not be used to endorse or promote
31
* products derived from this software without specific prior
32
* written permission.
33
*
34
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
35
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
36
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
38
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
40
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
41
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
42
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
43
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
44
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45
*
46
* This file is part of the uIP TCP/IP stack.
47
*
48
*
49
*/
50
51
#ifndef UIP_ARP_H_
52
#define UIP_ARP_H_
53
54
#include "
net/uip.h
"
55
56
57
#define UIP_ARP_NONE 0
58
#define UIP_ARP_BROADCAST 1
59
#define UIP_ARP_MCAST 2
60
#define UIP_ARP_BASE 3
61
62
63
/**
64
* The Ethernet header.
65
*/
66
struct
uip_eth_hdr
{
67
struct
uip_eth_addr
dest;
68
struct
uip_eth_addr
src;
69
uint16_t type;
70
};
71
72
#define UIP_ETHTYPE_ARP 0x0806
73
#define UIP_ETHTYPE_IP 0x0800
74
#define UIP_ETHTYPE_IPV6 0x86dd
75
76
77
/* The uip_arp_init() function must be called before any of the other
78
ARP functions. */
79
void
uip_arp_init
(
void
);
80
81
/* The uip_arp_ipin() function should be called whenever an IP packet
82
arrives from the Ethernet. This function refreshes the ARP table or
83
inserts a new mapping if none exists. The function assumes that an
84
IP packet with an Ethernet header is present in the uip_buf buffer
85
and that the length of the packet is in the uip_len variable. */
86
/*void uip_arp_ipin(void);*/
87
#define uip_arp_ipin()
88
89
/* The uip_arp_arpin() should be called when an ARP packet is received
90
by the Ethernet driver. This function also assumes that the
91
Ethernet frame is present in the uip_buf buffer. When the
92
uip_arp_arpin() function returns, the contents of the uip_buf
93
buffer should be sent out on the Ethernet if the uip_len variable
94
is > 0. */
95
void
uip_arp_arpin
(
void
);
96
97
/* The uip_arp_out() function should be called when an IP packet
98
should be sent out on the Ethernet. This function creates an
99
Ethernet header before the IP header in the uip_buf buffer. The
100
Ethernet header will have the correct Ethernet MAC destination
101
address filled in if an ARP table entry for the destination IP
102
address (or the IP address of the default router) is present. If no
103
such table entry is found, the IP packet is overwritten with an ARP
104
request and we rely on TCP to retransmit the packet that was
105
overwritten. In any case, the uip_len variable holds the length of
106
the Ethernet frame that should be transmitted. */
107
void
uip_arp_out
(
void
);
108
109
/* The uip_arp_timer() function should be called every ten seconds. It
110
is responsible for flushing old entries in the ARP table. */
111
void
uip_arp_timer
(
void
);
112
113
uint8_t uip_arp_resolve(
const
uip_ipaddr_t
*ripaddr);
114
115
void
uip_arp_request(
const
uip_ipaddr_t
*ripaddr);
116
117
void
uip_arp_fill_mac(uint8_t arpid);
118
119
void
uip_arp_static(
uip_ipaddr_t
*ipaddr,
struct
uip_eth_addr
*ethaddr);
120
/** @} */
121
122
/**
123
* \addtogroup uipconffunc
124
* @{
125
*/
126
127
128
/**
129
* Specifiy the Ethernet MAC address.
130
*
131
* The ARP code needs to know the MAC address of the Ethernet card in
132
* order to be able to respond to ARP queries and to generate working
133
* Ethernet headers.
134
*
135
* \note This macro only specifies the Ethernet MAC address to the ARP
136
* code. It cannot be used to change the MAC address of the Ethernet
137
* card.
138
*
139
* \param eaddr A pointer to a struct uip_eth_addr containing the
140
* Ethernet MAC address of the Ethernet card.
141
*
142
* \hideinitializer
143
*/
144
#define uip_setethaddr(eaddr) do {uip_lladdr.addr[0] = eaddr.addr[0]; \
145
uip_lladdr.addr[1] = eaddr.addr[1];\
146
uip_lladdr.addr[2] = eaddr.addr[2];\
147
uip_lladdr.addr[3] = eaddr.addr[3];\
148
uip_lladdr.addr[4] = eaddr.addr[4];\
149
uip_lladdr.addr[5] = eaddr.addr[5];} while(0)
150
151
/** @} */
152
153
154
#endif
/* UIP_ARP_H_ */
155
/** @} */
uip_arp_arpin
void uip_arp_arpin(void)
Definition:
uip_arp.c:287
uip_eth_addr
802.3 address
Definition:
uip.h:134
uip_ip4addr_t
Definition:
uip.h:100
uip_arp_out
void uip_arp_out(void)
Definition:
uip_arp.c:367
uip_arp_timer
void uip_arp_timer(void)
Definition:
uip_arp.c:150
uip.h
uip_eth_hdr
Definition:
uip_arp.h:66
uip_arp_init
void uip_arp_init(void)
Definition:
uip_arp.c:132
Contiki
core
net
uip_arp.h
Generated on Thu Mar 30 2017 10:16:55 for EVE 1.0 by
1.8.11