Module Name: src Committed By: riz Date: Tue Jan 26 01:21:33 UTC 2016
Modified Files: src/usr.sbin/ndp [netbsd-7]: ndp.c Log Message: Pull up following revision(s) (requested by ozaki-r in ticket #1063): usr.sbin/ndp/ndp.c: revision 1.46 Don't forget to set sin_scope. From Ryota Ozaki To generate a diff of this commit: cvs rdiff -u -r1.43 -r1.43.2.1 src/usr.sbin/ndp/ndp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/ndp/ndp.c diff -u src/usr.sbin/ndp/ndp.c:1.43 src/usr.sbin/ndp/ndp.c:1.43.2.1 --- src/usr.sbin/ndp/ndp.c:1.43 Thu Jun 5 16:06:49 2014 +++ src/usr.sbin/ndp/ndp.c Tue Jan 26 01:21:33 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ndp.c,v 1.43 2014/06/05 16:06:49 roy Exp $ */ +/* $NetBSD: ndp.c,v 1.43.2.1 2016/01/26 01:21:33 riz Exp $ */ /* $KAME: ndp.c,v 1.121 2005/07/13 11:30:13 keiichi Exp $ */ /* @@ -298,6 +298,15 @@ main(int argc, char **argv) } static void +makeaddr(struct sockaddr_in6 *mysin, const void *resp) +{ + const struct sockaddr_in6 *res = resp; + mysin->sin6_addr = res->sin6_addr; + mysin->sin6_scope_id = res->sin6_scope_id; + inet6_putscopeid(mysin, INET6_IS_ADDR_LINKLOCAL); +} + +static void getsocket(void) { if (my_s < 0) { @@ -356,8 +365,7 @@ set(int argc, char **argv) warnx("%s: %s\n", host, gai_strerror(gai_error)); return 1; } - mysin->sin6_addr = ((struct sockaddr_in6 *)(void *)res->ai_addr)->sin6_addr; - inet6_putscopeid(mysin, INET6_IS_ADDR_LINKLOCAL); + makeaddr(mysin, res->ai_addr); ea = (u_char *)LLADDR(&sdl_m); if (ndp_ether_aton(eaddr, ea) == 0) sdl_m.sdl_alen = 6; @@ -423,8 +431,7 @@ get(char *host) warnx("%s: %s\n", host, gai_strerror(gai_error)); return; } - mysin->sin6_addr = ((struct sockaddr_in6 *)(void *)res->ai_addr)->sin6_addr; - inet6_putscopeid(mysin, INET6_IS_ADDR_LINKLOCAL); + makeaddr(mysin, res->ai_addr); dump(&mysin->sin6_addr, 0); if (found_entry == 0) { (void)getnameinfo((struct sockaddr *)(void *)mysin, @@ -457,8 +464,7 @@ delete(char *host) warnx("%s: %s\n", host, gai_strerror(gai_error)); return 1; } - mysin->sin6_addr = ((struct sockaddr_in6 *)(void *)res->ai_addr)->sin6_addr; - inet6_putscopeid(mysin, INET6_IS_ADDR_LINKLOCAL); + makeaddr(mysin, res->ai_addr); if (rtmsg(RTM_GET) < 0) errx(1, "RTM_GET(%s) failed", host); mysin = (struct sockaddr_in6 *)(void *)(rtm + 1);