| 1401 | } |
| 1402 | |
| 1403 | static void |
| 1404 | getdefif() |
| 1405 | { |
| 1406 | struct in6_ndifreq ndifreq; |
| 1407 | char ifname[IFNAMSIZ+8]; |
| 1408 | int sock; |
| 1409 | |
| 1410 | if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) |
| 1411 | err(1, "socket"); |
| 1412 | |
| 1413 | memset(&ndifreq, 0, sizeof(ndifreq)); |
| 1414 | strlcpy(ndifreq.ifname, "lo0", sizeof(ndifreq.ifname)); /* dummy */ |
| 1415 | |
| 1416 | if (ioctl(sock, SIOCGDEFIFACE_IN6, (caddr_t)&ndifreq) < 0) |
| 1417 | err(1, "ioctl(SIOCGDEFIFACE_IN6)"); |
| 1418 | |
| 1419 | if (ndifreq.ifindex == 0) |
| 1420 | printf("No default interface.\n"); |
| 1421 | else { |
| 1422 | if ((if_indextoname(ndifreq.ifindex, ifname)) == NULL) |
| 1423 | err(1, "failed to resolve ifname for index %lu", |
| 1424 | ndifreq.ifindex); |
| 1425 | printf("ND default interface = %s\n", ifname); |
| 1426 | } |
| 1427 | |
| 1428 | close(sock); |
| 1429 | } |
| 1430 | #endif /* SIOCSDEFIFACE_IN6 */ |
| 1431 | |
| 1432 | static char * |