15#ifndef ZITI_SDK_ZITI_MODEL_H
16#define ZITI_SDK_ZITI_MODEL_H
25#include <netinet/in.h>
29#define ZITI_PROTOCOL_ENUM(XX, ...) \
33#define ZITI_SESSION_TYPE_ENUM(XX, ...) \
34XX(Bind, __VA_ARGS__) \
37#define ZITI_AUTH_QUERY_TYPE_ENUM(XX, ...) \
39XX(TOTP, __VA_ARGS__) \
40XX(EXT_JWT, "EXT-JWT", __VA_ARGS__)
42#define ZITI_POSTURE_QUERY_TYPE_ENUM(XX, ...) \
43XX(PC_Domain, "DOMAIN", __VA_ARGS__) \
44XX(PC_OS, "OS", __VA_ARGS__) \
45XX(PC_Process, "PROCESS", __VA_ARGS__) \
46XX(PC_Process_Multi, "PROCESS_MULTI", __VA_ARGS__) \
47XX(PC_MAC, "MAC", __VA_ARGS__) \
48XX(PC_MFA, "MFA", __VA_ARGS__) \
49XX(PC_Endpoint_State, "ENDPOINT_STATE", __VA_ARGS__)
51#define ZITI_SIGNER_TARGET_TOKEN(XX, ...) \
52XX(access_token, "ACCESS", __VA_ARGS__) \
53XX(id_token, "ID", __VA_ARGS__)
55#define ZITI_TERMINATOR_STRATEGY(XX, ...) \
56 XX(random, __VA_ARGS__) \
57 XX(smartrouting, __VA_ARGS__) \
58 XX(sticky, __VA_ARGS__) \
59 XX(weighted, __VA_ARGS__)
61#define ZITI_JWT_SIGNER_MODEL(XX, ...) \
62XX(id, model_string, none, id, __VA_ARGS__) \
63XX(name, model_string, none, name, __VA_ARGS__) \
64XX(enabled, model_bool, none, enabled, __VA_ARGS__) \
65XX(provider_url, model_string, none, externalAuthUrl, __VA_ARGS__) \
66XX(client_id, model_string, none, clientId, __VA_ARGS__) \
67XX(audience, model_string, none, audience, __VA_ARGS__) \
68XX(scopes, model_string, list, scopes, __VA_ARGS__) \
69XX(target_token, ziti_target_token, none, targetToken, __VA_ARGS__) \
70XX(can_token_enroll, model_bool, none, enrollToTokenEnabled, __VA_ARGS__) \
71XX(can_cert_enroll, model_bool, none, enrollToCertEnabled, __VA_ARGS__)
73#define ZITI_ID_CFG_MODEL(XX, ...) \
74XX(cert, model_string, none, cert, __VA_ARGS__) \
75XX(key, model_string, none, key, __VA_ARGS__) \
76XX(ca, model_string, none, ca, __VA_ARGS__)
78#define ZITI_CONFIG_MODEL(XX, ...) \
79XX(controller_url, model_string, none, ztAPI, __VA_ARGS__) \
80XX(controllers, model_string, list, ztAPIs, __VA_ARGS__) \
81XX(id, ziti_id_cfg, none, id, __VA_ARGS__) \
82XX(cfg_source, model_string, none, , __VA_ARGS__)
84#define ZITI_API_PATH_MODEL(XX, ...) \
85XX(path, model_string, none, path, __VA_ARGS__) \
86XX(base_urls, model_string, array, apiBaseUrls, __VA_ARGS__)
88#define ZITI_API_VERSIONS_MODEL(XX, ...) \
89XX(edge, api_path, map, edge, __VA_ARGS__) \
90XX(oidc, api_path, map, edge-oidc, __VA_ARGS__)
92#define ZITI_CTRL_CAP_ENUM(XX, ...) \
93XX(HA_CONTROLLER, __VA_ARGS__) \
94XX(OIDC_AUTH, __VA_ARGS__)
96#define ZITI_VERSION_MODEL(XX, ...) \
97XX(version, model_string, none, version, __VA_ARGS__) \
98XX(revision, model_string, none, revision, __VA_ARGS__) \
99XX(build_date, model_string, none, buildDate, __VA_ARGS__) \
100XX(capabilities, ziti_ctrl_cap, array, capabilities, __VA_ARGS__) \
101XX(api_versions, ziti_api_versions, ptr, apiVersions, __VA_ARGS__)
103#define ZITI_IDENTITY_MODEL(XX, ...) \
104XX(id, model_string, none, id, __VA_ARGS__) \
105XX(name, model_string, none, name, __VA_ARGS__) \
106XX(app_data, json, map, appData, __VA_ARGS__)
108#define ZITI_PROCESS_MODEL(XX, ...) \
109XX(path, model_string, none, path, __VA_ARGS__)
111#define ZITI_POSTURE_QUERY_MODEL(XX, ...) \
112XX(id, model_string, none, id, __VA_ARGS__) \
113XX(is_passing, model_bool, none, isPassing, __VA_ARGS__) \
114XX(query_type, ziti_posture_query_type, none, queryType, __VA_ARGS__) \
115XX(process, ziti_process, ptr, process, __VA_ARGS__) \
116XX(processes, ziti_process, array, processes, __VA_ARGS__) \
117XX(timeout, model_number, none, timeout, __VA_ARGS__) \
118XX(timeoutRemaining, model_number, ptr, timeoutRemaining, __VA_ARGS__) \
119XX(updated_at,model_string, none, updatedAt, __VA_ARGS__)
121#define ZITI_POSTURE_QUERY_SET_MODEL(XX, ...) \
122XX(policy_id, model_string, none, policyId, __VA_ARGS__) \
123XX(is_passing, model_bool, none, isPassing, __VA_ARGS__) \
124XX(policy_type, model_string, none, policyType, __VA_ARGS__) \
125XX(posture_queries, ziti_posture_query, array, postureQueries, __VA_ARGS__)
127#define ZITI_SERVICE_MODEL(XX, ...) \
128 XX(id, model_string, none, id, __VA_ARGS__) \
129 XX(name, model_string, none, name, __VA_ARGS__) \
130 XX(permissions, ziti_session_type, array, permissions, __VA_ARGS__) \
131 XX(encryption, model_bool, none, encryptionRequired, __VA_ARGS__) \
132 XX(perm_flags, model_number, none, NULL, __VA_ARGS__) \
133 XX(config, json, map, config, __VA_ARGS__) \
134 XX(posture_query_set, ziti_posture_query_set, array, postureQueries, __VA_ARGS__) \
135 XX(posture_query_map, ziti_posture_query_set, map, posturePolicies, __VA_ARGS__) \
136 XX(terminator_strategy, ziti_terminator_strategy, none, terminatorStrategy, __VA_ARGS__) \
137 XX(updated_at,model_string, none, updatedAt, __VA_ARGS__)
139#define ZITI_TERMINATOR_MODEL(XX, ...) \
140XX(identity, model_string, none, identity, __VA_ARGS__) \
141XX(service_id, model_string, none, serviceId, __VA_ARGS__)
143#define ZITI_CLIENT_CFG_V1_MODEL(XX, ...) \
144XX(hostname, ziti_address, none, hostname, __VA_ARGS__) \
145XX(port, model_number, none, port, __VA_ARGS__)
147#define ZITI_PORT_RANGE_MODEL(XX, ...) \
148XX(low, model_number, none, low, __VA_ARGS__) \
149XX(high, model_number, none, high, __VA_ARGS__)
151#define ZITI_INTERCEPT_CFG_V1 "intercept.v1"
152#define ZITI_CLIENT_CFG_V1 "ziti-tunneler-client.v1"
154#define ZITI_INTERCEPT_CFG_V1_MODEL(XX, ...) \
155XX(protocols, ziti_protocol, list, protocols, __VA_ARGS__) \
156XX(addresses, ziti_address, list, addresses, __VA_ARGS__) \
157XX(port_ranges, ziti_port_range, list, portRanges, __VA_ARGS__) \
158XX(dial_options, tag, map, dialOptions, __VA_ARGS__) \
159XX(source_ip, model_string, none, sourceIp, __VA_ARGS__) \
160XX(allowed_source_addresses, ziti_address, list, allowedSourceAddresses, __VA_ARGS__)
162#define ZITI_SERVER_CFG_V1_MODEL(XX, ...) \
163XX(protocol, model_string, none, protocol, __VA_ARGS__) \
164XX(hostname, model_string, none, hostname, __VA_ARGS__) \
165XX(port, model_number, none, port, __VA_ARGS__)
167#define ZITI_L2_INTERCEPT_CFG_V1_MODEL(XX, ...) \
168 XX(ethtypes, model_string, list, ethTypes, __VA_ARGS__) \
169 XX(dial_options, tag, map, dialOptions, __VA_ARGS__)
171#define ZITI_L2_HOST_CFG_V1_MODEL(XX, ...) \
172 XX(bridge_ifs, model_string, list, bridgeIfs, __VA_ARGS__) \
173 XX(listen_options, ziti_listen_options, ptr, listenOptions, __VA_ARGS__)
175#define ZITI_PROXY_SERVER_TYPE_ENUM(XX, ...) \
178#define ZITI_PROXY_SERVER_MODEL(XX, ...) \
179XX(address, model_string, none, address, __VA_ARGS__) \
180XX(type, ziti_proxy_server_type, none, type, __VA_ARGS__)
182#define ZITI_ADDRESS_TRANSLATION_MODEL(XX, ...) \
183XX(from, ziti_address, none, from, __VA_ARGS__) \
184XX(to, ziti_address, none, to, __VA_ARGS__) \
185XX(prefix_length, model_number, none, prefixLength, __VA_ARGS__ )
187#define ZITI_HOST_CFG_V1_MODEL(XX, ...) \
188XX(protocol, model_string, none, protocol, __VA_ARGS__) \
189XX(forward_protocol, model_bool, none, forwardProtocol, __VA_ARGS__) \
190XX(allowed_protocols, model_string, array, allowedProtocols, __VA_ARGS__) \
191XX(address, model_string, none, address, __VA_ARGS__) \
192XX(forward_address, model_bool, none, forwardAddress, __VA_ARGS__) \
193XX(forward_address_translations, ziti_address_translation, array, forwardAddressTranslations, __VA_ARGS__) \
194XX(allowed_addresses, ziti_address, array, allowedAddresses, __VA_ARGS__) \
195XX(port, model_number, none, port, __VA_ARGS__) \
196XX(forward_port, model_bool, none, forwardPort, __VA_ARGS__) \
197XX(allowed_port_ranges, ziti_port_range, array, allowedPortRanges, __VA_ARGS__) \
198XX(allowed_source_addresses, ziti_address, array, allowedSourceAddresses, __VA_ARGS__) \
199XX(proxy, ziti_proxy_server, none, proxy, __VA_ARGS__) \
200XX(listen_options, ziti_listen_options, ptr, listenOptions, __VA_ARGS__)
202#define ZITI_HOST_CFG_V2_MODEL(XX, ...) \
203XX(terminators, ziti_host_cfg_v1, list, terminators, __VA_ARGS__)
205#define ZITI_MFA_ENROLLMENT_MODEL(XX, ...) \
206XX(is_verified, model_bool, none, isVerified, __VA_ARGS__) \
207XX(recovery_codes, model_string, array, recoveryCodes, __VA_ARGS__) \
208XX(provisioning_url, model_string, none, provisioningUrl, __VA_ARGS__)
210#define ZITI_LISTEN_OPTS_MODEL(XX, ...) \
211XX(bind_with_identity, model_bool, none, bindUsingEdgeIdentity, __VA_ARGS__) \
212XX(connect_timeout, duration, none, connectTimeout, __VA_ARGS__) \
213XX(connect_timeout_seconds, model_number, none, connectTimeoutSeconds, __VA_ARGS__) \
214XX(cost, model_number, none, cost, __VA_ARGS__) \
215XX(identity, model_string, none, identity, __VA_ARGS__) \
216XX(max_connections, model_number, none, maxConnections, __VA_ARGS__)\
217XX(precendence, model_string, none, precendence, __VA_ARGS__)
229typedef struct ziti_address_s {
245#ifdef MODEL_VISIBILITY
246#undef MODEL_VISIBILITY
248#define MODEL_VISIBILITY ZITI_FUNC
#define ZITI_FUNC
Definition externs.h:38
bool model_bool
Definition model_support.h:161
#define DECLARE_MODEL(type, model)
Definition model_support.h:89
#define DECLARE_MODEL_FUNCS(T)
Definition model_support.h:95
#define DECLARE_ENUM(Enum, Values)
Definition model_support.h:275
Definition ziti_model.h:282
Definition model_collections.h:97
Definition ziti_model.h:324
Definition ziti_model.h:229
char af
Definition ziti_model.h:233
unsigned int bits
Definition ziti_model.h:234
enum ziti_address_type type
Definition ziti_model.h:230
Definition ziti_model.h:284
Definition ziti_model.h:306
Definition ziti_model.h:292
Definition ziti_model.h:326
Definition ziti_model.h:328
Definition ziti_model.h:290
Definition ziti_model.h:294
Definition ziti_model.h:310
Definition ziti_model.h:288
Definition ziti_model.h:318
Definition ziti_model.h:316
Definition ziti_model.h:312
Definition ziti_model.h:330
Definition ziti_model.h:308
Definition ziti_model.h:300
Definition ziti_model.h:298
Definition ziti_model.h:296
Definition ziti_model.h:322
Definition ziti_model.h:314
Definition ziti_model.h:302
Definition ziti_model.h:304
Definition ziti_model.h:286
#define ZITI_SESSION_TYPE_ENUM(XX,...)
Definition ziti_model.h:33
model_bool ziti_protocol_match(ziti_protocol proto, const model_list *proto_list)
int ziti_service_get_config(const ziti_service *service, const char *cfg_type, void *cfg, parse_service_cfg_f parse_func)
#define ZITI_IDENTITY_MODEL(XX,...)
Definition ziti_model.h:103
#define ZITI_LISTEN_OPTS_MODEL(XX,...)
Definition ziti_model.h:210
ziti_session_type
Definition ziti_model.h:270
#define ZITI_POSTURE_QUERY_MODEL(XX,...)
Definition ziti_model.h:111
#define ZITI_SIGNER_TARGET_TOKEN(XX,...)
Definition ziti_model.h:51
const char * ziti_service_get_raw_config(const ziti_service *service, const char *cfg_type)
#define ZITI_PROTOCOL_ENUM(XX,...)
Definition ziti_model.h:29
int ziti_port_match(int port, const model_list *port_range_list)
int parse_ziti_address_str(ziti_address *addr, const char *addr_str)
int ziti_address_print(char *buf, size_t max, const ziti_address *address)
int ziti_address_match_s(const char *addr, const ziti_address *range)
ziti_auth_query_type
Definition ziti_model.h:272
#define ZITI_API_PATH_MODEL(XX,...)
Definition ziti_model.h:84
int ziti_address_match_list(const ziti_address *addr, const model_list *range)
#define ZITI_PROCESS_MODEL(XX,...)
Definition ziti_model.h:108
#define ZITI_CONFIG_MODEL(XX,...)
Definition ziti_model.h:78
#define ZITI_L2_INTERCEPT_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:167
#define ZITI_POSTURE_QUERY_TYPE_ENUM(XX,...)
Definition ziti_model.h:42
#define ZITI_INTERCEPT_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:154
ziti_ctrl_cap
Definition ziti_model.h:276
#define ZITI_TERMINATOR_STRATEGY(XX,...)
Definition ziti_model.h:55
#define ZITI_TERMINATOR_MODEL(XX,...)
Definition ziti_model.h:139
ziti_posture_query_type
Definition ziti_model.h:274
int ziti_intercept_match2(const ziti_intercept_cfg_v1 *intercept, ziti_protocol proto, const ziti_address *addr, int port)
#define ZITI_AUTH_QUERY_TYPE_ENUM(XX,...)
Definition ziti_model.h:37
#define ZITI_POSTURE_QUERY_SET_MODEL(XX,...)
Definition ziti_model.h:121
#define ZITI_SERVICE_MODEL(XX,...)
Definition ziti_model.h:127
#define ZITI_VERSION_MODEL(XX,...)
Definition ziti_model.h:96
#define ZITI_PROXY_SERVER_MODEL(XX,...)
Definition ziti_model.h:178
ziti_terminator_strategy
Definition ziti_model.h:280
#define ZITI_L2_HOST_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:171
#define ZITI_SERVER_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:162
#define ZITI_PORT_RANGE_MODEL(XX,...)
Definition ziti_model.h:147
#define ZITI_HOST_CFG_V2_MODEL(XX,...)
Definition ziti_model.h:202
#define ZITI_CLIENT_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:143
int ziti_address_match(const ziti_address *addr, const ziti_address *range)
#define ZITI_HOST_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:187
int ziti_intercept_from_client_cfg(ziti_intercept_cfg_v1 *intercept, const ziti_client_cfg_v1 *client_cfg)
#define ZITI_API_VERSIONS_MODEL(XX,...)
Definition ziti_model.h:88
#define ZITI_ID_CFG_MODEL(XX,...)
Definition ziti_model.h:73
ziti_address_type
Definition ziti_model.h:224
@ ziti_address_hostname
Definition ziti_model.h:225
@ ziti_address_cidr
Definition ziti_model.h:226
#define ZITI_JWT_SIGNER_MODEL(XX,...)
Definition ziti_model.h:61
ziti_proxy_server_type
Definition ziti_model.h:320
#define ZITI_ADDRESS_TRANSLATION_MODEL(XX,...)
Definition ziti_model.h:182
#define ZITI_PROXY_SERVER_TYPE_ENUM(XX,...)
Definition ziti_model.h:175
int ziti_intercept_match(const ziti_intercept_cfg_v1 *intercept, ziti_protocol proto, const char *addr, int port)
int ziti_addrstr_match_list(const char *addr, const model_list *range)
int(* parse_service_cfg_f)(void *, const char *, size_t)
Definition ziti_model.h:336
ziti_protocol
Definition ziti_model.h:265
#define ZITI_MFA_ENROLLMENT_MODEL(XX,...)
Definition ziti_model.h:205
ziti_target_token
Definition ziti_model.h:278
#define ZITI_CTRL_CAP_ENUM(XX,...)
Definition ziti_model.h:92
int ziti_address_match_array(const char *addr, ziti_address **range)
model_bool ziti_service_has_permission(const ziti_service *service, ziti_session_type sessionType)