ndp.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Freie Universität Berlin
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
20 #ifndef NET_GNRC_NDP_H
21 #define NET_GNRC_NDP_H
22 
23 #include <stdint.h>
24 
25 #include "kernel_types.h"
26 #include "net/gnrc/pkt.h"
27 #include "net/gnrc/netif.h"
28 #include "net/ipv6/addr.h"
29 #include "net/ipv6/hdr.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
38 #ifndef GNRC_NETTYPE_NDP
39 # if defined(MODULE_GNRC_IPV6) || DOXYGEN
40 # define GNRC_NETTYPE_NDP (GNRC_NETTYPE_IPV6) /* usual configuration */
41 # else
42 # define GNRC_NETTYPE_NDP (GNRC_NETTYPE_UNDEF) /* for testing */
43 # endif
44 #endif /* GNRC_NETTYPE_NDP */
45 
62  gnrc_pktsnip_t *options);
63 
91 gnrc_pktsnip_t *gnrc_ndp_nbr_adv_build(const ipv6_addr_t *tgt, uint8_t flags,
92  gnrc_pktsnip_t *options);
93 
106 
134 gnrc_pktsnip_t *gnrc_ndp_rtr_adv_build(uint8_t cur_hl, uint8_t flags,
135  uint16_t ltime, uint32_t reach_time,
136  uint32_t retrans_timer,
137  gnrc_pktsnip_t *options);
138 
150 gnrc_pktsnip_t *gnrc_ndp_opt_build(uint8_t type, size_t size,
151  gnrc_pktsnip_t *next);
152 
172 gnrc_pktsnip_t *gnrc_ndp_opt_sl2a_build(const uint8_t *l2addr,
173  uint8_t l2addr_len,
174  gnrc_pktsnip_t *next);
175 
195 gnrc_pktsnip_t *gnrc_ndp_opt_tl2a_build(const uint8_t *l2addr,
196  uint8_t l2addr_len,
197  gnrc_pktsnip_t *next);
198 
233  uint8_t prefix_len,
234  uint32_t valid_ltime, uint32_t pref_ltime,
235  uint8_t flags, gnrc_pktsnip_t *next);
236 
252 
272 gnrc_pktsnip_t *gnrc_ndp_opt_rdnss_build(uint32_t lifetime, ipv6_addr_t *addrs,
273  unsigned addrs_num,
274  gnrc_pktsnip_t *next);
275 
296 void gnrc_ndp_nbr_sol_send(const ipv6_addr_t *tgt, gnrc_netif_t *netif,
297  const ipv6_addr_t *src, const ipv6_addr_t *dst,
298  gnrc_pktsnip_t *ext_opts);
299 
342 void gnrc_ndp_nbr_adv_send(const ipv6_addr_t *tgt, gnrc_netif_t *netif,
343  const ipv6_addr_t *dst, bool supply_tl2a,
344  gnrc_pktsnip_t *ext_opts);
345 
355 void gnrc_ndp_rtr_sol_send(gnrc_netif_t *netif, const ipv6_addr_t *dst);
356 
382 void gnrc_ndp_rtr_adv_send(gnrc_netif_t *netif, const ipv6_addr_t *src,
383  const ipv6_addr_t *dst, bool fin,
384  gnrc_pktsnip_t *ext_opts);
385 
386 #ifdef __cplusplus
387 }
388 #endif
389 
390 #endif /* NET_GNRC_NDP_H */
391 
gnrc_ndp_nbr_adv_build
gnrc_pktsnip_t * gnrc_ndp_nbr_adv_build(const ipv6_addr_t *tgt, uint8_t flags, gnrc_pktsnip_t *options)
Builds a neighbor advertisement message for sending.
gnrc_ndp_opt_build
gnrc_pktsnip_t * gnrc_ndp_opt_build(uint8_t type, size_t size, gnrc_pktsnip_t *next)
Builds a generic NDP option.
gnrc_ndp_nbr_sol_send
void gnrc_ndp_nbr_sol_send(const ipv6_addr_t *tgt, gnrc_netif_t *netif, const ipv6_addr_t *src, const ipv6_addr_t *dst, gnrc_pktsnip_t *ext_opts)
Send pre-compiled neighbor solicitation depending on a given network interface.
hdr.h
IPv6 header type and helper function definitions.
ipv6_addr_t
Data type to represent an IPv6 address.
Definition: addr.h:74
gnrc_ndp_rtr_sol_build
gnrc_pktsnip_t * gnrc_ndp_rtr_sol_build(gnrc_pktsnip_t *options)
Builds a router solicitation message for sending.
addr.h
Definitions for IPv6 addresses.
gnrc_ndp_rtr_sol_send
void gnrc_ndp_rtr_sol_send(gnrc_netif_t *netif, const ipv6_addr_t *dst)
Send pre-compiled router solicitation depending on a given network interface.
gnrc_ndp_rtr_adv_build
gnrc_pktsnip_t * gnrc_ndp_rtr_adv_build(uint8_t cur_hl, uint8_t flags, uint16_t ltime, uint32_t reach_time, uint32_t retrans_timer, gnrc_pktsnip_t *options)
Builds a router advertisement message for sending.
gnrc_ndp_nbr_adv_send
void gnrc_ndp_nbr_adv_send(const ipv6_addr_t *tgt, gnrc_netif_t *netif, const ipv6_addr_t *dst, bool supply_tl2a, gnrc_pktsnip_t *ext_opts)
Send pre-compiled neighbor advertisement depending on a given network interface.
gnrc_netif_t
Representation of a network interface.
Definition: netif.h:115
pkt.h
General definitions for network packets and their helper functions.
gnrc_ndp_opt_pi_build
gnrc_pktsnip_t * gnrc_ndp_opt_pi_build(const ipv6_addr_t *prefix, uint8_t prefix_len, uint32_t valid_ltime, uint32_t pref_ltime, uint8_t flags, gnrc_pktsnip_t *next)
Builds the prefix information option.
gnrc_ndp_opt_mtu_build
gnrc_pktsnip_t * gnrc_ndp_opt_mtu_build(uint32_t mtu, gnrc_pktsnip_t *next)
Builds the MTU option.
netif.h
Definition for GNRC's network interfaces.
gnrc_ndp_opt_tl2a_build
gnrc_pktsnip_t * gnrc_ndp_opt_tl2a_build(const uint8_t *l2addr, uint8_t l2addr_len, gnrc_pktsnip_t *next)
Builds the target link-layer address option.
gnrc_ndp_opt_sl2a_build
gnrc_pktsnip_t * gnrc_ndp_opt_sl2a_build(const uint8_t *l2addr, uint8_t l2addr_len, gnrc_pktsnip_t *next)
Builds the source link-layer address option.
gnrc_ndp_rtr_adv_send
void gnrc_ndp_rtr_adv_send(gnrc_netif_t *netif, const ipv6_addr_t *src, const ipv6_addr_t *dst, bool fin, gnrc_pktsnip_t *ext_opts)
Send pre-compiled router advertisement depending on a given network interface.
gnrc_ndp_nbr_sol_build
gnrc_pktsnip_t * gnrc_ndp_nbr_sol_build(const ipv6_addr_t *tgt, gnrc_pktsnip_t *options)
Builds a neighbor solicitation message for sending.
gnrc_pktsnip
Type to represent parts (either headers or payload) of a packet, called snips.
Definition: pkt.h:108
kernel_types.h
Types used by the kernel.
gnrc_ndp_opt_rdnss_build
gnrc_pktsnip_t * gnrc_ndp_opt_rdnss_build(uint32_t lifetime, ipv6_addr_t *addrs, unsigned addrs_num, gnrc_pktsnip_t *next)
Builts the recursive DNS server option.