lcr/src/conf.h
2019-12-25 15:51:37 +08:00

111 lines
2.7 KiB
C

/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved.
* lcr licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: wujing
* Create: 2018-11-08
* Description: provide container conf function
******************************************************************************/
#ifndef __LCR_CONF_H
#define __LCR_CONF_H
#include "oci_runtime_spec.h"
#include "lcr_list.h"
#define INVALID_INT 0
/*
* Store lcr configuration
*/
typedef struct {
char *name;
char *value;
} lcr_config_item_t;
/*
* return value:
* 0 is valid item
* 1 will skip this
* -1 is invalid item
* */
typedef int(*lcr_check_item_t)(const char *);
/*
* Store annotations configuration
* */
typedef struct {
char *name;
char *lxc_item_name;
lcr_check_item_t checker;
} lcr_annotation_item_t;
/*
* seccomp trans arch
* */
typedef struct {
char *arch;
char *value;
} lcr_arch_value;
/*
* get host arch
* */
typedef struct {
char *arch;
char *value;
int num;
} lcr_host_arch;
/*
* Create a lcr_list node, and initialize the elem to a lcr_config_item_t with
* key and value
*/
struct lcr_list *create_lcr_list_node(const char *key, const char *value);
/*
* Free a lcr_list node
*/
void free_lcr_list_node(struct lcr_list *node);
/*
* Translate oci hostname to lcr config
*/
struct lcr_list *trans_oci_hostname(const char *hostname);
/*
* Translate oci process struct to lcr config
*/
struct lcr_list *trans_oci_process(const oci_runtime_spec_process *proc);
/*
* Translate oci root struct to lcr config
*/
struct lcr_list *trans_oci_root(const oci_runtime_spec_root *root, const oci_runtime_config_linux *linux);
/*
* Translate oci mounts struct to lcr config
*/
struct lcr_list *trans_oci_mounts(const oci_runtime_spec *c);
/*
* Translate oci linux struct to lcr config
*/
struct lcr_list *trans_oci_linux(const oci_runtime_config_linux *l, char **seccomp_conf);
/*
* Translate oci annotations to lcr config
* This is not supported in standard oci runtime-spec
*/
struct lcr_list *trans_annotations(const json_map_string_string *anno);
/*
* Get other lxc needed configurations
*/
struct lcr_list *get_needed_lxc_conf();
#endif /* __LCR_CONF_H */