Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/avahi-ui/../libnwam.h
Real path: /usr/include/libnwam.h
Zurück
/* * Copyright (c) 2008, 2020, Oracle and/or its affiliates. */ /* * This file contains data structures and APIs of libnwam. * Implementation is MT safe. */ #ifndef _LIBNWAM_H #define _LIBNWAM_H #ifdef __cplusplus extern "C" { #endif #include <bsm/adt.h> #include <net/if.h> #include <inet/ip.h> #include <inet/ip6.h> #include <sys/types.h> /* * Common definitions */ /* nwam FMRI and properties */ #define NP_DEFAULT_FMRI "svc:/network/physical:default" /* Tell destroy functions not to free handle */ #define NWAM_FLAG_DO_NOT_FREE 0x00000001 /* flag 0x00000002 is defined in libnwam_priv.h */ /* flags used for selecting activation for walk */ #define NWAM_FLAG_ACTIVATION_MODE_MANUAL 0x000000001ULL << 32 #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY 0x000000002ULL << 32 #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL 0x000000004ULL << 32 #define NWAM_FLAG_ACTIVATION_MODE_ALL (NWAM_FLAG_ACTIVATION_MODE_MANUAL |\ NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\ NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL) /* nwam return codes */ typedef enum { NWAM_SUCCESS, /* No error occurred */ NWAM_LIST_END, /* End of list reached */ NWAM_INVALID_ARG, /* Argument is invalid */ NWAM_PERMISSION_DENIED, /* Insufficient privileges for action */ NWAM_NO_MEMORY, /* Out of memory */ NWAM_ENTITY_EXISTS, /* Entity already exists */ NWAM_ENTITY_IN_USE, /* Entity in use */ NWAM_ENTITY_ENABLED, /* Entity already enabled */ NWAM_ENTITY_DISABLED, /* Entity already disabled */ NWAM_ENTITY_NOT_FOUND, /* Entity not found */ NWAM_ENTITY_TYPE_MISMATCH, /* Entity type mismatch */ NWAM_ENTITY_INVALID_VALUE, /* Validation of entity value failed */ NWAM_ENTITY_MISSING_MEMBER, /* Required member is missing */ NWAM_ENTITY_NO_VALUE, /* No value associated with entity */ NWAM_ENTITY_MULTIPLE_VALUES, /* Multiple values for entity */ NWAM_ENTITY_READ_ONLY, /* Entity is marked read only */ NWAM_ENTITY_NOT_MANUAL, /* Entity cannot be manually enabled/disabled */ NWAM_WALK_HALTED, /* Callback function returned nonzero */ NWAM_ERROR_NWAMD_BIND, /* nwamd is not running */ NWAM_ERROR_INTERNAL /* Internal error */ } nwam_error_t; #define NWAM_MAX_NAME_LEN MAXNAMELEN #define NWAM_MAX_VALUE_LEN 256 #define NWAM_MAX_NUM_VALUES 32 /* used for getting and setting of properties */ typedef enum { NWAM_VALUE_TYPE_BOOLEAN, NWAM_VALUE_TYPE_INT64, NWAM_VALUE_TYPE_UINT64, NWAM_VALUE_TYPE_STRING, NWAM_VALUE_TYPE_UNKNOWN } nwam_value_type_t; /* Holds values of various types for getting and setting of properties */ /* Forward definition */ struct nwam_value; typedef struct nwam_value *nwam_value_t; /* Value-related functions. */ extern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *); extern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t, nwam_value_t *); extern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *); extern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t, nwam_value_t *); extern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *); extern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t, nwam_value_t *); extern nwam_error_t nwam_value_create_string(char *, nwam_value_t *); extern nwam_error_t nwam_value_create_string_array(char **, uint_t, nwam_value_t *); extern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *); extern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **, uint_t *); extern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *); extern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **, uint_t *); extern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *); extern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **, uint_t *); extern nwam_error_t nwam_value_get_string(nwam_value_t, char **); extern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***, uint_t *); extern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *); extern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *); extern void nwam_value_free(nwam_value_t); extern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t, const char **); extern nwam_error_t nwam_value_string_get_uint64(const char *, const char *, uint64_t *); /* * To retrieve a localized error string */ extern const char *nwam_strerror(nwam_error_t); /* * State and auxiliary state describe the state of ENMs. */ typedef enum { NWAM_STATE_UNINITIALIZED = 0x0, NWAM_STATE_INITIALIZED = 0x1, NWAM_STATE_OFFLINE = 0x2, NWAM_STATE_OFFLINE_TO_ONLINE = 0x4, NWAM_STATE_ONLINE_TO_OFFLINE = 0x8, NWAM_STATE_ONLINE = 0x10, NWAM_STATE_MAINTENANCE = 0x20, NWAM_STATE_DISABLED = 0x40 } nwam_state_t; #define NWAM_STATE_ANY (NWAM_STATE_UNINITIALIZED | \ NWAM_STATE_INITIALIZED | \ NWAM_STATE_OFFLINE | \ NWAM_STATE_OFFLINE_TO_ONLINE | \ NWAM_STATE_ONLINE_TO_OFFLINE | \ NWAM_STATE_ONLINE | \ NWAM_STATE_MAINTENANCE | \ NWAM_STATE_DISABLED) /* * The auxiliary state denotes specific reasons why an object is in a * particular state (e.g. "script failed", "disabled by administrator"). */ typedef enum { /* General auxiliary states */ NWAM_AUX_STATE_UNINITIALIZED, NWAM_AUX_STATE_INITIALIZED, NWAM_AUX_STATE_CONDITIONS_NOT_MET, NWAM_AUX_STATE_MANUAL_DISABLE, NWAM_AUX_STATE_METHOD_FAILED, NWAM_AUX_STATE_METHOD_MISSING, NWAM_AUX_STATE_METHOD_RUNNING, NWAM_AUX_STATE_INVALID_CONFIG, NWAM_AUX_STATE_ACTIVE, NWAM_AUX_STATE_DOWN } nwam_aux_state_t; /* * Activation modes * Keep the numbering same as in Highlander because ENMs use these values. */ typedef enum { NWAM_ACTIVATION_MODE_MANUAL = 0, NWAM_ACTIVATION_MODE_CONDITIONAL_ANY = 2, NWAM_ACTIVATION_MODE_CONDITIONAL_ALL = 3 } nwam_activation_mode_t; /* * Conditions are of the form * * link|interface|enm name is|is-not active * ip-address is|is-not|is-in-range|is-not-in-range ipaddr[/prefixlen] * advertised-domain is|is-not|contains|does-not-contain string * system-domain is|is-not|contains|does-not-contain string * essid is|is-not|contains|does-not-contain string * bssid is|is-not <string> */ typedef enum { NWAM_CONDITION_IS, NWAM_CONDITION_IS_NOT, NWAM_CONDITION_IS_IN_RANGE, NWAM_CONDITION_IS_NOT_IN_RANGE, NWAM_CONDITION_CONTAINS, NWAM_CONDITION_DOES_NOT_CONTAIN } nwam_condition_t; typedef enum { NWAM_CONDITION_OBJECT_TYPE_LINK, NWAM_CONDITION_OBJECT_TYPE_INTERFACE, NWAM_CONDITION_OBJECT_TYPE_ENM, NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS, NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN, NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN, NWAM_CONDITION_OBJECT_TYPE_ESSID, NWAM_CONDITION_OBJECT_TYPE_BSSID } nwam_condition_object_type_t; /* * Activation condition-related functions that convert activation * values to an appropriate string and back. */ extern nwam_error_t nwam_condition_string_to_condition(const char *, nwam_condition_object_type_t *, nwam_condition_t *, char **); /* Forward definition */ struct nwam_handle; /* * ENM definitions */ typedef struct nwam_handle *nwam_enm_handle_t; #define NWAM_ENM_PROP_ACTIVATION_MODE "activation-mode" #define NWAM_ENM_PROP_CONDITIONS "conditions" #define NWAM_ENM_PROP_ENABLED "enabled" /* FMRI associated with ENM */ #define NWAM_ENM_PROP_FMRI "fmri" /* Start/stop scripts associated with ENM */ #define NWAM_ENM_PROP_START "start" #define NWAM_ENM_PROP_STOP "stop" /* ENM functions */ /* * Obtain a specific enm handle, either be creating a new enm * or reading an existing one from persistent storage. */ extern nwam_error_t nwam_enm_create(const char *, const char *, nwam_enm_handle_t *); extern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *); /* Make a copy of existing enm */ extern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *, nwam_enm_handle_t *); /* * Obtain handles for all existing enms. Caller-specified callback * function will be called once for each enm, passing the handle and * the caller-specified arg. */ extern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *, uint64_t, int *); /* Commit an enm to persistent storage. Does not free the handle. */ extern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t); /* Remove an enm from persistent storage */ extern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t); /* Free an enm handle */ extern void nwam_enm_free(nwam_enm_handle_t); /* * Validate an enm, or a specific enm property. If validating * an entire enm, the invalid property type is returned. */ extern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **); extern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *, nwam_value_t); /* Retrieve data type */ extern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *); /* Retrieve prop description */ extern nwam_error_t nwam_enm_get_prop_description(const char *, const char **); /* Delete/get/set enm property values */ extern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t, const char *, uint64_t); extern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t, const char *, nwam_value_t *); extern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t, const char *, nwam_value_t, uint64_t); extern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *); /* Get the read-only value for a particular ENM property */ extern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *); /* Whether the property is multi-valued or not */ extern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *); /* * Walk all properties of a specific enm. For each property, specified * callback function is called. Caller is responsible for freeing memory * allocated for each property. */ extern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t, int (*)(const char *, nwam_value_t, void *), void *, uint64_t, int *); /* * Get the name of an enm. Caller is responsible for freeing the memory * allocated for the name. */ extern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **); /* Start/stop an enm */ extern nwam_error_t nwam_enm_enable(nwam_enm_handle_t); extern nwam_error_t nwam_enm_disable(nwam_enm_handle_t); /* Get state of ENM from nwamd */ extern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *, nwam_aux_state_t *); /* Get whether the ENM has manual activation-mode or not */ extern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *); /* * Event notification definitions */ #define NWAM_EVENT_TYPE_NOOP 0 #define NWAM_EVENT_TYPE_INIT 1 #define NWAM_EVENT_TYPE_SHUTDOWN 2 #define NWAM_EVENT_TYPE_OBJECT_ACTION 3 #define NWAM_EVENT_TYPE_OBJECT_STATE 4 #define NWAM_EVENT_TYPE_IF_STATE 5 #define NWAM_EVENT_MAX NWAM_EVENT_TYPE_IF_STATE /* * Actions for nwamd to perform, used in conjunction with * nwam_request_type_t in nwam_door_arg_t. * Add string representations to nwam_action_to_string() in libnwam_util.c. */ typedef enum { NWAM_ACTION_UNKNOWN = -1, NWAM_ACTION_ADD, NWAM_ACTION_REFRESH, NWAM_ACTION_DESTROY, NWAM_ACTION_ENABLE, NWAM_ACTION_DISABLE, NWAM_ACTION_WIFI_DISCONNECT } nwam_action_t; typedef enum { NWAM_OBJECT_TYPE_UNKNOWN = -1, NWAM_OBJECT_TYPE_LINK = 0, NWAM_OBJECT_TYPE_INTERFACE = 1, NWAM_OBJECT_TYPE_ENM = 2 } nwam_object_type_t; typedef struct nwam_event *nwam_event_t; struct nwam_event { int nwe_type; uint32_t nwe_size; union { struct nwam_event_object_action { nwam_object_type_t nwe_object_type; nwam_action_t nwe_action; char nwe_name[NWAM_MAX_NAME_LEN]; } nwe_object_action; struct nwam_event_object_state { nwam_object_type_t nwe_object_type; char padding[4]; char nwe_name[NWAM_MAX_NAME_LEN]; nwam_state_t nwe_state; nwam_aux_state_t nwe_aux_state; } nwe_object_state; struct nwam_event_if_state { char nwe_name[NWAM_MAX_NAME_LEN]; uint32_t nwe_flags; boolean_t nwe_addr_valid; boolean_t nwe_addr_added; char padding[4]; struct sockaddr_storage nwe_addr; struct sockaddr_storage nwe_netmask; } nwe_if_state; } nwe_data; }; /* NWAM client functions, used to register/unregister and receive events */ extern nwam_error_t nwam_events_init(void); extern void nwam_events_fini(void); extern nwam_error_t nwam_event_wait(nwam_event_t *); extern void nwam_event_free(nwam_event_t); /* Event-related string conversion functions */ extern const char *nwam_action_to_string(nwam_action_t); extern const char *nwam_event_type_to_string(int); extern const char *nwam_state_to_string(nwam_state_t); extern const char *nwam_aux_state_to_string(nwam_aux_state_t); extern const char *nwam_object_type_to_string(nwam_object_type_t); extern nwam_object_type_t nwam_string_to_object_type(const char *); /* Send an nwam action to nwamd door, used by libdladm and libipadm */ extern void nwam_external_action(nwam_object_type_t, const char *, nwam_action_t); #ifdef __cplusplus } #endif #endif /* _LIBNWAM_H */