Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/vorbis/../libevs.h
Real path: /usr/include/libevs.h
Zurück
/* * Copyright (c) 2013, 2020, Oracle and/or its affiliates. */ #ifndef _LIBEVS_H #define _LIBEVS_H #include <libdladm.h> #include <netdb.h> #include <sys/mac.h> #include <sys/types.h> #include <sys/list.h> #include <sys/param.h> #include <uuid/uuid.h> #include <rad/radclient.h> #include <sqlite3.h> #include <rad/client/1/evscntl.h> #ifdef __cplusplus extern "C" { #endif /* Global tenant */ #define EVS_SYSTEM_TENANTNAME "sys-global" /* flags for vport creation */ #define EVS_SYS_OBJECT 0x00000001 #define EVS_TENANTNAME_MAX 128 #define EVS_EVSNAME_MAX 128 #define EVS_VPORTNAME_MAX 128 #define EVS_EVSVPORTNAME_MAX (EVS_EVSNAME_MAX + EVS_VPORTNAME_MAX) #define EVS_STRBUF_MAX 1024 #define EVS_SQLSTR_MAX 2048 #define EVS_IPNETNAME_MAX 128 #define EVS_MACADDRSTR_MAX 18 #define EVS_ALLOWEDADDRS_NUM 3 #define EVS_ALLOWEDADDRS_MAX EVS_ALLOWEDADDRS_NUM * INET6_ADDRSTRLEN #define EVS_RANGESTR_MAX 8192 #define EVS_PROPNAME_MAX 32 #define EVS_DB_ORD SQLITE_OPEN_READONLY #define EVS_DB_ORW SQLITE_OPEN_READWRITE #define EVS_STATQUERY_TIMEOUT 5 /* extended error codes */ #define EVS_EXTENDED_ERRCODE(evserr, oerr) \ (((oerr) << 8) | ((evserr) & 0x000000FF)) /* * When adding a new error code please maintain the existing order and add * the error code before EVS_ERRMAX. Add a entry to evs_errlist[] array as-well. */ enum { EVS_SUCCESS = 0, EVS_FAILURE, EVS_CONTINUE, EVS_EAUTH, EVS_EBUSY_IPADDR, EVS_EBUSY_IPNET, EVS_EBUSY_MACADDR, EVS_EBUSY_VPORT, EVS_ECOMPAT_ADDR, EVS_ECOMPAT_IPVERS, EVS_ECOMPAT_L2TYPE, /* error code - 10 */ EVS_ECOMPAT_MGROUP, EVS_ECOMPAT_DBVERS, EVS_EEXISTS, EVS_EINVAL, EVS_EINVAL_CNTLPROP, EVS_EINVAL_COS, EVS_EINVAL_HOSTNAME, EVS_EINVAL_IPADDR, EVS_EINVAL_IPNET, EVS_EINVAL_IPRANGE, /* error code - 20 */ EVS_EINVAL_IPVERS, EVS_EINVAL_L2TYPE, EVS_EINVAL_LADDR, EVS_EINVAL_MACADDR, EVS_EINVAL_MAXBW, EVS_EINVAL_MGROUP, EVS_EINVAL_NAME, EVS_EINVAL_PRIORITY, EVS_EINVAL_PROP, EVS_EINVAL_RADURI, /* error code - 30 */ EVS_EINVAL_RANGE, EVS_EINVAL_SUBNET, EVS_EINVAL_UPORT, EVS_EINVAL_VLANIDRANGE, EVS_EINVAL_VLANID, EVS_EINVAL_VNI, EVS_ELIBDLADM, EVS_ELIBIPADM, EVS_ELOOKUP_HOSTNAME, EVS_ENOBUFS, /* error code - 40 */ EVS_ENOENT_EVS, EVS_ENOENT_IPNET, EVS_ENOENT_VPORT, EVS_ENOENT, EVS_ENOMEM, EVS_ENOOVERLAP_RANGE, EVS_ENORSRC, EVS_ENORSRC_VLANID, EVS_ENORSRC_VNI, EVS_ENOTSUP_RADURI, /* error code - 50 */ EVS_ENOTSUP, EVS_EOVERLAP_IPNET, EVS_EOVERFLOW_IPNET, EVS_EPARTIAL_PROP, EVS_EPERM, EVS_ERDONLY_PROP, EVS_ERAD, EVS_ERAD_ECONCNTL, EVS_ERAD_ECONHOST, EVS_ERANDOM, /* error code - 60 */ EVS_EREQ_ARGS, EVS_EREQ_UPLINK, EVS_ESCF, EVS_ESQL, EVS_ESYS, EVS_ETIMEDOUT_REMOTE, EVS_EUNAVAIL_VLANID, EVS_EUNAVAIL_VNI, EVS_EUUID, EVS_EINVAL_POOL, /* error code - 70 */ EVS_EEXCL_RSC, EVS_EEXCL_DEFROUTER, EVS_EINVAL_PROTECTION, EVS_EINVAL_SUBRANGE, EVS_EOVERLAP_RANGE, EVS_WPARTIAL_RANGE, EVS_WRANGE_NEED_UPDATE, EVS_EINVAL_URI_TEMPLATE, EVS_EINVAL_FILTER_NAME, EVS_EINVAL_UPORT_PCOMB, /* error code - 80 */ EVS_EINVAL_VXADDR_PCOMB, EVS_ERRMAX }; /* The type of object (EVS, VPort, IPnet) */ typedef enum { EVS_TYPE_EVS, EVS_TYPE_VPORT, EVS_TYPE_IPNET } evs_type_t; /* The type of property (EVS, vport, or ipnet) */ typedef enum { EVS_PROPTYPE_EVS = 0x1, EVS_PROPTYPE_VPORT = 0x2, EVS_PROPTYPE_IPNET = 0x4 } evs_proptype_t; /* The type of L2 network (VLAN, VXLAN, or FLAT) */ typedef enum { EVS_L2NTYPE_UNKNOWN = 0, EVS_L2NTYPE_VLAN, EVS_L2NTYPE_VXLAN, EVS_L2NTYPE_FLAT } evs_l2ntype_t; typedef enum { VPORT_STATUS_FREE = 0, VPORT_STATUS_USED = 1 } vport_status_t; typedef enum { EVS_STATUS_IDLE = 0, EVS_STATUS_BUSY = 1 } evs_status_t; typedef struct evs_ipnet_s { list_node_t ei_node; char ei_tenantname[EVS_TENANTNAME_MAX]; char ei_evsname[EVS_EVSNAME_MAX]; uuid_t ei_evsuuid; char ei_name[EVS_IPNETNAME_MAX]; uuid_t ei_uuid; nvlist_t *ei_props; sa_family_t ei_af; char ei_subnet[INET6_ADDRSTRLEN + 4]; uint32_t ei_prefixlen; char ei_sastr[INET6_ADDRSTRLEN]; char ei_eastr[INET6_ADDRSTRLEN]; char *ei_availrange; struct sockaddr_storage ei_ca; struct sockaddr_storage ei_sa; struct sockaddr_storage ei_ea; } evs_ipnet_t; typedef struct evs_prop_s { list_node_t ep_node; char ep_propname[EVS_PROPNAME_MAX]; char ep_perm[3]; char *ep_current; char ep_default[EVS_STRBUF_MAX]; char ep_possible[EVS_STRBUF_MAX]; } evs_prop_t; typedef struct evs_vport_s { list_node_t evp_node; char evp_tenantname[EVS_TENANTNAME_MAX]; char evp_evsname[EVS_EVSNAME_MAX]; uuid_t evp_evsuuid; char evp_name[EVS_VPORTNAME_MAX]; uuid_t evp_uuid; nvlist_t *evp_props; vport_status_t evp_status; char evp_vnicname[MAXLINKNAMESPECIFIER]; char evp_hostname[NI_MAXHOST]; } evs_vport_t; typedef struct evs_s { list_node_t evs_node; char evs_tenantname[EVS_TENANTNAME_MAX]; char evs_name[EVS_EVSNAME_MAX]; uuid_t evs_uuid; nvlist_t *evs_props; list_t evs_ipnets; list_t evs_ports; evs_status_t evs_status; char evs_uport[MAXLINKNAMELEN]; char evs_localaddr[INET6_ADDRSTRLEN + 4]; char evs_mgroup[INET6_ADDRSTRLEN + 4]; char evs_ipvers[3]; } evs_t; typedef struct evs_smfprop_s { list_node_t esp_node; char esp_propname[EVS_PROPNAME_MAX]; char esp_propval[EVS_STRBUF_MAX]; char esp_defvalue[EVS_STRBUF_MAX]; char esp_perm[3]; } evs_smfprop_t; typedef struct evs_ctrlprop_s { list_node_t ecp_node; char ecp_propname[EVS_PROPNAME_MAX]; char *ecp_propval; char ecp_defvalue[EVS_STRBUF_MAX]; char ecp_host[MAXHOSTNAMELEN]; char ecp_perm[3]; char *ecp_vlanrange; char *ecp_vxlanrange; char *ecp_flatrange; } evs_ctrlprop_t; struct evs_dbhandle; typedef struct evs_dbhandle *evs_dbhandle_t; /* db related APIs */ extern boolean_t evs_db_exists(void); extern int evs_db_upgrade(void); extern int evs_db_create(void); extern int evs_db_open(evs_dbhandle_t *, int); extern void evs_db_close(evs_dbhandle_t); extern int evs_db_add_vport(evs_dbhandle_t, const char *, const char *, const char *, const char *, evs_vport_t **, uint32_t); extern int evs_db_remove_vport(evs_dbhandle_t, const char *, const char *, const char *, const char *, uint32_t); extern int evs_db_reset_vport(evs_dbhandle_t, const char *, const char *, const char *, const char *, uint32_t); extern int evs_db_add_system_vport(evs_dbhandle_t, const char *, const char *, char *); extern int evs_db_remove_system_vport(evs_dbhandle_t, const char *, const char *, const char *); extern int evs_db_get_filtered_vportlist(evs_dbhandle_t, const char *, list_t *, uint32_t); extern void evs_free_vport(evs_vport_t *); extern void evs_free_vportlist(void *); extern int evs_db_get_filtered_evslist(evs_dbhandle_t, const char *, list_t *, uint32_t); extern int evs_db_get_evsvport(evs_dbhandle_t, const char *, const char *, const char *, evs_t **); extern int evs_db_get_evslist(evs_dbhandle_t, const char *, const char *, list_t *, uint32_t); extern void evs_free_evs(evs_t *); extern void evs_free_evslist(void *); extern int evs_db_create_evs(evs_dbhandle_t, const char *, const char *, const char *, uint32_t, evs_t **); extern int evs_db_delete_evs(evs_dbhandle_t, const char *, const char *, uint32_t); extern boolean_t evs_db_vport_exists(evs_dbhandle_t, const char *, const char *, const char *); extern boolean_t evs_db_evs_exists(evs_dbhandle_t, const char *, const char *); extern int evs_db_assign_vport(evs_dbhandle_t, const char *, const char *, const char *, const char *, const char *, const char *, evs_t **); extern int evs_db_unassign_vport(evs_dbhandle_t, const char *, const char *, const char *); extern boolean_t evs_db_ipnet_exists(evs_dbhandle_t, const char *, const char *); extern int evs_db_add_ipnet(evs_dbhandle_t, const char *, const char *, const char *, const char *, evs_ipnet_t **, uint32_t); extern int evs_db_remove_ipnet(evs_dbhandle_t, const char *, const char *, const char *, uint32_t); extern int evs_db_get_filtered_ipnetlist(evs_dbhandle_t, const char *, list_t *, uint32_t); extern int evs_db_get_ipnetlist(evs_dbhandle_t, const char *, const char *, const char *, list_t *, uint32_t); extern void evs_free_ipnetlist(void *); extern void evs_free_ipnet(evs_ipnet_t *); extern int evs_db_get_filtered_proplist(evs_dbhandle_t, const char *, const char *, list_t *, evs_proptype_t); extern void evs_free_prop(evs_prop_t *); extern void evs_free_proplist(void *); extern int evs_db_get_ctrlprop(evs_dbhandle_t, const char *, const char *, list_t *); extern int evs_db_set_ctrlprop(evs_dbhandle_t, const char *, const char *); extern void evs_free_ctrlproplist(list_t *); /* EVS consumers APIs */ extern int evs_rad_connection_to_controller(rc_conn_t **); extern int evs_rad_connection_to_evsnode(evs_dbhandle_t, const char *, rc_conn_t **); extern int evs_connect_vnic(dladm_handle_t, const char *, const char *, const char *, const char *, dladm_arg_list_t **, const char *, datalink_id_t *, evscntl_EVSImplInfo_t **, uint32_t); extern int evs_disconnect_vnic(dladm_handle_t, const char *, const char *, datalink_id_t, uint32_t); extern int evs_get_vnicinfo(const char *, evscntl_VPortInfo_t ***, int *); /* Client and Controller configuration */ extern int evs_set_client_smfprop(const char *); extern int evs_get_client_smfprop(const char *, list_t *); extern void evs_free_smfproplist(list_t *); extern int evs_set_controller_smfprop(const char *, const char *); extern int evs_get_controller_smfprop(const char *, char *, size_t); /* host related APIs */ extern int evs_set_vportprop(evs_dbhandle_t, const char *, const char *, const char *, const char *, uint32_t); extern int evs_set_evsprop(evs_dbhandle_t, const char *, const char *, const char *, uint32_t); extern int evs_set_ipnetprop(evs_dbhandle_t, const char *, const char *, const char *, const char *, uint32_t); /* utility APIs */ extern const char *evs_errmsg(int err, char *, uint_t); extern boolean_t evs_valid_name(const char *); extern boolean_t evs_valid_address(const char *); extern boolean_t evs_valid_zonevnicname(const char *); extern boolean_t evs_address_unspecified(const char *); extern int evs_list_count(list_t *); extern int evs_str2nvlist(const char *, nvlist_t **, boolean_t, int); extern int evs_nvlist2str(nvlist_t *, char **); extern int evs_nvl_count(nvlist_t *); extern nvlist_t *evs_create_nvl(int, ...); extern boolean_t evs_parse_evsvportname(const char *, char *, char *); extern boolean_t evs_parse_evsipnetname(const char *, char *, char *); extern int evs_create_nvstr(char *, size_t, const char *, int, ...); extern int evs_parse_name(const char *, boolean_t *); extern char *evs_propnvl_lookup(evscntl_PropertyNV_t **, int, const char *); extern int evs_str2int(const char *, int *); extern boolean_t evs_is_system_vport(const char *); extern void evs_filterstr2regex(char *); extern void evs_str2ntype(char *, evs_l2ntype_t *); extern int evs_get_hostname(char *, uint_t); extern int evs_validate_filterstr(const char *, evs_type_t, evs_proptype_t); #ifdef __cplusplus } #endif #endif /* _LIBEVS_H */