perr
int pin[2], pout[2], perr[2];
if (pipe(perr) == -1) {
close(perr[0]);
close(perr[1]);
close(perr[0]);
if (dup2(perr[1], 2) == -1)
close(perr[1]);
close(perr[1]);
session_set_fds(ssh, s, pin[1], pout[0], perr[0],
perr("cannot change file permissions");
perr("cannot fork");
perr("cannot open input file");
perr("error duplicating input file descriptor");
perr("error in fstat of input file descriptor");
perr("error in fstat of input file");
perr("error in fcntl");
perr("cannot chdir to %s", ATSPOOL_DIR);
perr("cannot create output file");
perr("error in fork");
perr("error in lseek");
perr("error in I/O redirection");
perr("error in I/O redirection");
perr("error in I/O redirection");
perr("cannot chdir to %s", ATJOB_DIR);
perr("cannot init group access list");
perr("cannot change group");
perr("cannot set login name");
perr("cannot set user id");
perr("exec failed for /bin/sh");
perr("open of jobfile failed");
perr("cannot init group access list");
perr("cannot change group");
perr("cannot set login name");
perr("cannot set user id");
perr("exec failed for mail command");
perr("garbled option -l");
perr("cannot change to %s", ATJOB_DIR);
perr("cannot read %s", ATJOB_DIR);
perr("cannot stat in %s", ATJOB_DIR);
void perr(const char *fmt, ...);
perr("error in getloadavg");
void perr(const char *, ...) __printflike(1, 2);
perr("could not read fsinfo block");
perr("Unable to write bpbFSInfo");
perr("could not read fsinfo block");
perr("Unable to write bpbFSInfo");
perr("could not read boot block");
perr("Can't open `%s'", fname);
perr("Unable to write directory");
perr("Unable to write directory");
perr("No space for buffer");
perr("could not read LOST.DIR");
perr("could not write LOST.DIR");
perr("No space for directory buffer (%zu)", len);
perr("No space for directory delbuf (%zu)", len);
perr("No space for directory entry");
perr("Unable to lseek to %" PRId64, off);
perr("Unable to read directory");
perr("Unable to lseek to %" PRId64, off);
perr("Unable to write directory");
perr("No space for directory buffer (%u)",
perr("Unable to read directory");
perr("Unable to read directory");
perr("No space for directory");
perr("No space for todo list");
perr("Unable to read FAT0");
perr("Unable to write FAT %d", n);
perr("Unable to write FAT");
perr("Unable to write FAT %d", i);
perr("No memory for FAT sectors (%zu)", len);
perr("Unable to read FAT");
perr("Unable to write FAT");
perr("No space for FAT (%zu)", readsize);
perr("Unable to read FAT");
perr("Unable to read FAT");
perr("No space for FAT cache (%zu of %zu)",
perr("No space for FAT descriptor");
perr("No space for head bitmap for FAT clusters (%zu)",
#define PERR_DFLAGS(n) perr.perr_dests[n].dest_flags
#define PERR_DADDR(n) perr.perr_dests[n].dest_addr
#define PERR_DSEQ(n) perr.perr_dests[n].dest_seq
#define PERR_DRCODE(n) perr.perr_dests[n].dest_rcode
struct ieee80211_meshperr_ie perr;
perr.perr_ttl = ms->ms_ttl;
perr.perr_ndests = 1;
hwmp_send_perr(vap, broadcastaddr, &perr);
#define PERR_DFLAGS(n) perr->perr_dests[n].dest_flags
#define PERR_DADDR(n) perr->perr_dests[n].dest_addr
#define PERR_DSEQ(n) perr->perr_dests[n].dest_seq
#define PERR_DEXTADDR(n) perr->perr_dests[n].dest_ext_addr
#define PERR_DRCODE(n) perr->perr_dests[n].dest_rcode
const struct ieee80211_frame *wh, const struct ieee80211_meshperr_ie *perr)
pperr = kmalloc(sizeof(*perr) + 31*sizeof(*perr->perr_dests),
pperr = IEEE80211_MALLOC(sizeof(*perr) + 31*sizeof(*perr->perr_dests),
for (i = 0; i < perr->perr_ndests; i++) {
memcpy(&pperr->perr_dests[j], &perr->perr_dests[i],
sizeof(*perr->perr_dests));
if (forward && perr->perr_ttl > 1) {
struct ieee80211_meshperr_ie *perr)
perr->perr_ie = IEEE80211_ELEMID_MESHPERR;
for (i = 0; i<perr->perr_ndests; i++) {
if (perr->perr_dests[i].dest_flags &
perr->perr_len =length;
return hwmp_send_action(vap, da, (uint8_t *)perr, perr->perr_len+2);
#define PERR_DFLAGS(n) perr.perr_dests[n].dest_flags
#define PERR_DADDR(n) perr.perr_dests[n].dest_addr
#define PERR_DSEQ(n) perr.perr_dests[n].dest_seq
#define PERR_DEXTADDR(n) perr.perr_dests[n].dest_ext_addr
#define PERR_DRCODE(n) perr.perr_dests[n].dest_rcode
struct ieee80211_meshperr_ie perr;
perr.perr_ndests = 1;
perr.perr_ttl = ms->ms_ttl;
hwmp_send_perr(vap, broadcastaddr, &perr);
struct ieee80211_meshperr_ie *perr;
perr = kmalloc(sizeof(*perr) +
(ndest - 1) * sizeof(*perr->perr_dests),
perr = IEEE80211_MALLOC(sizeof(*perr) +
(ndest - 1) * sizeof(*perr->perr_dests),
KASSERT(perr != NULL, ("perr == NULL"));
perr->perr_ie = *iefrm_t++;
perr->perr_len = *iefrm_t++;
perr->perr_ttl = *iefrm_t++;
perr->perr_ndests = *iefrm_t++;
for (i = 0; i<perr->perr_ndests; i++) {
perr->perr_dests[i].dest_flags = *iefrm_t++;
perr->perr_dests[i].dest_addr, iefrm_t);
perr->perr_dests[i].dest_seq = le32dec(iefrm_t);
if (perr->perr_dests[i].dest_flags &
perr->perr_dests[i].dest_ext_addr,
perr->perr_dests[i].dest_rcode =
hwmp_recv_perr(vap, ni, wh, perr);
IEEE80211_FREE(perr, M_80211_MESH_PERR);
#define PERR_DFLAGS(n) perr->perr_dests[n].dest_flags
#define PERR_DADDR(n) perr->perr_dests[n].dest_addr
#define PERR_DSEQ(n) perr->perr_dests[n].dest_seq
#define PERR_EXTADDR(n) perr->perr_dests[n].dest_ext_addr
#define PERR_DRCODE(n) perr->perr_dests[n].dest_rcode
hwmp_add_meshperr(uint8_t *frm, const struct ieee80211_meshperr_ie *perr)
*frm++ = perr->perr_len; /* len already calculated */
*frm++ = perr->perr_ttl;
*frm++ = perr->perr_ndests;
for (i = 0; i < perr->perr_ndests; i++) {
perr("cannot get directory");
perr("cannot open lockfile " LFILE);
perr("cannot generate job number");
perr("cannot access " ATJOB_DIR);
perr("cannot create atjob file");
perr("error in dup() of job file");
perr("cannot give away file");
perr("cannot open input file");
perr("cannot give away file");
perr("cannot change to " ATJOB_DIR);
perr("cannot open " ATJOB_DIR);
perr("cannot stat in " ATJOB_DIR);
perr("cannot change to " ATJOB_DIR);
perr("cannot open " ATJOB_DIR);
perr("cannot stat in " ATJOB_DIR);
perr(dirent->d_name);
perr("cannot open file");
void perr(const char *a) __dead2;