From 690a43db7ea2982825c18e58c248814007d0a665 Mon Sep 17 00:00:00 2001 From: Yoshinobu Inoue Date: Thu, 9 Mar 2000 14:47:21 +0000 Subject: [PATCH] Update icmp node info query message bit order of query types, according to draft-ietf-ipngwg-icmp-name-lookups-04 to 05 change. This is necessary before 4.0, because, -This change is non backword compatible -Other KAME derived platforms applied 05 -Author of the draft said he never do backword imcompatible changes again. Approved by: jkh Obtained from: KAME project --- sbin/ping6/ping6.c | 6 +++++- sys/netinet6/icmp6.c | 8 +++++--- sys/netinet6/icmp6.h | 34 ++++++++++++++++++++-------------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/sbin/ping6/ping6.c b/sbin/ping6/ping6.c index 00f06e378a4..da6bd38dfdf 100644 --- a/sbin/ping6/ping6.c +++ b/sbin/ping6/ping6.c @@ -296,6 +296,10 @@ main(argc, argv) case 'a': naflags |= NI_NODEADDR_FLAG_ALL; break; + case 'c': + case 'C': + naflags |= NI_NODEADDR_FLAG_COMPAT; + break; case 'l': case 'L': naflags |= NI_NODEADDR_FLAG_LINKLOCAL; @@ -1553,7 +1557,7 @@ usage() "AE" #endif #endif - "] [-a [alsg]] [-b sockbufsiz] [-c count] [-I interface]\n\ + "] [-a [aclsg]] [-b sockbufsiz] [-c count] [-I interface]\n\ [-i wait] [-l preload] [-p pattern] [-s packetsize]\n\ [-h hoplimit] host [hosts...]\n"); exit(1); diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c index 02c221961ad..47202965bf4 100644 --- a/sys/netinet6/icmp6.c +++ b/sys/netinet6/icmp6.c @@ -915,8 +915,12 @@ ni6_addrs(ni6, m, ifpp) &ifa6->ia_addr.sin6_addr)) iffound = 1; - if (ifa6->ia6_flags & IN6_IFF_ANYCAST) + if (ifa6->ia6_flags & IN6_IFF_ANYCAST) { + if ((ni6->ni_flags & NI_NODEADDR_FLAG_ANYCAST) + != 0) + addrsofif++; continue; /* we need only unicast addresses */ + } if ((ni6->ni_flags & (NI_NODEADDR_FLAG_LINKLOCAL | NI_NODEADDR_FLAG_SITELOCAL | @@ -986,8 +990,6 @@ ni6_store_addrs(ni6, nni6, ifp0, resid) } else { /* unicast address */ if (ni6->ni_flags & NI_NODEADDR_FLAG_ANYCAST) continue; - else - docopy = 1; } /* What do we have to do about ::1? */ diff --git a/sys/netinet6/icmp6.h b/sys/netinet6/icmp6.h index feb664e619a..495297f8660 100644 --- a/sys/netinet6/icmp6.h +++ b/sys/netinet6/icmp6.h @@ -320,21 +320,27 @@ struct icmp6_nodeinfo { #if BYTE_ORDER == BIG_ENDIAN #define NI_SUPTYPE_FLAG_COMPRESS 0x1 #define NI_FQDN_FLAG_VALIDTTL 0x1 -#define NI_NODEADDR_FLAG_LINKLOCAL 0x1 -#define NI_NODEADDR_FLAG_SITELOCAL 0x2 -#define NI_NODEADDR_FLAG_GLOBAL 0x4 -#define NI_NODEADDR_FLAG_ALL 0x8 -#define NI_NODEADDR_FLAG_TRUNCATE 0x10 -#define NI_NODEADDR_FLAG_ANYCAST 0x20 /* just experimental. not in spec */ #elif BYTE_ORDER == LITTLE_ENDIAN -#define NI_SUPTYPE_FLAG_COMPRESS 0x0100 -#define NI_FQDN_FLAG_VALIDTTL 0x0100 -#define NI_NODEADDR_FLAG_LINKLOCAL 0x0100 -#define NI_NODEADDR_FLAG_SITELOCAL 0x0200 -#define NI_NODEADDR_FLAG_GLOBAL 0x0400 -#define NI_NODEADDR_FLAG_ALL 0x0800 -#define NI_NODEADDR_FLAG_TRUNCATE 0x1000 -#define NI_NODEADDR_FLAG_ANYCAST 0x2000 /* just experimental. not in spec */ +#define NI_SUPTYPE_FLAG_COMPRESS 0x0100 +#define NI_FQDN_FLAG_VALIDTTL 0x0100 +#endif + +#if BYTE_ORDER == BIG_ENDIAN +#define NI_NODEADDR_FLAG_TRUNCATE 0x1 +#define NI_NODEADDR_FLAG_ALL 0x2 +#define NI_NODEADDR_FLAG_COMPAT 0x4 +#define NI_NODEADDR_FLAG_LINKLOCAL 0x8 +#define NI_NODEADDR_FLAG_SITELOCAL 0x10 +#define NI_NODEADDR_FLAG_GLOBAL 0x20 +#define NI_NODEADDR_FLAG_ANYCAST 0x40 /* just experimental. not in spec */ +#elif BYTE_ORDER == LITTLE_ENDIAN +#define NI_NODEADDR_FLAG_TRUNCATE 0x0100 +#define NI_NODEADDR_FLAG_ALL 0x0200 +#define NI_NODEADDR_FLAG_COMPAT 0x0400 +#define NI_NODEADDR_FLAG_LINKLOCAL 0x0800 +#define NI_NODEADDR_FLAG_SITELOCAL 0x1000 +#define NI_NODEADDR_FLAG_GLOBAL 0x2000 +#define NI_NODEADDR_FLAG_ANYCAST 0x4000 /* just experimental. not in spec */ #endif struct ni_reply_fqdn {