XXX: check SIOCGDEFIFACE_IN6 as well? */
| 1375 | |
| 1376 | #ifdef SIOCSDEFIFACE_IN6 /* XXX: check SIOCGDEFIFACE_IN6 as well? */ |
| 1377 | static void |
| 1378 | setdefif(char *ifname) |
| 1379 | { |
| 1380 | struct in6_ndifreq ndifreq; |
| 1381 | unsigned int ifindex; |
| 1382 | int sock; |
| 1383 | |
| 1384 | if (strcasecmp(ifname, "delete") == 0) |
| 1385 | ifindex = 0; |
| 1386 | else { |
| 1387 | if ((ifindex = if_nametoindex(ifname)) == 0) |
| 1388 | err(1, "failed to resolve i/f index for %s", ifname); |
| 1389 | } |
| 1390 | |
| 1391 | if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) |
| 1392 | err(1, "socket"); |
| 1393 | |
| 1394 | strlcpy(ndifreq.ifname, "lo0", sizeof(ndifreq.ifname)); /* dummy */ |
| 1395 | ndifreq.ifindex = ifindex; |
| 1396 | |
| 1397 | if (ioctl(sock, SIOCSDEFIFACE_IN6, (caddr_t)&ndifreq) < 0) |
| 1398 | err(1, "ioctl(SIOCSDEFIFACE_IN6)"); |
| 1399 | |
| 1400 | close(sock); |
| 1401 | } |
| 1402 | |
| 1403 | static void |
| 1404 | getdefif() |
no test coverage detected