22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_CONF 26 #include "conf/onwire_xc.h" 44 #define XCAST(xobj) ((struct m0_confx_service *)(&(xobj)->xo_u)) 80 d->xs_type =
s->cs_type;
108 return obj->cs_type == xobj->xs_type &&
118 {
svc->cs_sdevs, &M0_CONF_SERVICE_SDEVS_FID }
127 static const struct m0_fid *rels[] = { &M0_CONF_SERVICE_SDEVS_FID,
139 m0_conf_service_bob_fini(
x);
158 .
ft_id = M0_CONF__SERVICE_FT_ID,
159 .ft_name =
"conf_service" 161 .cot_create = &service_create,
162 .cot_xt = &m0_confx_service_xc,
163 .cot_branch =
"u_service",
164 .cot_xc_init = &m0_xc_m0_confx_service_struct_init,
168 M0_INTERNAL
const char *
171 static const char *names[] = {
172 #define X_CST(name) [name] = #name, 182 #undef M0_TRACE_SUBSYSTEM const struct m0_conf_obj_type * m0_conf_obj_type(const struct m0_conf_obj *obj)
static int service_decode(struct m0_conf_obj *dest, const struct m0_confx_obj *src)
M0_INTERNAL int conf_dirs_lookup(struct m0_conf_obj **out, const struct m0_fid *name, const struct conf_dir_relation *rels, size_t nr_rels)
struct m0_conf_dir * cs_sdevs
static bool service_match(const struct m0_conf_obj *cached, const struct m0_confx_obj *flat)
M0_CONF__INVARIANT_DEFINE(service_invariant, m0_conf_service)
M0_CONF__BOB_DEFINE(m0_conf_service, M0_CONF_SERVICE_MAGIC, service_check)
const struct m0_conf_obj_type M0_CONF_SERVICE_TYPE
bool(* coo_invariant)(const struct m0_conf_obj *obj)
const struct m0_conf_obj_type M0_CONF_SDEV_TYPE
struct m0_bufs xs_endpoints
static const struct m0_fid ** service_downlinks(const struct m0_conf_obj *obj)
M0_INTERNAL bool m0_conf_obj_is_stub(const struct m0_conf_obj *obj)
static int service_encode(struct m0_confx_obj *dest, const struct m0_conf_obj *src)
M0_INTERNAL int m0_conf_dir_new(struct m0_conf_obj *parent, const struct m0_fid *relfid, const struct m0_conf_obj_type *children_type, const struct m0_fid_arr *children_ids, struct m0_conf_dir **out)
return M0_ERR(-EOPNOTSUPP)
const char ** cs_endpoints
static bool m0_conf_service_type_is_valid(enum m0_conf_service_type t)
const struct m0_fid_type cot_ftype
M0_INTERNAL bool m0_bufs_streq(const struct m0_bufs *bufs, const char **strs)
#define M0_CONF_SERVICE_TYPES
M0_INTERNAL const char * m0_conf_service_type2str(enum m0_conf_service_type type)
M0_INTERNAL void m0_bufs_free(struct m0_bufs *bufs)
M0_BASSERT(M0_CAS_GET_FOP_OPCODE==CO_GET+M0_CAS_GET_FOP_OPCODE)
static int service_lookup(const struct m0_conf_obj *parent, const struct m0_fid *name, struct m0_conf_obj **out)
M0_INTERNAL void confx_encode(struct m0_confx_obj *dest, const struct m0_conf_obj *src)
static void service_delete(struct m0_conf_obj *obj)
struct m0_fid_arr xs_sdevs
enum m0_conf_service_type cs_type
#define M0_CONF_CAST(ptr, type)
M0_INTERNAL int arrfid_from_dir(struct m0_fid_arr *dest, const struct m0_conf_dir *dir)
M0_INTERNAL void m0_strings_free(const char **arr)
M0_CONF__CTOR_DEFINE(service_create, m0_conf_service, &service_ops)
static struct m0_net_test_service svc
M0_INTERNAL int m0_bufs_to_strings(const char ***dest, const struct m0_bufs *src)
enum m0_conf_status co_status
static const struct m0_conf_obj_ops service_ops
static bool service_check(const void *bob)
static struct m0_addb2_source * s
M0_INTERNAL bool m0_conf_dir_elems_match(const struct m0_conf_dir *dir, const struct m0_fid_arr *fids)
struct m0_confx_header xs_header
struct m0_pdclust_src_addr src
M0_INTERNAL int m0_bufs_from_strings(struct m0_bufs *dest, const char **src)
#define offsetof(typ, memb)