version 1.30, 2002/05/27 01:50:36 |
version 1.31, 2002/06/19 15:12:09 |
|
|
sin6->sin6_scope_id = |
sin6->sin6_scope_id = |
ntohs(*(u_int16_t *) |
ntohs(*(u_int16_t *) |
&sin6->sin6_addr.s6_addr[2]); |
&sin6->sin6_addr.s6_addr[2]); |
/* too little width */ |
|
if (!vflag) |
|
sin6->sin6_scope_id = 0; |
|
sin6->sin6_addr.s6_addr[2] = 0; |
sin6->sin6_addr.s6_addr[2] = 0; |
sin6->sin6_addr.s6_addr[3] = 0; |
sin6->sin6_addr.s6_addr[3] = 0; |
} |
} |
|
|
if (aflag) { |
if (aflag) { |
u_long multiaddr; |
u_long multiaddr; |
struct in6_multi inm; |
struct in6_multi inm; |
char hbuf[INET6_ADDRSTRLEN]; |
struct sockaddr_in6 m6; |
|
|
multiaddr = (u_long)ifaddr.in6.ia6_multiaddrs.lh_first; |
multiaddr = (u_long)ifaddr.in6.ia6_multiaddrs.lh_first; |
while (multiaddr != 0) { |
while (multiaddr != 0) { |
kread(multiaddr, (char *)&inm, |
kread(multiaddr, (char *)&inm, |
sizeof inm); |
sizeof inm); |
inet_ntop(AF_INET6, &inm.in6m_addr, |
memset(&m6, 0, sizeof(m6)); |
hbuf, sizeof(hbuf)); |
m6.sin6_len = sizeof(struct sockaddr_in6); |
|
m6.sin6_family = AF_INET6; |
|
m6.sin6_addr = inm.in6m_addr; |
|
#ifdef KAME_SCOPEID |
|
if (m6.sin6_addr.s6_addr[1] == 0x02) { |
|
m6.sin6_scope_id = |
|
ntohs(*(u_int16_t *) |
|
&m6.sin6_addr.s6_addr[2]); |
|
m6.sin6_addr.s6_addr[2] = 0; |
|
m6.sin6_addr.s6_addr[3] = 0; |
|
} |
|
#endif |
|
cp = routename6(&m6); |
if (vflag) |
if (vflag) |
n = strlen(hbuf) < 17 ? 17 : strlen(hbuf); |
n = strlen(cp) < 17 ? 17 : strlen(cp); |
else |
else |
n = 17; |
n = 17; |
printf("\n%25s %-*.*s ", "", |
printf("\n%25s %-*.*s ", "", |
n, n, hbuf); |
n, n, cp); |
multiaddr = (u_long)inm.in6m_entry.le_next; |
multiaddr = (u_long)inm.in6m_entry.le_next; |
} |
} |
} |
} |