]> git.proxmox.com Git - mirror_frr.git/blob - lib/json.c
Merge remote-tracking branch 'origin/stable/2.0'
[mirror_frr.git] / lib / json.c
1 /* json-c wrapper
2 * Copyright (C) 2015 Cumulus Networks, Inc.
3 *
4 * This file is part of GNU Zebra.
5 *
6 * GNU Zebra is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2, or (at your option) any
9 * later version.
10 *
11 * GNU Zebra is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; see the file COPYING; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #include <zebra.h>
22
23 #include "command.h"
24 #include "lib/json.h"
25
26 /*
27 * This function assumes that the json keyword
28 * is the *last* keyword on the line no matter
29 * what.
30 */
31 int
32 use_json (const int argc, struct cmd_token *argv[])
33 {
34 if (argc == 0)
35 return 0;
36
37 if (argv[argc-1]->arg && strcmp(argv[argc-1]->arg, "json") == 0)
38 return 1;
39
40 return 0;
41 }
42
43 void
44 json_object_string_add(struct json_object* obj, const char *key,
45 const char *s)
46 {
47 json_object_object_add(obj, key, json_object_new_string(s));
48 }
49
50 void
51 json_object_int_add(struct json_object* obj, const char *key, int32_t i)
52 {
53 json_object_object_add(obj, key, json_object_new_int(i));
54 }
55
56 void
57 json_object_long_add(struct json_object* obj, const char *key, int64_t i)
58 {
59 #if defined(HAVE_JSON_C_JSON_H)
60 json_object_object_add(obj, key, json_object_new_int64(i));
61 #else
62 json_object_object_add(obj, key, json_object_new_int((int)i));
63 #endif
64 }
65
66 void
67 json_object_boolean_false_add(struct json_object* obj, const char *key)
68 {
69 json_object_object_add(obj, key, json_object_new_boolean(0));
70 }
71
72 void
73 json_object_boolean_true_add(struct json_object* obj, const char *key)
74 {
75 json_object_object_add(obj, key, json_object_new_boolean(1));
76 }
77
78 struct json_object*
79 json_object_lock(struct json_object *obj)
80 {
81 return json_object_get(obj);
82 }
83
84 void
85 json_object_free(struct json_object *obj)
86 {
87 json_object_put(obj);
88 }
89
90 #if !defined(HAVE_JSON_C_JSON_H)
91 int
92 json_object_object_get_ex(struct json_object *obj,
93 const char *key,
94 struct json_object **value)
95 {
96 *value = json_object_object_get(obj, key);
97
98 if (*value)
99 return 1;
100
101 return 0;
102 }
103 #endif