Deleted Added
full compact
ndp.c (238273) ndp.c (243903)
1/* $FreeBSD: head/usr.sbin/ndp/ndp.c 238273 2012-07-09 06:21:46Z hrs $ */
1/* $FreeBSD: head/usr.sbin/ndp/ndp.c 243903 2012-12-05 19:45:24Z hrs $ */
2/* $KAME: ndp.c,v 1.104 2003/06/27 07:48:39 itojun Exp $ */
3
4/*
5 * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions

--- 389 unchanged lines hidden (view full) ---

399 hints.ai_family = AF_INET6;
400 gai_error = getaddrinfo(host, NULL, &hints, &res);
401 if (gai_error) {
402 fprintf(stderr, "ndp: %s: %s\n", host,
403 gai_strerror(gai_error));
404 return 1;
405 }
406 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
2/* $KAME: ndp.c,v 1.104 2003/06/27 07:48:39 itojun Exp $ */
3
4/*
5 * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions

--- 389 unchanged lines hidden (view full) ---

399 hints.ai_family = AF_INET6;
400 gai_error = getaddrinfo(host, NULL, &hints, &res);
401 if (gai_error) {
402 fprintf(stderr, "ndp: %s: %s\n", host,
403 gai_strerror(gai_error));
404 return 1;
405 }
406 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
407#ifdef __KAME__
408 if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr)) {
409 *(u_int16_t *)&sin->sin6_addr.s6_addr[2] =
410 htons(((struct sockaddr_in6 *)res->ai_addr)->sin6_scope_id);
411 }
412#endif
407 sin->sin6_scope_id =
408 ((struct sockaddr_in6 *)res->ai_addr)->sin6_scope_id;
413 ea = (u_char *)LLADDR(&sdl_m);
414 if (ndp_ether_aton(eaddr, ea) == 0)
415 sdl_m.sdl_alen = 6;
416 flags = expire_time = 0;
417 while (argc-- > 0) {
418 if (strncmp(argv[0], "temp", 4) == 0) {
419 struct timeval time;
420

--- 52 unchanged lines hidden (view full) ---

473 hints.ai_family = AF_INET6;
474 gai_error = getaddrinfo(host, NULL, &hints, &res);
475 if (gai_error) {
476 fprintf(stderr, "ndp: %s: %s\n", host,
477 gai_strerror(gai_error));
478 return;
479 }
480 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
409 ea = (u_char *)LLADDR(&sdl_m);
410 if (ndp_ether_aton(eaddr, ea) == 0)
411 sdl_m.sdl_alen = 6;
412 flags = expire_time = 0;
413 while (argc-- > 0) {
414 if (strncmp(argv[0], "temp", 4) == 0) {
415 struct timeval time;
416

--- 52 unchanged lines hidden (view full) ---

469 hints.ai_family = AF_INET6;
470 gai_error = getaddrinfo(host, NULL, &hints, &res);
471 if (gai_error) {
472 fprintf(stderr, "ndp: %s: %s\n", host,
473 gai_strerror(gai_error));
474 return;
475 }
476 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
481#ifdef __KAME__
482 if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr)) {
483 *(u_int16_t *)&sin->sin6_addr.s6_addr[2] =
484 htons(((struct sockaddr_in6 *)res->ai_addr)->sin6_scope_id);
485 }
486#endif
487 dump(&sin->sin6_addr, 0);
488 if (found_entry == 0) {
489 getnameinfo((struct sockaddr *)sin, sin->sin6_len, host_buf,
490 sizeof(host_buf), NULL ,0,
491 (nflag ? NI_NUMERICHOST : 0));
492 printf("%s (%s) -- no entry\n", host, host_buf);
493 exit(1);
494 }

--- 20 unchanged lines hidden (view full) ---

515 hints.ai_family = AF_INET6;
516 gai_error = getaddrinfo(host, NULL, &hints, &res);
517 if (gai_error) {
518 fprintf(stderr, "ndp: %s: %s\n", host,
519 gai_strerror(gai_error));
520 return 1;
521 }
522 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
477 dump(&sin->sin6_addr, 0);
478 if (found_entry == 0) {
479 getnameinfo((struct sockaddr *)sin, sin->sin6_len, host_buf,
480 sizeof(host_buf), NULL ,0,
481 (nflag ? NI_NUMERICHOST : 0));
482 printf("%s (%s) -- no entry\n", host, host_buf);
483 exit(1);
484 }

--- 20 unchanged lines hidden (view full) ---

505 hints.ai_family = AF_INET6;
506 gai_error = getaddrinfo(host, NULL, &hints, &res);
507 if (gai_error) {
508 fprintf(stderr, "ndp: %s: %s\n", host,
509 gai_strerror(gai_error));
510 return 1;
511 }
512 sin->sin6_addr = ((struct sockaddr_in6 *)res->ai_addr)->sin6_addr;
523#ifdef __KAME__
524 if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr)) {
525 *(u_int16_t *)&sin->sin6_addr.s6_addr[2] =
526 htons(((struct sockaddr_in6 *)res->ai_addr)->sin6_scope_id);
527 }
528#endif
513 sin->sin6_scope_id =
514 ((struct sockaddr_in6 *)res->ai_addr)->sin6_scope_id;
529 if (rtmsg(RTM_GET) < 0) {
530 errx(1, "RTM_GET(%s) failed", host);
531 /* NOTREACHED */
532 }
533 sin = (struct sockaddr_in6 *)(rtm + 1);
534 sdl = (struct sockaddr_dl *)(ROUNDUP(sin->sin6_len) + (char *)sin);
535 if (IN6_ARE_ADDR_EQUAL(&sin->sin6_addr, &sin_m.sin6_addr)) {
536 if (sdl->sdl_family == AF_LINK &&

--- 14 unchanged lines hidden (view full) ---

551 }
552 /*
553 * need to reinit the field because it has rt_key
554 * but we want the actual address
555 */
556 NEXTADDR(RTA_DST, sin_m);
557 rtm->rtm_flags |= RTF_LLDATA;
558 if (rtmsg(RTM_DELETE) == 0) {
515 if (rtmsg(RTM_GET) < 0) {
516 errx(1, "RTM_GET(%s) failed", host);
517 /* NOTREACHED */
518 }
519 sin = (struct sockaddr_in6 *)(rtm + 1);
520 sdl = (struct sockaddr_dl *)(ROUNDUP(sin->sin6_len) + (char *)sin);
521 if (IN6_ARE_ADDR_EQUAL(&sin->sin6_addr, &sin_m.sin6_addr)) {
522 if (sdl->sdl_family == AF_LINK &&

--- 14 unchanged lines hidden (view full) ---

537 }
538 /*
539 * need to reinit the field because it has rt_key
540 * but we want the actual address
541 */
542 NEXTADDR(RTA_DST, sin_m);
543 rtm->rtm_flags |= RTF_LLDATA;
544 if (rtmsg(RTM_DELETE) == 0) {
559 struct sockaddr_in6 s6 = *sin; /* XXX: for safety */
560
561#ifdef __KAME__
562 if (IN6_IS_ADDR_LINKLOCAL(&s6.sin6_addr)) {
563 s6.sin6_scope_id = ntohs(*(u_int16_t *)&s6.sin6_addr.s6_addr[2]);
564 *(u_int16_t *)&s6.sin6_addr.s6_addr[2] = 0;
565 }
566#endif
567 getnameinfo((struct sockaddr *)&s6,
568 s6.sin6_len, host_buf,
545 getnameinfo((struct sockaddr *)sin,
546 sin->sin6_len, host_buf,
569 sizeof(host_buf), NULL, 0,
570 (nflag ? NI_NUMERICHOST : 0));
571 printf("%s (%s) deleted\n", host, host_buf);
572 }
573
574 return 0;
575}
576

--- 84 unchanged lines hidden (view full) ---

661 found_entry = 1;
662 } else if (IN6_IS_ADDR_MULTICAST(&sin->sin6_addr))
663 continue;
664 if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr) ||
665 IN6_IS_ADDR_MC_LINKLOCAL(&sin->sin6_addr)) {
666 /* XXX: should scope id be filled in the kernel? */
667 if (sin->sin6_scope_id == 0)
668 sin->sin6_scope_id = sdl->sdl_index;
547 sizeof(host_buf), NULL, 0,
548 (nflag ? NI_NUMERICHOST : 0));
549 printf("%s (%s) deleted\n", host, host_buf);
550 }
551
552 return 0;
553}
554

