ARGSUSED */
| 1419 | |
| 1420 | /* ARGSUSED */ |
| 1421 | static void |
| 1422 | setifdescr(const char *val, int dummy __unused, int s, |
| 1423 | const struct afswtch *afp) |
| 1424 | { |
| 1425 | char *newdescr; |
| 1426 | |
| 1427 | strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); |
| 1428 | |
| 1429 | ifr.ifr_buffer.length = strlen(val) + 1; |
| 1430 | if (ifr.ifr_buffer.length == 1) { |
| 1431 | ifr.ifr_buffer.buffer = newdescr = NULL; |
| 1432 | ifr.ifr_buffer.length = 0; |
| 1433 | } else { |
| 1434 | newdescr = strdup(val); |
| 1435 | ifr.ifr_buffer.buffer = newdescr; |
| 1436 | if (newdescr == NULL) { |
| 1437 | warn("no memory to set ifdescr"); |
| 1438 | return; |
| 1439 | } |
| 1440 | } |
| 1441 | |
| 1442 | #ifdef FSTACK |
| 1443 | if (ifr.ifr_buffer.buffer != NULL) { |
| 1444 | size_t offset = (char *)&(ifr.ifr_buffer.buffer) - (char *)&(ifr); |
| 1445 | if (ioctl_va(s, SIOCSIFDESCR, (caddr_t)&ifr, 3, offset, |
| 1446 | ifr.ifr_buffer.buffer, ifr.ifr_buffer.length) < 0) |
| 1447 | err(1, "ioctl SIOCSIFDESCR (set descr)"); |
| 1448 | } else |
| 1449 | #endif |
| 1450 | if (ioctl(s, SIOCSIFDESCR, (caddr_t)&ifr) < 0) |
| 1451 | err(1, "ioctl SIOCSIFDESCR (set descr)"); |
| 1452 | |
| 1453 | free(newdescr); |
| 1454 | } |
| 1455 | |
| 1456 | /* ARGSUSED */ |
| 1457 | static void |