ipv6: Introduce ipv6_addr_is_solict_mult() to check Solicited Node Multicast Addresses.
Subsystems (3)
PATCH 2/5 ipv6: Introduce ipv6_addr_is_solict_mult() to check Solicited Node Multicast Addresses.
Signed-off-by YOSHIFUJI Hideaki <[email protected]>
--- include/net/addrconf.h | 8 ++++++++ net/ipv6/ndisc.c | 6 +----- 2 files changed, 9 insertions(+), 5 deletions(-)
include/net/addrconf.h +8 -0
@@ -305,6 +305,14 @@ static inline bool ipv6_addr_is_isatap(const struct in6_addr *addr)return (addr->s6_addr32[2 ] |htonl (0x02000000 )) ==htonl (0x02005EFE ); } +static inline bool ipv6_addr_is_solict_mult (const struct in6_addr *addr) +{ +return (addr->s6_addr32[0 ] ==htonl (0xff020000 ) && + addr->s6_addr32[1 ] ==htonl (0x00000000 ) && + addr->s6_addr32[2 ] ==htonl (0x00000001 ) && + addr->s6_addr[12 ] ==0xff ); +} +#ifdef CONFIG_PROC_FS extern int if6_proc_init (void );extern void if6_proc_exit (void );
net/ipv6/ndisc.c +1 -5
@@ -685,11 +685,7 @@ static void ndisc_recv_ns(struct sk_buff *skb)* RFC2461 7.1.1: * DAD has to be destined for solicited node multicast address. */ -if (dad && - !(daddr->s6_addr32[0 ] ==htonl (0xff020000 ) && - daddr->s6_addr32[1 ] ==htonl (0x00000000 ) && - daddr->s6_addr32[2 ] ==htonl (0x00000001 ) && - daddr->s6_addr [12 ] ==0xff )) { +if (dad && !ipv6_addr_is_solict_mult (daddr)) {ND_PRINTK (2 , warn,"NS: bad DAD packet (wrong destination)\n" );return ; }
Signature · 1 line
1.7.9.5