Loading...
Searching...
No Matches
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
9#pragma once
10
22
23#include <stdint.h>
24
25#include "compiler_hints.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
32extern "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
92 gnrc_pktsnip_t *options);
93
106
134gnrc_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
150gnrc_pktsnip_t *gnrc_ndp_opt_build(uint8_t type, size_t size,
151 gnrc_pktsnip_t *next);
152
172ACCESS(read_only, 1, 2)
174 uint8_t l2addr_len,
175 gnrc_pktsnip_t *next);
176
196ACCESS(read_only, 1, 2)
198 uint8_t l2addr_len,
199 gnrc_pktsnip_t *next);
200
235 uint8_t prefix_len,
236 uint32_t valid_ltime, uint32_t pref_ltime,
237 uint8_t flags, gnrc_pktsnip_t *next);
264 uint8_t prefix_len,
265 uint32_t route_ltime,
266 uint8_t flags, gnrc_pktsnip_t *next);
267
283
303ACCESS(read_only, 2, 3)
305 const ipv6_addr_t *addrs,
306 unsigned addrs_num,
307 gnrc_pktsnip_t *next);
308
330 const ipv6_addr_t *src, const ipv6_addr_t *dst,
331 gnrc_pktsnip_t *ext_opts);
332
376 const ipv6_addr_t *dst, bool supply_tl2a,
377 gnrc_pktsnip_t *ext_opts);
378
389
416 const ipv6_addr_t *dst, bool fin,
417 gnrc_pktsnip_t *ext_opts);
418
419#ifdef __cplusplus
420}
421#endif
422
Common macros and compiler attributes/pragmas configuration.
#define ACCESS(mode, ptr_idx, size_idx)
Emit an attribute (if supported by the compiler) that declares how a function will access its paramet...
Definition for GNRC's network interfaces.
gnrc_pktsnip_t * gnrc_ndp_opt_mtu_build(uint32_t mtu, gnrc_pktsnip_t *next)
Builds the MTU option.
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_pktsnip_t * gnrc_ndp_rtr_sol_build(gnrc_pktsnip_t *options)
Builds a router solicitation message for sending.
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.
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_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.
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_pktsnip_t * gnrc_ndp_opt_build(uint8_t type, size_t size, gnrc_pktsnip_t *next)
Builds a generic NDP option.
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_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.
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.
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_pktsnip_t * gnrc_ndp_opt_rdnss_build(uint32_t lifetime, const ipv6_addr_t *addrs, unsigned addrs_num, gnrc_pktsnip_t *next)
Builts the recursive DNS server option.
gnrc_pktsnip_t * gnrc_ndp_opt_ri_build(const ipv6_addr_t *prefix, uint8_t prefix_len, uint32_t route_ltime, uint8_t flags, gnrc_pktsnip_t *next)
Builds the route information option.
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.
struct gnrc_pktsnip gnrc_pktsnip_t
Type to represent parts (either headers or payload) of a packet, called snips.
Definitions for IPv6 addresses.
General definitions for network packets and their helper functions.
IPv6 header type and helper function definitions.
Representation of a network interface.
Definition netif.h:140
Data type to represent an IPv6 address.
Definition addr.h:67