]>
Commit | Line | Data |
---|---|---|
0b843d35 CB |
1 | /* liblxcapi |
2 | * | |
3 | * Copyright © 2017 Christian Brauner <christian.brauner@ubuntu.com>. | |
4 | * Copyright © 2017 Canonical Ltd. | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2, as | |
8 | * published by the Free Software Foundation. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License along | |
16 | * with this program; if not, write to the Free Software Foundation, Inc., | |
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 | */ | |
19 | ||
20 | #ifndef __LXC_CONFILE_UTILS_H | |
21 | #define __LXC_CONFILE_UTILS_H | |
22 | ||
663e9916 CB |
23 | #include <stdbool.h> |
24 | ||
ce2f5ae8 | 25 | #include "conf.h" |
f9373e40 | 26 | #include "confile_utils.h" |
ce2f5ae8 | 27 | |
9496659c CB |
28 | #define strprint(str, inlen, ...) \ |
29 | do { \ | |
30 | if (str) \ | |
31 | len = snprintf(str, inlen, ##__VA_ARGS__); \ | |
32 | else \ | |
33 | len = snprintf((char *){""}, 0, ##__VA_ARGS__); \ | |
34 | if (len < 0) { \ | |
35 | SYSERROR("failed to create string"); \ | |
36 | return -1; \ | |
37 | }; \ | |
38 | fulllen += len; \ | |
39 | if (inlen > 0) { \ | |
40 | if (str) \ | |
41 | str += len; \ | |
42 | inlen -= len; \ | |
43 | if (inlen < 0) \ | |
44 | inlen = 0; \ | |
45 | } \ | |
f9373e40 CB |
46 | } while (0); |
47 | ||
0b843d35 CB |
48 | extern int parse_idmaps(const char *idmap, char *type, unsigned long *nsid, |
49 | unsigned long *hostid, unsigned long *range); | |
50 | ||
663e9916 | 51 | extern bool lxc_config_value_empty(const char *value); |
c302b476 CB |
52 | extern struct lxc_netdev *lxc_network_add(struct lxc_list *networks, int idx, |
53 | bool tail); | |
0070b1c4 CB |
54 | extern struct lxc_netdev * |
55 | lxc_get_netdev_by_idx(struct lxc_conf *conf, unsigned int idx, bool allocate); | |
1ed6ba91 | 56 | extern void lxc_log_configured_netdevs(const struct lxc_conf *conf); |
519df1c1 | 57 | extern bool lxc_remove_nic_by_idx(struct lxc_conf *conf, unsigned int idx); |
c302b476 | 58 | extern void lxc_free_networks(struct lxc_list *networks); |
9b0df30f CB |
59 | extern int lxc_macvlan_mode_to_flag(int *mode, const char *value); |
60 | extern char *lxc_macvlan_flag_to_mode(int mode); | |
663e9916 | 61 | |
f9373e40 CB |
62 | extern int set_config_string_item(char **conf_item, const char *value); |
63 | extern int set_config_string_item_max(char **conf_item, const char *value, | |
64 | size_t max); | |
65 | extern int set_config_path_item(char **conf_item, const char *value); | |
66 | extern int config_ip_prefix(struct in_addr *addr); | |
18cd4b54 | 67 | extern int network_ifname(char *valuep, const char *value, size_t size); |
29c98ddd | 68 | extern void rand_complete_hwaddr(char *hwaddr); |
ce4be612 | 69 | extern bool lxc_config_net_hwaddr(const char *line); |
f9373e40 CB |
70 | extern void update_hwaddr(const char *line); |
71 | extern bool new_hwaddr(char *hwaddr); | |
953fe44f | 72 | extern int lxc_get_conf_str(char *retv, int inlen, const char *value); |
6e54330c | 73 | extern int lxc_get_conf_bool(struct lxc_conf *c, char *retv, int inlen, bool v); |
953fe44f | 74 | extern int lxc_get_conf_int(struct lxc_conf *c, char *retv, int inlen, int v); |
885766f5 | 75 | extern int lxc_get_conf_size_t(struct lxc_conf *c, char *retv, int inlen, size_t v); |
2ea479c9 | 76 | extern int lxc_get_conf_uint64(struct lxc_conf *c, char *retv, int inlen, uint64_t v); |
71460831 | 77 | extern bool parse_limit_value(const char **value, rlim_t *res); |
28d9e29e CB |
78 | extern int lxc_inherit_namespace(const char *lxcname_or_pid, |
79 | const char *lxcpath, const char *namespace); | |
f6e32eb0 | 80 | extern int sig_parse(const char *signame); |
2ea479c9 | 81 | |
0b843d35 | 82 | #endif /* __LXC_CONFILE_UTILS_H */ |