--- 84 unchanged lines hidden (view full) ---

639 found_entry = 1;
640 } else if (IN6_IS_ADDR_MULTICAST(&sin->sin6_addr))
641 continue;
642 if (IN6_IS_ADDR_LINKLOCAL(&sin->sin6_addr) ||
643 IN6_IS_ADDR_MC_LINKLOCAL(&sin->sin6_addr)) {
644 /* XXX: should scope id be filled in the kernel? */
645 if (sin->sin6_scope_id == 0)
646 sin->sin6_scope_id = sdl->sdl_index;
669#ifdef __KAME__
670 /* KAME specific hack; removed the embedded id */
671 *(u_int16_t *)&sin->sin6_addr.s6_addr[2] = 0;
672#endif
673 }
674 getnameinfo((struct sockaddr *)sin, sin->sin6_len, host_buf,
675 sizeof(host_buf), NULL, 0, (nflag ? NI_NUMERICHOST : 0));
676 if (cflag) {
677#ifdef RTF_WASCLONED
678 if (rtm->rtm_flags & RTF_WASCLONED)
679 delete(host_buf);
680#elif defined(RTF_CLONED)

--- 645 unchanged lines hidden (view full) ---

1326#ifdef NDPRF_ONLINK
1327 p6 = PR.prefix;
1328#else
1329 memset(&p6, 0, sizeof(p6));
1330 p6.sin6_family = AF_INET6;
1331 p6.sin6_len = sizeof(p6);
1332 p6.sin6_addr = PR.prefix;
1333#endif
647 }
648 getnameinfo((struct sockaddr *)sin, sin->sin6_len, host_buf,
649 sizeof(host_buf), NULL, 0, (nflag ? NI_NUMERICHOST : 0));
650 if (cflag) {
651#ifdef RTF_WASCLONED
652 if (rtm->rtm_flags & RTF_WASCLONED)
653 delete(host_buf);
654#elif defined(RTF_CLONED)

--- 645 unchanged lines hidden (view full) ---

1300#ifdef NDPRF_ONLINK
1301 p6 = PR.prefix;
1302#else
1303 memset(&p6, 0, sizeof(p6));
1304 p6.sin6_family = AF_INET6;
1305 p6.sin6_len = sizeof(p6);
1306 p6.sin6_addr = PR.prefix;
1307#endif
1334
1335 /*
1336 * copy link index to sin6_scope_id field.
1337 * XXX: KAME specific.
1338 */
1339 if (IN6_IS_ADDR_LINKLOCAL(&p6.sin6_addr)) {
1340 u_int16_t linkid;
1341
1342 memcpy(&linkid, &p6.sin6_addr.s6_addr[2],
1343 sizeof(linkid));
1344 linkid = ntohs(linkid);
1345 p6.sin6_scope_id = linkid;
1346 p6.sin6_addr.s6_addr[2] = 0;
1347 p6.sin6_addr.s6_addr[3] = 0;
1348 }
1349
1350 niflags = NI_NUMERICHOST;
1351 if (getnameinfo((struct sockaddr *)&p6,
1352 sizeof(p6), namebuf, sizeof(namebuf),
1353 NULL, 0, niflags)) {
1354 warnx("getnameinfo failed");
1355 continue;
1356 }
1357 printf("%s/%d if=%s\n", namebuf, PR.prefixlen,

--- 275 unchanged lines hidden ---
1308 niflags = NI_NUMERICHOST;
1309 if (getnameinfo((struct sockaddr *)&p6,
1310 sizeof(p6), namebuf, sizeof(namebuf),
1311 NULL, 0, niflags)) {
1312 warnx("getnameinfo failed");
1313 continue;
1314 }
1315 printf("%s/%d if=%s\n", namebuf, PR.prefixlen,

--- 275 unchanged lines hidden ---