gdp / apps / gdp-delete.c @ master
History | View | Annotate | Download (3.05 KB)
1 | 4a6db795 | Eric Allman | /* vim: set ai sw=4 sts=4 ts=4 : */
|
---|---|---|---|
2 | |||
3 | /*
|
||
4 | ** GDP-DELETE --- delete a GCL
|
||
5 | **
|
||
6 | eae1d3ec | Eric Allman | ** This is only for debugging. The gdp_gin_delete call is intended
|
7 | 4a6db795 | Eric Allman | ** for use by an expiration service.
|
8 | **
|
||
9 | ** ----- BEGIN LICENSE BLOCK -----
|
||
10 | ** Applications for the Global Data Plane
|
||
11 | ** From the Ubiquitous Swarm Lab, 490 Cory Hall, U.C. Berkeley.
|
||
12 | **
|
||
13 | c87dd166 | Eric Allman | ** Copyright (c) 2015-2019, Regents of the University of California.
|
14 | 4a6db795 | Eric Allman | ** All rights reserved.
|
15 | **
|
||
16 | ** Permission is hereby granted, without written agreement and without
|
||
17 | ** license or royalty fees, to use, copy, modify, and distribute this
|
||
18 | ** software and its documentation for any purpose, provided that the above
|
||
19 | ** copyright notice and the following two paragraphs appear in all copies
|
||
20 | ** of this software.
|
||
21 | **
|
||
22 | ** IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||
23 | ** SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
|
||
24 | ** PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
|
||
25 | ** EVEN IF REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
26 | **
|
||
27 | ** REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
|
||
28 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||
29 | ** FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION,
|
||
30 | ** IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO
|
||
31 | ** OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
||
32 | ** OR MODIFICATIONS.
|
||
33 | ** ----- END LICENSE BLOCK -----
|
||
34 | */
|
||
35 | |||
36 | #include <gdp/gdp.h> |
||
37 | |||
38 | #include <ep/ep_app.h> |
||
39 | #include <ep/ep_dbg.h> |
||
40 | |||
41 | #include <sysexits.h> |
||
42 | |||
43 | void
|
||
44 | usage(void)
|
||
45 | { |
||
46 | fprintf(stderr, |
||
47 | "Usage: %s [-D dbg_spec] [-G router_addr] target_log\n"
|
||
48 | " -D set debugging flags\n"
|
||
49 | " -G IP host to contact for gdp_router\n",
|
||
50 | ep_app_getprogname()); |
||
51 | exit(EX_USAGE); |
||
52 | } |
||
53 | |||
54 | |||
55 | int
|
||
56 | main(int argc, char **argv) |
||
57 | { |
||
58 | int opt;
|
||
59 | bool show_usage = false; |
||
60 | EP_STAT estat; |
||
61 | eae1d3ec | Eric Allman | gdp_gin_t *gin; |
62 | 4a6db795 | Eric Allman | char *gdpd_addr = NULL; |
63 | const char *lname; |
||
64 | eae1d3ec | Eric Allman | gdp_name_t gdpiname; |
65 | 4a6db795 | Eric Allman | const char *phase; |
66 | cf382a5a | Eric Allman | int exitstat = EX_OK;
|
67 | 4a6db795 | Eric Allman | |
68 | while ((opt = getopt(argc, argv, "D:G:")) > 0) |
||
69 | { |
||
70 | switch (opt)
|
||
71 | { |
||
72 | case 'D': |
||
73 | ep_dbg_set(optarg); |
||
74 | break;
|
||
75 | |||
76 | case 'G': |
||
77 | gdpd_addr = optarg; |
||
78 | break;
|
||
79 | |||
80 | default:
|
||
81 | show_usage = true;
|
||
82 | break;
|
||
83 | } |
||
84 | } |
||
85 | argc -= optind; |
||
86 | argv += optind; |
||
87 | |||
88 | if (show_usage || argc != 1) |
||
89 | usage(); |
||
90 | |||
91 | // initialize GDP library
|
||
92 | estat = gdp_init(gdpd_addr); |
||
93 | if (!EP_STAT_ISOK(estat))
|
||
94 | { |
||
95 | cf382a5a | Eric Allman | exitstat = EX_UNAVAILABLE; |
96 | 4a6db795 | Eric Allman | ep_app_error("GDP Initialization failed");
|
97 | goto fail0;
|
||
98 | } |
||
99 | |||
100 | // allow thread to settle to avoid interspersed debug output
|
||
101 | ep_time_nanosleep(INT64_C(100000000));
|
||
102 | |||
103 | // open target GCL (must already exist)
|
||
104 | lname = argv[0];
|
||
105 | eae1d3ec | Eric Allman | gdp_parse_name(lname, gdpiname); |
106 | 4a6db795 | Eric Allman | phase = "open";
|
107 | eae1d3ec | Eric Allman | estat = gdp_gin_open(gdpiname, GDP_MODE_AO, NULL, &gin);
|
108 | cf382a5a | Eric Allman | if (!EP_STAT_ISOK(estat))
|
109 | { |
||
110 | exitstat = EX_NOINPUT; |
||
111 | goto fail1;
|
||
112 | } |
||
113 | 4a6db795 | Eric Allman | |
114 | // delete and close log
|
||
115 | phase = "delete";
|
||
116 | eae1d3ec | Eric Allman | estat = gdp_gin_delete(gin); |
117 | 4a6db795 | Eric Allman | |
118 | if (!EP_STAT_ISOK(estat))
|
||
119 | { |
||
120 | cf382a5a | Eric Allman | exitstat = EX_NOPERM; |
121 | 4a6db795 | Eric Allman | fail1:
|
122 | ep_app_error("could not %s %s", phase, lname);
|
||
123 | } |
||
124 | |||
125 | fail0:
|
||
126 | ep_app_message(estat, "exiting with status");
|
||
127 | cf382a5a | Eric Allman | if (exitstat == EX_OK && !EP_STAT_ISOK(estat))
|
128 | exitstat = EX_UNAVAILABLE; |
||
129 | return exitstat;
|
||
130 | 4a6db795 | Eric Allman | } |