nmctx_ferror
void nmctx_ferror(struct nmctx *, const char *, ...);
nmctx_ferror(ctx, "%s: cannot set extmem of an already registered port", d->hdr.nr_name);
nmctx_ferror(ctx, "%s: extmem already in use", d->hdr.nr_name);
nmctx_ferror(ctx, "failed to allocate cleanup descriptor");
nmctx_ferror(ctx, "%s: cannot allocate extmem option", d->hdr.nr_name);
nmctx_ferror(ctx, "cannot allocate cleanup descriptor");
nmctx_ferror(ctx, "cannot open '%s': %s", fname, strerror(errno));
nmctx_ferror(ctx, "failed to obtain filesize of '%s': %s", fname, strerror(errno));
nmctx_ferror(ctx, "cannot mmap '%s': %s", fname, strerror(errno));
nmctx_ferror(ctx, "cannot allocate cleanup descriptor");
nmctx_ferror(ctx, "%s: cannot allocate offset option", d->hdr.nr_name);
nmctx_ferror(ctx, "cannot set mem_id to %"PRId32", already set to %"PRIu16"",
nmctx_ferror(ctx, "%s: already registered", d->hdr.nr_name);
nmctx_ferror(ctx, "/dev/netmap: %s", strerror(errno));
nmctx_ferror(ctx, "%s: option %s: %s",
nmctx_ferror(ctx, "%s: %s", d->hdr.nr_name, strerror(errno));
nmctx_ferror(ctx, "%s: already mapped", d->hdr.nr_name);
nmctx_ferror(ctx, "cannot map unregistered port");
nmctx_ferror(ctx, "cannot allocate memory descriptor");
nmctx_ferror(ctx, "mmap: %s", strerror(errno));
nmctx_ferror(ctx, "cannot allocate nmport descriptor");
nmctx_ferror(ctx, "cannot clone unregistered port that is using extmem");
nmctx_ferror(ctx, "%s: invalid request, prefix unknown or missing", *pifname);
nmctx_ferror(ctx, "%s: missing ':'", ifname);
nmctx_ferror(ctx, "%s: no identifier allowed between '%s' and ':'", *pifname, p->prefix);
nmctx_ferror(ctx, "%s: invalid identifier '%.*s'", *pifname, vpname - scan, scan);
nmctx_ferror(ctx, "%s: identifier is missing between '%s' and ':'", *pifname, p->prefix);
nmctx_ferror(ctx, "%s: invalid empty pipe name", *pifname);
nmctx_ferror(ctx, "%s: invalid pipe name '%.*s'", *pifname, scan - pipesep, pipesep);
nmctx_ferror(ctx, "name '%.*s' too long", namelen, ifname);
nmctx_ferror(ctx, "%s: invalid empty port name", *pifname);
nmctx_ferror(ctx, "cannot open /dev/netmap: %s", strerror(errno));
nmctx_ferror(ctx, "cannot get info for '%s': %s", *pifname, strerror(errno));
nmctx_ferror(ctx, "unknown modifier: '%c'", *scan);
nmctx_ferror(ctx, "unexpected character: '%c'", *scan);
nmctx_ferror(ctx, "got '%s' while expecting a number", scan);
nmctx_ferror(ctx, "'%ld' out of range [0, %d)",
nmctx_ferror(ctx, "unrecognized flag: '%c'", *scan);
nmctx_ferror(ctx, "invalid mem_id: '%ld'", num);
nmctx_ferror(ctx, "invalid setting of mem_id to %ld (already set to %"PRIu16")", num, nr_mem_id);
nmctx_ferror(ctx, "invalid empty mem_id");
nmctx_ferror(ctx, "unexpected end of request");
nmctx_ferror(pctx->ctx, "unknown key: '%s'", key);
nmctx_ferror(pctx->ctx, "option '%s': duplicate key '%s', already set to '%s'",
nmctx_ferror(pctx->ctx, "option '%s': missing '=value' for key '%s'",
nmctx_ferror(pctx->ctx, "option '%s': mandatory key '%s' not assigned",
nmctx_ferror(ctx, "unknown option: '%s'", prefix);
nmctx_ferror(ctx, "option '%s' is not supported", prefix);
nmctx_ferror(ctx, "syntax error: missing body after '%s'",
nmctx_ferror(ctx, "syntax error: '=' not valid after '%s'",
nmctx_ferror(ctx, "missing value for option '%s'", prefix);
nmctx_ferror(ctx, "option list does not start with '@'");
nmctx_ferror(ctx, "invalid empty option");
nmctx_ferror(ctx, "out of memory");