mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
ipv6 addrconf: Implemented enhanced DAD (RFC7527)
Implemented RFC7527 Enhanced DAD. IPv6 duplicate address detection can fail if there is some temporary loopback of Ethernet frames. RFC7527 solves this by including a random nonce in the NS messages used for DAD, and if an NS is received with the same nonce it is assumed to be a looped back DAD probe and is ignored. RFC7527 is enabled by default. Can be disabled by setting both of conf/{all,interface}/enhanced_dad to zero. Signed-off-by: Erik Nordmark <nordmark@arista.com> Signed-off-by: Bob Gilligan <gilligan@arista.com> Reviewed-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ce84c7c663
commit
adc176c547
8 changed files with 64 additions and 6 deletions
|
@ -31,6 +31,7 @@ enum {
|
|||
ND_OPT_PREFIX_INFO = 3, /* RFC2461 */
|
||||
ND_OPT_REDIRECT_HDR = 4, /* RFC2461 */
|
||||
ND_OPT_MTU = 5, /* RFC2461 */
|
||||
ND_OPT_NONCE = 14, /* RFC7527 */
|
||||
__ND_OPT_ARRAY_MAX,
|
||||
ND_OPT_ROUTE_INFO = 24, /* RFC4191 */
|
||||
ND_OPT_RDNSS = 25, /* RFC5006 */
|
||||
|
@ -121,6 +122,7 @@ struct ndisc_options {
|
|||
#define nd_opts_pi_end nd_opt_array[__ND_OPT_PREFIX_INFO_END]
|
||||
#define nd_opts_rh nd_opt_array[ND_OPT_REDIRECT_HDR]
|
||||
#define nd_opts_mtu nd_opt_array[ND_OPT_MTU]
|
||||
#define nd_opts_nonce nd_opt_array[ND_OPT_NONCE]
|
||||
#define nd_802154_opts_src_lladdr nd_802154_opt_array[ND_OPT_SOURCE_LL_ADDR]
|
||||
#define nd_802154_opts_tgt_lladdr nd_802154_opt_array[ND_OPT_TARGET_LL_ADDR]
|
||||
|
||||
|
@ -398,7 +400,8 @@ void ndisc_cleanup(void);
|
|||
int ndisc_rcv(struct sk_buff *skb);
|
||||
|
||||
void ndisc_send_ns(struct net_device *dev, const struct in6_addr *solicit,
|
||||
const struct in6_addr *daddr, const struct in6_addr *saddr);
|
||||
const struct in6_addr *daddr, const struct in6_addr *saddr,
|
||||
u64 nonce);
|
||||
|
||||
void ndisc_send_rs(struct net_device *dev,
|
||||
const struct in6_addr *saddr, const struct in6_addr *daddr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue