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_JWT_SIGNER_MODEL(XX, ...) \
56XX(id, model_string, none, id, __VA_ARGS__) \
57XX(name, model_string, none, name, __VA_ARGS__) \
58XX(enabled, model_bool, none, enabled, __VA_ARGS__) \
59XX(provider_url, model_string, none, externalAuthUrl, __VA_ARGS__) \
60XX(client_id, model_string, none, clientId, __VA_ARGS__) \
61XX(audience, model_string, none, audience, __VA_ARGS__) \
62XX(scopes, model_string, list, scopes, __VA_ARGS__) \
63XX(target_token, ziti_target_token, none, targetToken, __VA_ARGS__)
65#define ZITI_ID_CFG_MODEL(XX, ...) \
66XX(cert, model_string, none, cert, __VA_ARGS__) \
67XX(key, model_string, none, key, __VA_ARGS__) \
68XX(ca, model_string, none, ca, __VA_ARGS__) \
69XX(oidc, ziti_jwt_signer, ptr, oidc, __VA_ARGS__)
71#define ZITI_CONFIG_MODEL(XX, ...) \
72XX(controller_url, model_string, none, ztAPI, __VA_ARGS__) \
73XX(controllers, model_string, list, ztAPIs, __VA_ARGS__) \
74XX(id, ziti_id_cfg, none, id, __VA_ARGS__) \
75XX(cfg_source, model_string, none, , __VA_ARGS__)
77#define ZITI_API_PATH_MODEL(XX, ...) \
78XX(path, model_string, none, path, __VA_ARGS__)
80#define ZITI_API_VERSIONS_MODEL(XX, ...) \
81XX(edge, api_path, map, edge, __VA_ARGS__)
83#define ZITI_CTRL_CAP_ENUM(XX, ...) \
84XX(HA_CONTROLLER, __VA_ARGS__) \
85XX(OIDC_AUTH, __VA_ARGS__)
87#define ZITI_VERSION_MODEL(XX, ...) \
88XX(version, model_string, none, version, __VA_ARGS__) \
89XX(revision, model_string, none, revision, __VA_ARGS__) \
90XX(build_date, model_string, none, buildDate, __VA_ARGS__) \
91XX(capabilities, ziti_ctrl_cap, array, capabilities, __VA_ARGS__) \
92XX(api_versions, ziti_api_versions, ptr, apiVersions, __VA_ARGS__)
94#define ZITI_IDENTITY_MODEL(XX, ...) \
95XX(id, model_string, none, id, __VA_ARGS__) \
96XX(name, model_string, none, name, __VA_ARGS__) \
97XX(app_data, json, map, appData, __VA_ARGS__)
99#define ZITI_PROCESS_MODEL(XX, ...) \
100XX(path, model_string, none, path, __VA_ARGS__)
102#define ZITI_POSTURE_QUERY_MODEL(XX, ...) \
103XX(id, model_string, none, id, __VA_ARGS__) \
104XX(is_passing, model_bool, none, isPassing, __VA_ARGS__) \
105XX(query_type, ziti_posture_query_type, none, queryType, __VA_ARGS__) \
106XX(process, ziti_process, ptr, process, __VA_ARGS__) \
107XX(processes, ziti_process, array, processes, __VA_ARGS__) \
108XX(timeout, model_number, none, timeout, __VA_ARGS__) \
109XX(timeoutRemaining, model_number, ptr, timeoutRemaining, __VA_ARGS__) \
110XX(updated_at,model_string, none, updatedAt, __VA_ARGS__)
112#define ZITI_POSTURE_QUERY_SET_MODEL(XX, ...) \
113XX(policy_id, model_string, none, policyId, __VA_ARGS__) \
114XX(is_passing, model_bool, none, isPassing, __VA_ARGS__) \
115XX(policy_type, model_string, none, policyType, __VA_ARGS__) \
116XX(posture_queries, ziti_posture_query, array, postureQueries, __VA_ARGS__)
118#define ZITI_SERVICE_MODEL(XX, ...) \
119XX(id, model_string, none, id, __VA_ARGS__) \
120XX(name, model_string, none, name, __VA_ARGS__) \
121XX(permissions, ziti_session_type, array, permissions, __VA_ARGS__) \
122XX(encryption, model_bool, none, encryptionRequired, __VA_ARGS__) \
123XX(perm_flags, model_number, none, NULL, __VA_ARGS__) \
124XX(config, json, map, config, __VA_ARGS__) \
125XX(posture_query_set, ziti_posture_query_set, array, postureQueries, __VA_ARGS__) \
126XX(posture_query_map, ziti_posture_query_set, map, posturePolicies, __VA_ARGS__) \
127XX(updated_at,model_string, none, updatedAt, __VA_ARGS__)
129#define ZITI_CLIENT_CFG_V1_MODEL(XX, ...) \
130XX(hostname, ziti_address, none, hostname, __VA_ARGS__) \
131XX(port, model_number, none, port, __VA_ARGS__)
133#define ZITI_PORT_RANGE_MODEL(XX, ...) \
134XX(low, model_number, none, low, __VA_ARGS__) \
135XX(high, model_number, none, high, __VA_ARGS__)
137#define ZITI_INTERCEPT_CFG_V1 "intercept.v1"
138#define ZITI_CLIENT_CFG_V1 "ziti-tunneler-client.v1"
140#define ZITI_INTERCEPT_CFG_V1_MODEL(XX, ...) \
141XX(protocols, ziti_protocol, list, protocols, __VA_ARGS__) \
142XX(addresses, ziti_address, list, addresses, __VA_ARGS__) \
143XX(port_ranges, ziti_port_range, list, portRanges, __VA_ARGS__) \
144XX(dial_options, tag, map, dialOptions, __VA_ARGS__) \
145XX(source_ip, model_string, none, sourceIp, __VA_ARGS__) \
146XX(allowed_source_addresses, ziti_address, list, allowedSourceAddresses, __VA_ARGS__)
148#define ZITI_SERVER_CFG_V1_MODEL(XX, ...) \
149XX(protocol, model_string, none, protocol, __VA_ARGS__) \
150XX(hostname, model_string, none, hostname, __VA_ARGS__) \
151XX(port, model_number, none, port, __VA_ARGS__)
153#define ZITI_PROXY_SERVER_TYPE_ENUM(XX, ...) \
156#define ZITI_PROXY_SERVER_MODEL(XX, ...) \
157XX(address, model_string, none, address, __VA_ARGS__) \
158XX(type, ziti_proxy_server_type, none, type, __VA_ARGS__)
160#define ZITI_HOST_CFG_V1_MODEL(XX, ...) \
161XX(protocol, model_string, none, protocol, __VA_ARGS__) \
162XX(forward_protocol, model_bool, none, forwardProtocol, __VA_ARGS__) \
163XX(allowed_protocols, model_string, array, allowedProtocols, __VA_ARGS__) \
164XX(address, model_string, none, address, __VA_ARGS__) \
165XX(forward_address, model_bool, none, forwardAddress, __VA_ARGS__) \
166XX(allowed_addresses, ziti_address, array, allowedAddresses, __VA_ARGS__) \
167XX(port, model_number, none, port, __VA_ARGS__) \
168XX(forward_port, model_bool, none, forwardPort, __VA_ARGS__) \
169XX(allowed_port_ranges, ziti_port_range, array, allowedPortRanges, __VA_ARGS__) \
170XX(allowed_source_addresses, ziti_address, array, allowedSourceAddresses, __VA_ARGS__) \
171XX(proxy, ziti_proxy_server, none, proxy, __VA_ARGS__) \
172XX(listen_options, ziti_listen_options, ptr, listenOptions, __VA_ARGS__)
174#define ZITI_HOST_CFG_V2_MODEL(XX, ...) \
175XX(terminators, ziti_host_cfg_v1, list, terminators, __VA_ARGS__)
177#define ZITI_MFA_ENROLLMENT_MODEL(XX, ...) \
178XX(is_verified, model_bool, none, isVerified, __VA_ARGS__) \
179XX(recovery_codes, model_string, array, recoveryCodes, __VA_ARGS__) \
180XX(provisioning_url, model_string, none, provisioningUrl, __VA_ARGS__)
182#define ZITI_LISTEN_OPTS_MODEL(XX, ...) \
183XX(bind_with_identity, model_bool, none, bindUsingEdgeIdentity, __VA_ARGS__) \
184XX(connect_timeout, duration, none, connectTimeout, __VA_ARGS__) \
185XX(connect_timeout_seconds, model_number, none, connectTimeoutSeconds, __VA_ARGS__) \
186XX(cost, model_number, none, cost, __VA_ARGS__) \
187XX(identity, model_string, none, identity, __VA_ARGS__) \
188XX(max_connections, model_number, none, maxConnections, __VA_ARGS__)\
189XX(precendence, model_string, none, precendence, __VA_ARGS__)
201typedef struct ziti_address_s {
220#define MODEL_API ZITI_FUNC
#define ZITI_FUNC
Definition externs.h:38
bool model_bool
Definition model_support.h:152
#define DECLARE_MODEL(type, model)
Definition model_support.h:80
#define DECLARE_MODEL_FUNCS(T)
Definition model_support.h:86
#define DECLARE_ENUM(Enum, Values)
Definition model_support.h:266
Definition ziti_model.h:252
Definition model_collections.h:97
Definition ziti_model.h:201
char af
Definition ziti_model.h:205
unsigned int bits
Definition ziti_model.h:206
enum ziti_address_type type
Definition ziti_model.h:202
Definition ziti_model.h:254
Definition ziti_model.h:274
Definition ziti_model.h:262
Definition ziti_model.h:288
Definition ziti_model.h:290
Definition ziti_model.h:260
Definition ziti_model.h:264
Definition ziti_model.h:278
Definition ziti_model.h:258
Definition ziti_model.h:280
Definition ziti_model.h:292
Definition ziti_model.h:276
Definition ziti_model.h:270
Definition ziti_model.h:268
Definition ziti_model.h:266
Definition ziti_model.h:286
Definition ziti_model.h:282
Definition ziti_model.h:272
Definition ziti_model.h:256
#define ZITI_SESSION_TYPE_ENUM(XX,...)
Definition ziti_model.h:33
model_bool ziti_protocol_match(ziti_protocol proto, const model_list *proto_list)
#define ZITI_IDENTITY_MODEL(XX,...)
Definition ziti_model.h:94
#define ZITI_LISTEN_OPTS_MODEL(XX,...)
Definition ziti_model.h:182
ziti_session_type
Definition ziti_model.h:242
#define ZITI_POSTURE_QUERY_MODEL(XX,...)
Definition ziti_model.h:102
#define ZITI_SIGNER_TARGET_TOKEN(XX,...)
Definition ziti_model.h:51
#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:244
#define ZITI_API_PATH_MODEL(XX,...)
Definition ziti_model.h:77
int ziti_address_match_list(const ziti_address *addr, const model_list *range)
#define ZITI_PROCESS_MODEL(XX,...)
Definition ziti_model.h:99
#define ZITI_CONFIG_MODEL(XX,...)
Definition ziti_model.h:71
#define ZITI_POSTURE_QUERY_TYPE_ENUM(XX,...)
Definition ziti_model.h:42
#define ZITI_INTERCEPT_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:140
ziti_ctrl_cap
Definition ziti_model.h:248
ziti_posture_query_type
Definition ziti_model.h:246
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:112
#define ZITI_SERVICE_MODEL(XX,...)
Definition ziti_model.h:118
#define ZITI_VERSION_MODEL(XX,...)
Definition ziti_model.h:87
#define ZITI_PROXY_SERVER_MODEL(XX,...)
Definition ziti_model.h:156
const char * ziti_service_get_raw_config(ziti_service *service, const char *cfg_type)
int ziti_service_get_config(ziti_service *service, const char *cfg_type, void *cfg, parse_service_cfg_f parse_func)
#define ZITI_SERVER_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:148
#define ZITI_PORT_RANGE_MODEL(XX,...)
Definition ziti_model.h:133
#define ZITI_HOST_CFG_V2_MODEL(XX,...)
Definition ziti_model.h:174
#define ZITI_CLIENT_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:129
int ziti_address_match(const ziti_address *addr, const ziti_address *range)
#define ZITI_HOST_CFG_V1_MODEL(XX,...)
Definition ziti_model.h:160
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:80
#define ZITI_ID_CFG_MODEL(XX,...)
Definition ziti_model.h:65
ziti_address_type
Definition ziti_model.h:196
@ ziti_address_hostname
Definition ziti_model.h:197
@ ziti_address_cidr
Definition ziti_model.h:198
#define ZITI_JWT_SIGNER_MODEL(XX,...)
Definition ziti_model.h:55
ziti_proxy_server_type
Definition ziti_model.h:284
#define ZITI_PROXY_SERVER_TYPE_ENUM(XX,...)
Definition ziti_model.h:153
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:298
ziti_protocol
Definition ziti_model.h:237
#define ZITI_MFA_ENROLLMENT_MODEL(XX,...)
Definition ziti_model.h:177
ziti_target_token
Definition ziti_model.h:250
#define ZITI_CTRL_CAP_ENUM(XX,...)
Definition ziti_model.h:83
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)