jls.c (209820) | jls.c (222465) |
---|---|
1/*- 2 * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org> 3 * Copyright (c) 2008 Bjoern A. Zeeb <bz@FreeBSD.org> 4 * Copyright (c) 2009 James Gritton <jamie@FreeBSD.org> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org> 3 * Copyright (c) 2008 Bjoern A. Zeeb <bz@FreeBSD.org> 4 * Copyright (c) 2009 James Gritton <jamie@FreeBSD.org> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29#include <sys/cdefs.h> |
30__FBSDID("$FreeBSD: head/usr.sbin/jls/jls.c 209820 2010-07-08 19:22:52Z jamie $"); | 30__FBSDID("$FreeBSD: head/usr.sbin/jls/jls.c 222465 2011-05-29 21:03:40Z bz $"); |
31 32#include <sys/param.h> 33#include <sys/jail.h> 34#include <sys/socket.h> 35#include <sys/sysctl.h> 36 37#include <arpa/inet.h> 38#include <netinet/in.h> --- 15 unchanged lines hidden (view full) --- 54#define PRINT_NAMEVAL 0x04 55#define PRINT_QUOTED 0x08 56#define PRINT_SKIP 0x10 57#define PRINT_VERBOSE 0x20 58 59static struct jailparam *params; 60static int *param_parent; 61static int nparams; | 31 32#include <sys/param.h> 33#include <sys/jail.h> 34#include <sys/socket.h> 35#include <sys/sysctl.h> 36 37#include <arpa/inet.h> 38#include <netinet/in.h> --- 15 unchanged lines hidden (view full) --- 54#define PRINT_NAMEVAL 0x04 55#define PRINT_QUOTED 0x08 56#define PRINT_SKIP 0x10 57#define PRINT_VERBOSE 0x20 58 59static struct jailparam *params; 60static int *param_parent; 61static int nparams; |
62#ifdef INET6 63static int ip6_ok; 64#endif 65#ifdef INET 66static int ip4_ok; 67#endif |
|
62 63static int add_param(const char *name, void *value, size_t valuelen, 64 struct jailparam *source, unsigned flags); 65static int sort_param(const void *a, const void *b); 66static char *noname(const char *name); 67static char *nononame(const char *name); 68static int print_jail(int pflags, int jflags); 69static void quoted_print(char *str); --- 37 unchanged lines hidden (view full) --- 107 pflags = (pflags & 108 ~(PRINT_HEADER | PRINT_NAMEVAL | PRINT_SKIP)) | 109 PRINT_VERBOSE; 110 break; 111 default: 112 errx(1, "usage: jls [-dhnqv] [-j jail] [param ...]"); 113 } 114 | 68 69static int add_param(const char *name, void *value, size_t valuelen, 70 struct jailparam *source, unsigned flags); 71static int sort_param(const void *a, const void *b); 72static char *noname(const char *name); 73static char *nononame(const char *name); 74static int print_jail(int pflags, int jflags); 75static void quoted_print(char *str); --- 37 unchanged lines hidden (view full) --- 113 pflags = (pflags & 114 ~(PRINT_HEADER | PRINT_NAMEVAL | PRINT_SKIP)) | 115 PRINT_VERBOSE; 116 break; 117 default: 118 errx(1, "usage: jls [-dhnqv] [-j jail] [param ...]"); 119 } 120 |
121#ifdef INET6 122 ip6_ok = feature_present("inet6"); 123#endif 124#ifdef INET 125 ip4_ok = feature_present("inet"); 126#endif 127 |
|
115 /* Add the parameters to print. */ 116 if (optind == argc) { 117 if (pflags & (PRINT_HEADER | PRINT_NAMEVAL)) 118 add_param("all", NULL, (size_t)0, NULL, JP_USER); 119 else if (pflags & PRINT_VERBOSE) { 120 add_param("jid", NULL, (size_t)0, NULL, JP_USER); 121 add_param("host.hostname", NULL, (size_t)0, NULL, 122 JP_USER); 123 add_param("path", NULL, (size_t)0, NULL, JP_USER); 124 add_param("name", NULL, (size_t)0, NULL, JP_USER); 125 add_param("dying", NULL, (size_t)0, NULL, JP_USER); 126 add_param("cpuset.id", NULL, (size_t)0, NULL, JP_USER); | 128 /* Add the parameters to print. */ 129 if (optind == argc) { 130 if (pflags & (PRINT_HEADER | PRINT_NAMEVAL)) 131 add_param("all", NULL, (size_t)0, NULL, JP_USER); 132 else if (pflags & PRINT_VERBOSE) { 133 add_param("jid", NULL, (size_t)0, NULL, JP_USER); 134 add_param("host.hostname", NULL, (size_t)0, NULL, 135 JP_USER); 136 add_param("path", NULL, (size_t)0, NULL, JP_USER); 137 add_param("name", NULL, (size_t)0, NULL, JP_USER); 138 add_param("dying", NULL, (size_t)0, NULL, JP_USER); 139 add_param("cpuset.id", NULL, (size_t)0, NULL, JP_USER); |
127 add_param("ip4.addr", NULL, (size_t)0, NULL, JP_USER); 128 add_param("ip6.addr", NULL, (size_t)0, NULL, 129 JP_USER | JP_OPT); | 140#ifdef INET 141 if (ip4_ok) 142 add_param("ip4.addr", NULL, (size_t)0, NULL, 143 JP_USER); 144#endif 145#ifdef INET6 146 if (ip6_ok) 147 add_param("ip6.addr", NULL, (size_t)0, NULL, 148 JP_USER | JP_OPT); 149#endif |
130 } else { 131 pflags |= PRINT_DEFAULT; 132 add_param("jid", NULL, (size_t)0, NULL, JP_USER); | 150 } else { 151 pflags |= PRINT_DEFAULT; 152 add_param("jid", NULL, (size_t)0, NULL, JP_USER); |
133 add_param("ip4.addr", NULL, (size_t)0, NULL, JP_USER); | 153#ifdef INET 154 if (ip4_ok) 155 add_param("ip4.addr", NULL, (size_t)0, NULL, 156 JP_USER); 157#endif |
134 add_param("host.hostname", NULL, (size_t)0, NULL, 135 JP_USER); 136 add_param("path", NULL, (size_t)0, NULL, JP_USER); 137 } 138 } else 139 while (optind < argc) 140 add_param(argv[optind++], NULL, (size_t)0, NULL, 141 JP_USER); --- 180 unchanged lines hidden (view full) --- 322 return nname; 323} 324 325static int 326print_jail(int pflags, int jflags) 327{ 328 char *nname; 329 char **param_values; | 158 add_param("host.hostname", NULL, (size_t)0, NULL, 159 JP_USER); 160 add_param("path", NULL, (size_t)0, NULL, JP_USER); 161 } 162 } else 163 while (optind < argc) 164 add_param(argv[optind++], NULL, (size_t)0, NULL, 165 JP_USER); --- 180 unchanged lines hidden (view full) --- 346 return nname; 347} 348 349static int 350print_jail(int pflags, int jflags) 351{ 352 char *nname; 353 char **param_values; |
330 int i, ai, jid, count, spc; | 354 int i, ai, jid, count, n, spc; |
331 char ipbuf[INET6_ADDRSTRLEN]; 332 333 jid = jailparam_get(params, nparams, jflags); 334 if (jid < 0) 335 return jid; 336 if (pflags & PRINT_VERBOSE) { 337 printf("%6d %-29.29s %.74s\n" 338 "%6s %-29.29s %.74s\n" 339 "%6s %-6d\n", 340 *(int *)params[0].jp_value, 341 (char *)params[1].jp_value, 342 (char *)params[2].jp_value, 343 "", 344 (char *)params[3].jp_value, 345 *(int *)params[4].jp_value ? "DYING" : "ACTIVE", 346 "", 347 *(int *)params[5].jp_value); | 355 char ipbuf[INET6_ADDRSTRLEN]; 356 357 jid = jailparam_get(params, nparams, jflags); 358 if (jid < 0) 359 return jid; 360 if (pflags & PRINT_VERBOSE) { 361 printf("%6d %-29.29s %.74s\n" 362 "%6s %-29.29s %.74s\n" 363 "%6s %-6d\n", 364 *(int *)params[0].jp_value, 365 (char *)params[1].jp_value, 366 (char *)params[2].jp_value, 367 "", 368 (char *)params[3].jp_value, 369 *(int *)params[4].jp_value ? "DYING" : "ACTIVE", 370 "", 371 *(int *)params[5].jp_value); |
348 count = params[6].jp_valuelen / sizeof(struct in_addr); 349 for (ai = 0; ai < count; ai++) 350 if (inet_ntop(AF_INET, 351 &((struct in_addr *)params[6].jp_value)[ai], 352 ipbuf, sizeof(ipbuf)) == NULL) 353 err(1, "inet_ntop"); 354 else 355 printf("%6s %-15.15s\n", "", ipbuf); 356 if (!strcmp(params[7].jp_name, "ip6.addr")) { 357 count = params[7].jp_valuelen / sizeof(struct in6_addr); | 372 n = 6; 373#ifdef INET 374 if (ip4_ok && !strcmp(params[n].jp_name, "ip.addr")) { 375 count = params[n].jp_valuelen / sizeof(struct in_addr); |
358 for (ai = 0; ai < count; ai++) | 376 for (ai = 0; ai < count; ai++) |
377 if (inet_ntop(AF_INET, 378 &((struct in_addr *)params[n].jp_value)[ai], 379 ipbuf, sizeof(ipbuf)) == NULL) 380 err(1, "inet_ntop"); 381 else 382 printf("%6s %-15.15s\n", "", ipbuf); 383 n++; 384 } 385#endif 386#ifdef INET6 387 if (ip6_ok && !strcmp(params[n].jp_name, "ip6.addr")) { 388 count = params[n].jp_valuelen / sizeof(struct in6_addr); 389 for (ai = 0; ai < count; ai++) |
|
359 if (inet_ntop(AF_INET6, | 390 if (inet_ntop(AF_INET6, |
360 &((struct in6_addr *)params[7].jp_value)[ai], | 391 &((struct in6_addr *) 392 params[n].jp_value)[ai], |
361 ipbuf, sizeof(ipbuf)) == NULL) 362 err(1, "inet_ntop"); 363 else 364 printf("%6s %s\n", "", ipbuf); | 393 ipbuf, sizeof(ipbuf)) == NULL) 394 err(1, "inet_ntop"); 395 else 396 printf("%6s %s\n", "", ipbuf); |
397 n++; |
|
365 } | 398 } |
399#endif |
|
366 } else if (pflags & PRINT_DEFAULT) 367 printf("%6d %-15.15s %-29.29s %.74s\n", 368 *(int *)params[0].jp_value, | 400 } else if (pflags & PRINT_DEFAULT) 401 printf("%6d %-15.15s %-29.29s %.74s\n", 402 *(int *)params[0].jp_value, |
369 params[1].jp_valuelen == 0 ? "-" | 403#ifdef INET 404 (!ip4_ok || params[1].jp_valuelen == 0) ? "-" |
370 : inet_ntoa(*(struct in_addr *)params[1].jp_value), | 405 : inet_ntoa(*(struct in_addr *)params[1].jp_value), |
371 (char *)params[2].jp_value, 372 (char *)params[3].jp_value); | 406#else 407 "-" 408#endif 409 (char *)params[2-!ip4_ok].jp_value, 410 (char *)params[3-!ip4_ok].jp_value); |
373 else { 374 param_values = alloca(nparams * sizeof(*param_values)); 375 for (i = 0; i < nparams; i++) { 376 if (!(params[i].jp_flags & JP_USER)) 377 continue; 378 param_values[i] = jailparam_export(params + i); 379 if (param_values[i] == NULL) 380 errx(1, "%s", jail_errmsg); --- 82 unchanged lines hidden --- | 411 else { 412 param_values = alloca(nparams * sizeof(*param_values)); 413 for (i = 0; i < nparams; i++) { 414 if (!(params[i].jp_flags & JP_USER)) 415 continue; 416 param_values[i] = jailparam_export(params + i); 417 if (param_values[i] == NULL) 418 errx(1, "%s", jail_errmsg); --- 82 unchanged lines hidden --- |