summaryrefslogtreecommitdiffstats
path: root/src/json.h
blob: d7bc072a7f0b53d3ad72d73f91f21be47c6285c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef _OG_JSON_H
#define _OG_JSON_H

#include <jansson.h>
#include "schedule.h"

int og_json_parse_string(json_t *element, const char **str);
int og_json_parse_string_copy(json_t *element, char *str, size_t size);
int og_json_parse_uint64(json_t *element, uint64_t *integer);
int og_json_parse_uint(json_t *element, uint32_t *integer);
int og_json_parse_bool(json_t *element, bool *value);

#define OG_PARAM_PART_NUMBER			(1UL << 0)
#define OG_PARAM_PART_CODE			(1UL << 1)
#define OG_PARAM_PART_FILESYSTEM		(1UL << 2)
#define OG_PARAM_PART_SIZE			(1UL << 3)
#define OG_PARAM_PART_FORMAT			(1UL << 4)
#define OG_PARAM_PART_DISK			(1UL << 5)
#define OG_PARAM_PART_OS			(1UL << 6)
#define OG_PARAM_PART_USED_SIZE			(1UL << 7)

struct og_partition {
	const char	*disk;
	const char	*number;
	const char	*code;
	const char	*size;
	const char	*filesystem;
	const char	*format;
	const char	*os;
	const char	*used_size;
};

#define OG_DISK_MAX		4
#define OG_PARTITION_MAX	(4 * OG_DISK_MAX)

int og_json_parse_partition(json_t *element, struct og_partition *part,
			    uint64_t required_flags);

#define OG_CLIENTS_MAX	4096

struct og_sync_params {
	const char	*sync;
	const char	*diff;
	const char	*remove;
	const char	*compress;
	const char	*cleanup;
	const char	*cache;
	const char	*cleanup_cache;
	const char	*remove_dst;
	const char	*diff_id;
	const char	*diff_name;
	const char	*path;
	const char	*method;
};

#define OG_PARAM_SCOPE_ID	(1UL << 0)
#define OG_PARAM_SCOPE_TYPE	(1UL << 1)

struct og_scope {
	uint32_t	id;
	const char	*type;
};

int og_json_parse_scope(json_t *element, struct og_scope *scope,
			const uint64_t required_flags);

struct og_msg_params {
	const char	*ips_array[OG_CLIENTS_MAX];
	const char	*mac_array[OG_CLIENTS_MAX];
	const char	*netmask_array[OG_CLIENTS_MAX];
	unsigned int	ips_array_len;
	const char	*wol_type;
	char		run_cmd[4096];
	const char	*disk;
	const char	*partition;
	const char	*repository;
	const char	*name;
	const char	*id;
	const char	*code;
	const char	*type;
	const char	*profile;
	const char	*cache;
	const char	*cache_size;
	const char	*comment;
	bool		echo;
	struct og_partition	partition_setup[OG_PARTITION_MAX];
	struct og_sync_params sync_setup;
	struct og_schedule_time time;
	const char	*task_id;
	uint64_t	flags;
};

#endif