#include #include #include #include #include #include #include "util.h" #ifdef HAVE_CONFIG_H #include "../config.h" #endif static void usage(); int main(int argc, char* argv[]) { int jid = 0; char* e; /* Remove the program name */ argc--; argv++; if(argc != 1) usage(); if(running_in_jail()) errx(1, "can't run from inside jail"); jid = strtol(argv[0], &e, 10); /* If it was all a number ... */ if(!*e) { struct xprison* xp; size_t len, i; len = get_jail_sysctl(&xp); if(len > 0) { for(i = 0; i < len; i++) { if(xp[i].pr_id == jid) { printf("%s\n", xp[i].pr_host); jid = -1; break; } } free(xp); if(jid != -1) errx(1, "unknown jail id: %s", argv[0]); } } /* otherwise it's a host name */ else { jid = translate_jail_name(argv[0]); if(jid == -1) errx(1, "unknown jail host name: %s", argv[0]); printf("%d\n", (int)jid); } return 0; } static void usage() { fprintf(stderr, "usage: jid hostname \n"); exit(2); }