Deleted Added
full compact
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 ---