2
* Copyright (c) 2012 Jiri Svoboda
3
* Copyright (c) 2013 Antonin Steinhauser
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
10
* - Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* - Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
* - The name of the author may not be used to endorse or promote products
16
* derived from this software without specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44
#include <sys/types.h>
46
#include <net/ether.h>
49
#include "icmpv6_std.h"
51
typedef enum icmpv6_type ndp_opcode_t;
53
/** NDP packet (for 48-bit MAC addresses)
55
* Internal representation
60
/** Sender hardware address */
61
mac48_addr_t sender_hw_addr;
62
/** Sender protocol address */
63
in6_addr_t sender_proto_addr;
64
/** Target hardware address */
65
mac48_addr_t target_hw_addr;
66
/** Target protocol address */
67
in6_addr_t target_proto_addr;
68
/** Solicited IPv6 address */
69
in6_addr_t solicited_ip;
72
/** Address translation table element */
74
/** Link to translation table */
79
mac48_addr_t mac_addr;
82
extern int ndp_received(inet_dgram_t *);
83
extern int ndp_translate(in6_addr_t *, in6_addr_t *, mac48_addr_t *, inet_link_t *);