1b00044a2SJames Carlson /* 2b00044a2SJames Carlson * CDDL HEADER START 3b00044a2SJames Carlson * 4b00044a2SJames Carlson * The contents of this file are subject to the terms of the 5b00044a2SJames Carlson * Common Development and Distribution License (the "License"). 6b00044a2SJames Carlson * You may not use this file except in compliance with the License. 7b00044a2SJames Carlson * 8b00044a2SJames Carlson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9b00044a2SJames Carlson * or http://www.opensolaris.org/os/licensing. 10b00044a2SJames Carlson * See the License for the specific language governing permissions 11b00044a2SJames Carlson * and limitations under the License. 12b00044a2SJames Carlson * 13b00044a2SJames Carlson * When distributing Covered Code, include this CDDL HEADER in each 14b00044a2SJames Carlson * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15b00044a2SJames Carlson * If applicable, add the following below this CDDL HEADER, with the 16b00044a2SJames Carlson * fields enclosed by brackets "[]" replaced with your own identifying 17b00044a2SJames Carlson * information: Portions Copyright [yyyy] [name of copyright owner] 18b00044a2SJames Carlson * 19b00044a2SJames Carlson * CDDL HEADER END 20b00044a2SJames Carlson */ 21b00044a2SJames Carlson /* 22f6da83d4SAnurag S. Maskey * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 23*b31320a7SChris Fraire * Copyright (c) 2016, Chris Fraire <cfraire@me.com>. 24b00044a2SJames Carlson */ 25b00044a2SJames Carlson 266ba597c5SAnurag S. Maskey /* 276ba597c5SAnurag S. Maskey * This file contains data structures and APIs of libnwam. 286ba597c5SAnurag S. Maskey * Implementation is MT safe. 296ba597c5SAnurag S. Maskey */ 30b00044a2SJames Carlson #ifndef _LIBNWAM_H 31b00044a2SJames Carlson #define _LIBNWAM_H 32b00044a2SJames Carlson 336ba597c5SAnurag S. Maskey #ifdef __cplusplus 346ba597c5SAnurag S. Maskey extern "C" { 356ba597c5SAnurag S. Maskey #endif 366ba597c5SAnurag S. Maskey 376ba597c5SAnurag S. Maskey #include <bsm/adt.h> 386ba597c5SAnurag S. Maskey #include <net/if.h> 396ba597c5SAnurag S. Maskey #include <inet/ip.h> 406ba597c5SAnurag S. Maskey #include <inet/ip6.h> 416ba597c5SAnurag S. Maskey #include <sys/types.h> 426ba597c5SAnurag S. Maskey #include <sys/socket.h> 43b00044a2SJames Carlson 44b00044a2SJames Carlson /* 456ba597c5SAnurag S. Maskey * Note - several interface functions below are not utilized in ON, but are 466ba597c5SAnurag S. Maskey * used by the GNOME nwam-manager. One example is nwam_enm_get_name(). 47b00044a2SJames Carlson */ 48b00044a2SJames Carlson 496ba597c5SAnurag S. Maskey /* 506ba597c5SAnurag S. Maskey * Common definitions 516ba597c5SAnurag S. Maskey */ 526ba597c5SAnurag S. Maskey 536ba597c5SAnurag S. Maskey /* nwam FMRI and properties */ 546ba597c5SAnurag S. Maskey #define NWAM_FMRI "svc:/network/physical:nwam" 556ba597c5SAnurag S. Maskey #define NWAM_PG "nwamd" 566ba597c5SAnurag S. Maskey #define NWAM_PROP_ACTIVE_NCP "active_ncp" 576ba597c5SAnurag S. Maskey 586ba597c5SAnurag S. Maskey /* nwam flags used for read/commit */ 596ba597c5SAnurag S. Maskey /* Block waiting for commit if necessary */ 606ba597c5SAnurag S. Maskey #define NWAM_FLAG_BLOCKING 0x00000001 616ba597c5SAnurag S. Maskey /* Committed object must be new */ 626ba597c5SAnurag S. Maskey #define NWAM_FLAG_CREATE 0x00000002 636ba597c5SAnurag S. Maskey /* Tell destroy functions not to free handle */ 646ba597c5SAnurag S. Maskey #define NWAM_FLAG_DO_NOT_FREE 0x00000004 656ba597c5SAnurag S. Maskey /* Object is being enabled/disabled */ 666ba597c5SAnurag S. Maskey #define NWAM_FLAG_ENTITY_ENABLE 0x00000008 676ba597c5SAnurag S. Maskey /* Known WLAN being read, committed or destroyed */ 686ba597c5SAnurag S. Maskey #define NWAM_FLAG_ENTITY_KNOWN_WLAN 0x00000010 696ba597c5SAnurag S. Maskey 706ba597c5SAnurag S. Maskey /* nwam flags used for selecting ncu type for walk */ 716ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_TYPE_LINK 0x00000001ULL << 32 726ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_TYPE_INTERFACE 0x00000002ULL << 32 736ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_TYPE_ALL (NWAM_FLAG_NCU_TYPE_LINK | \ 746ba597c5SAnurag S. Maskey NWAM_FLAG_NCU_TYPE_INTERFACE) 756ba597c5SAnurag S. Maskey 766ba597c5SAnurag S. Maskey /* nwam flags used for selecting ncu class for walk */ 776ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_CLASS_PHYS 0x00000100ULL << 32 786ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_CLASS_IP 0x00010000ULL << 32 796ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_CLASS_ALL_LINK NWAM_FLAG_NCU_CLASS_PHYS 806ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_CLASS_ALL_INTERFACE NWAM_FLAG_NCU_CLASS_IP 816ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL_INTERFACE | \ 826ba597c5SAnurag S. Maskey NWAM_FLAG_NCU_CLASS_ALL_LINK) 836ba597c5SAnurag S. Maskey #define NWAM_FLAG_NCU_TYPE_CLASS_ALL (NWAM_FLAG_NCU_CLASS_ALL | \ 846ba597c5SAnurag S. Maskey NWAM_FLAG_NCU_TYPE_ALL) 856ba597c5SAnurag S. Maskey 866ba597c5SAnurag S. Maskey /* flags used for selecting activation for walk */ 876ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_MANUAL 0x000000001ULL << 32 886ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_SYSTEM 0x000000002ULL << 32 896ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED 0x000000004ULL << 32 906ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY 0x000000008ULL << 32 916ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL 0x000000010ULL << 32 926ba597c5SAnurag S. Maskey #define NWAM_FLAG_ACTIVATION_MODE_ALL (NWAM_FLAG_ACTIVATION_MODE_MANUAL |\ 936ba597c5SAnurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_SYSTEM |\ 946ba597c5SAnurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_PRIORITIZED |\ 956ba597c5SAnurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ANY |\ 966ba597c5SAnurag S. Maskey NWAM_FLAG_ACTIVATION_MODE_CONDITIONAL_ALL) 976ba597c5SAnurag S. Maskey 986ba597c5SAnurag S. Maskey /* Walk known WLANs in order of priority (lowest first) */ 996ba597c5SAnurag S. Maskey #define NWAM_FLAG_KNOWN_WLAN_WALK_PRIORITY_ORDER 0x000010000ULL << 32 1006ba597c5SAnurag S. Maskey /* Do not perform priority collision checking for known WLANs */ 1016ba597c5SAnurag S. Maskey #define NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK 0x000020000ULL << 32 1026ba597c5SAnurag S. Maskey 1036ba597c5SAnurag S. Maskey /* nwam return codes */ 1046ba597c5SAnurag S. Maskey typedef enum { 1056ba597c5SAnurag S. Maskey NWAM_SUCCESS, /* No error occured */ 1066ba597c5SAnurag S. Maskey NWAM_LIST_END, /* End of list reached */ 1076ba597c5SAnurag S. Maskey NWAM_INVALID_HANDLE, /* Entity handle is invalid */ 1086ba597c5SAnurag S. Maskey NWAM_HANDLE_UNBOUND, /* Handle not bound to entity */ 1096ba597c5SAnurag S. Maskey NWAM_INVALID_ARG, /* Argument is invalid */ 1106ba597c5SAnurag S. Maskey NWAM_PERMISSION_DENIED, /* Insufficient privileges for action */ 1116ba597c5SAnurag S. Maskey NWAM_NO_MEMORY, /* Out of memory */ 1126ba597c5SAnurag S. Maskey NWAM_ENTITY_EXISTS, /* Entity already exists */ 1136ba597c5SAnurag S. Maskey NWAM_ENTITY_IN_USE, /* Entity in use */ 1146ba597c5SAnurag S. Maskey NWAM_ENTITY_COMMITTED, /* Entity already committed */ 1156ba597c5SAnurag S. Maskey NWAM_ENTITY_NOT_FOUND, /* Entity not found */ 1166ba597c5SAnurag S. Maskey NWAM_ENTITY_TYPE_MISMATCH, /* Entity type mismatch */ 1176ba597c5SAnurag S. Maskey NWAM_ENTITY_INVALID, /* Validation of entity failed */ 1186ba597c5SAnurag S. Maskey NWAM_ENTITY_INVALID_MEMBER, /* Entity member invalid */ 1196ba597c5SAnurag S. Maskey NWAM_ENTITY_INVALID_STATE, /* Entity is not in appropriate state */ 1206ba597c5SAnurag S. Maskey NWAM_ENTITY_INVALID_VALUE, /* Validation of entity value failed */ 1216ba597c5SAnurag S. Maskey NWAM_ENTITY_MISSING_MEMBER, /* Required member is missing */ 1226ba597c5SAnurag S. Maskey NWAM_ENTITY_NO_VALUE, /* No value associated with entity */ 1236ba597c5SAnurag S. Maskey NWAM_ENTITY_MULTIPLE_VALUES, /* Multiple values for entity */ 1246ba597c5SAnurag S. Maskey NWAM_ENTITY_READ_ONLY, /* Entity is marked read only */ 1256ba597c5SAnurag S. Maskey NWAM_ENTITY_NOT_DESTROYABLE, /* Entity cannot be destroyed */ 1266ba597c5SAnurag S. Maskey NWAM_ENTITY_NOT_MANUAL, /* Entity cannot be manually enabled/disabled */ 1276ba597c5SAnurag S. Maskey NWAM_WALK_HALTED, /* Callback function returned nonzero */ 1286ba597c5SAnurag S. Maskey NWAM_ERROR_BIND, /* Could not bind to backend */ 1296ba597c5SAnurag S. Maskey NWAM_ERROR_BACKEND_INIT, /* Could not initialize backend */ 1306ba597c5SAnurag S. Maskey NWAM_ERROR_INTERNAL /* Internal error */ 1316ba597c5SAnurag S. Maskey } nwam_error_t; 1326ba597c5SAnurag S. Maskey 1336ba597c5SAnurag S. Maskey #define NWAM_MAX_NAME_LEN 128 1346ba597c5SAnurag S. Maskey #define NWAM_MAX_VALUE_LEN 256 1356ba597c5SAnurag S. Maskey #define NWAM_MAX_FMRI_LEN NWAM_MAX_VALUE_LEN 1366ba597c5SAnurag S. Maskey #define NWAM_MAX_NUM_VALUES 32 1376ba597c5SAnurag S. Maskey #define NWAM_MAX_NUM_PROPERTIES 32 1386ba597c5SAnurag S. Maskey 1396ba597c5SAnurag S. Maskey /* used for getting and setting of properties */ 1406ba597c5SAnurag S. Maskey typedef enum { 1416ba597c5SAnurag S. Maskey NWAM_VALUE_TYPE_BOOLEAN, 1426ba597c5SAnurag S. Maskey NWAM_VALUE_TYPE_INT64, 1436ba597c5SAnurag S. Maskey NWAM_VALUE_TYPE_UINT64, 1446ba597c5SAnurag S. Maskey NWAM_VALUE_TYPE_STRING, 1456ba597c5SAnurag S. Maskey NWAM_VALUE_TYPE_UNKNOWN 1466ba597c5SAnurag S. Maskey } nwam_value_type_t; 1476ba597c5SAnurag S. Maskey 1486ba597c5SAnurag S. Maskey /* Holds values of various types for getting and setting of properties */ 1496ba597c5SAnurag S. Maskey /* Forward definition */ 1506ba597c5SAnurag S. Maskey struct nwam_value; 1516ba597c5SAnurag S. Maskey typedef struct nwam_value *nwam_value_t; 1526ba597c5SAnurag S. Maskey 1536ba597c5SAnurag S. Maskey /* Value-related functions. */ 1546ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_boolean(boolean_t, nwam_value_t *); 1556ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_boolean_array(boolean_t *, uint_t, 1566ba597c5SAnurag S. Maskey nwam_value_t *); 1576ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_int64(int64_t, nwam_value_t *); 1586ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_int64_array(int64_t *, uint_t, 1596ba597c5SAnurag S. Maskey nwam_value_t *); 1606ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_uint64(uint64_t, nwam_value_t *); 1616ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_uint64_array(uint64_t *, uint_t, 1626ba597c5SAnurag S. Maskey nwam_value_t *); 1636ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_string(char *, nwam_value_t *); 1646ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_create_string_array(char **, uint_t, 1656ba597c5SAnurag S. Maskey nwam_value_t *); 1666ba597c5SAnurag S. Maskey 1676ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_boolean(nwam_value_t, boolean_t *); 1686ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_boolean_array(nwam_value_t, boolean_t **, 1696ba597c5SAnurag S. Maskey uint_t *); 1706ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_int64(nwam_value_t, int64_t *); 1716ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_int64_array(nwam_value_t, int64_t **, 1726ba597c5SAnurag S. Maskey uint_t *); 1736ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_uint64(nwam_value_t, uint64_t *); 1746ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_uint64_array(nwam_value_t, uint64_t **, 1756ba597c5SAnurag S. Maskey uint_t *); 1766ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_string(nwam_value_t, char **); 1776ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_string_array(nwam_value_t, char ***, 1786ba597c5SAnurag S. Maskey uint_t *); 1796ba597c5SAnurag S. Maskey 1806ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_type(nwam_value_t, nwam_value_type_t *); 1816ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_get_numvalues(nwam_value_t, uint_t *); 1826ba597c5SAnurag S. Maskey 1836ba597c5SAnurag S. Maskey extern void nwam_value_free(nwam_value_t); 1846ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_copy(nwam_value_t, nwam_value_t *); 1856ba597c5SAnurag S. Maskey 1866ba597c5SAnurag S. Maskey extern nwam_error_t nwam_uint64_get_value_string(const char *, uint64_t, 1876ba597c5SAnurag S. Maskey const char **); 1886ba597c5SAnurag S. Maskey extern nwam_error_t nwam_value_string_get_uint64(const char *, const char *, 1896ba597c5SAnurag S. Maskey uint64_t *); 1906ba597c5SAnurag S. Maskey 1916ba597c5SAnurag S. Maskey /* 1926ba597c5SAnurag S. Maskey * To retrieve a localized error string 1936ba597c5SAnurag S. Maskey */ 1946ba597c5SAnurag S. Maskey extern const char *nwam_strerror(nwam_error_t); 1956ba597c5SAnurag S. Maskey 1966ba597c5SAnurag S. Maskey /* 1976ba597c5SAnurag S. Maskey * State and auxiliary state describe the state of ENMs, NCUs and locations. 1986ba597c5SAnurag S. Maskey */ 1996ba597c5SAnurag S. Maskey typedef enum { 2006ba597c5SAnurag S. Maskey NWAM_STATE_UNINITIALIZED = 0x0, 2016ba597c5SAnurag S. Maskey NWAM_STATE_INITIALIZED = 0x1, 2026ba597c5SAnurag S. Maskey NWAM_STATE_OFFLINE = 0x2, 2036ba597c5SAnurag S. Maskey NWAM_STATE_OFFLINE_TO_ONLINE = 0x4, 2046ba597c5SAnurag S. Maskey NWAM_STATE_ONLINE_TO_OFFLINE = 0x8, 2056ba597c5SAnurag S. Maskey NWAM_STATE_ONLINE = 0x10, 2066ba597c5SAnurag S. Maskey NWAM_STATE_MAINTENANCE = 0x20, 2076ba597c5SAnurag S. Maskey NWAM_STATE_DEGRADED = 0x40, 2086ba597c5SAnurag S. Maskey NWAM_STATE_DISABLED = 0x80 2096ba597c5SAnurag S. Maskey } nwam_state_t; 2106ba597c5SAnurag S. Maskey 2116ba597c5SAnurag S. Maskey #define NWAM_STATE_ANY (NWAM_STATE_UNINITIALIZED | \ 2126ba597c5SAnurag S. Maskey NWAM_STATE_INITIALIZED | \ 2136ba597c5SAnurag S. Maskey NWAM_STATE_OFFLINE | \ 2146ba597c5SAnurag S. Maskey NWAM_STATE_OFFLINE_TO_ONLINE | \ 2156ba597c5SAnurag S. Maskey NWAM_STATE_ONLINE_TO_OFFLINE | \ 2166ba597c5SAnurag S. Maskey NWAM_STATE_ONLINE | \ 2176ba597c5SAnurag S. Maskey NWAM_STATE_MAINTENANCE | \ 2186ba597c5SAnurag S. Maskey NWAM_STATE_DEGRADED | \ 2196ba597c5SAnurag S. Maskey NWAM_STATE_DISABLED) 2206ba597c5SAnurag S. Maskey 2216ba597c5SAnurag S. Maskey /* 2226ba597c5SAnurag S. Maskey * The auxiliary state denotes specific reasons why an object is in a particular 2236ba597c5SAnurag S. Maskey * state (e.g. "script failed", "disabled by administrator", "waiting for DHCP 2246ba597c5SAnurag S. Maskey * response"). 2256ba597c5SAnurag S. Maskey */ 2266ba597c5SAnurag S. Maskey typedef enum { 2276ba597c5SAnurag S. Maskey /* General auxiliary states */ 2286ba597c5SAnurag S. Maskey NWAM_AUX_STATE_UNINITIALIZED, 2296ba597c5SAnurag S. Maskey NWAM_AUX_STATE_INITIALIZED, 2306ba597c5SAnurag S. Maskey NWAM_AUX_STATE_CONDITIONS_NOT_MET, 2316ba597c5SAnurag S. Maskey NWAM_AUX_STATE_MANUAL_DISABLE, 2326ba597c5SAnurag S. Maskey NWAM_AUX_STATE_METHOD_FAILED, 2336ba597c5SAnurag S. Maskey NWAM_AUX_STATE_METHOD_MISSING, 2346ba597c5SAnurag S. Maskey NWAM_AUX_STATE_METHOD_RUNNING, 2356ba597c5SAnurag S. Maskey NWAM_AUX_STATE_INVALID_CONFIG, 2366ba597c5SAnurag S. Maskey NWAM_AUX_STATE_ACTIVE, 2376ba597c5SAnurag S. Maskey /* Link-specific auxiliary states */ 2386ba597c5SAnurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_SCANNING, 2396ba597c5SAnurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_NEED_SELECTION, 2406ba597c5SAnurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_NEED_KEY, 2416ba597c5SAnurag S. Maskey NWAM_AUX_STATE_LINK_WIFI_CONNECTING, 2426ba597c5SAnurag S. Maskey /* IP interface-specific auxiliary states */ 2436ba597c5SAnurag S. Maskey NWAM_AUX_STATE_IF_WAITING_FOR_ADDR, 2446ba597c5SAnurag S. Maskey NWAM_AUX_STATE_IF_DHCP_TIMED_OUT, 2456ba597c5SAnurag S. Maskey NWAM_AUX_STATE_IF_DUPLICATE_ADDR, 2466ba597c5SAnurag S. Maskey /* Common link/interface auxiliary states */ 2476ba597c5SAnurag S. Maskey NWAM_AUX_STATE_UP, 2486ba597c5SAnurag S. Maskey NWAM_AUX_STATE_DOWN, 2496ba597c5SAnurag S. Maskey NWAM_AUX_STATE_NOT_FOUND 2506ba597c5SAnurag S. Maskey } nwam_aux_state_t; 2516ba597c5SAnurag S. Maskey 2526ba597c5SAnurag S. Maskey /* Activation modes */ 2536ba597c5SAnurag S. Maskey typedef enum { 2546ba597c5SAnurag S. Maskey NWAM_ACTIVATION_MODE_MANUAL, 2556ba597c5SAnurag S. Maskey NWAM_ACTIVATION_MODE_SYSTEM, 2566ba597c5SAnurag S. Maskey NWAM_ACTIVATION_MODE_CONDITIONAL_ANY, 2576ba597c5SAnurag S. Maskey NWAM_ACTIVATION_MODE_CONDITIONAL_ALL, 2586ba597c5SAnurag S. Maskey NWAM_ACTIVATION_MODE_PRIORITIZED 2596ba597c5SAnurag S. Maskey } nwam_activation_mode_t; 2606ba597c5SAnurag S. Maskey 2616ba597c5SAnurag S. Maskey /* 2626ba597c5SAnurag S. Maskey * Conditions are of the form 2636ba597c5SAnurag S. Maskey * 2646ba597c5SAnurag S. Maskey * ncu|enm|loc name is|is-not active 2656ba597c5SAnurag S. Maskey * ip-address is|is-not|is-in-range|is-not-in-range ipaddr[/prefixlen] 2666ba597c5SAnurag S. Maskey * advertised-domain is|is-not|contains|does-not-contain string 2676ba597c5SAnurag S. Maskey * system-domain is|is-not|contains|does-not-contain string 2686ba597c5SAnurag S. Maskey * essid is|is-not|contains|does-not-contain string 2696ba597c5SAnurag S. Maskey * bssid is|is-not <string> 2706ba597c5SAnurag S. Maskey */ 2716ba597c5SAnurag S. Maskey 2726ba597c5SAnurag S. Maskey typedef enum { 2736ba597c5SAnurag S. Maskey NWAM_CONDITION_IS, 2746ba597c5SAnurag S. Maskey NWAM_CONDITION_IS_NOT, 2756ba597c5SAnurag S. Maskey NWAM_CONDITION_IS_IN_RANGE, 2766ba597c5SAnurag S. Maskey NWAM_CONDITION_IS_NOT_IN_RANGE, 2776ba597c5SAnurag S. Maskey NWAM_CONDITION_CONTAINS, 2786ba597c5SAnurag S. Maskey NWAM_CONDITION_DOES_NOT_CONTAIN 2796ba597c5SAnurag S. Maskey } nwam_condition_t; 2806ba597c5SAnurag S. Maskey 2816ba597c5SAnurag S. Maskey typedef enum { 2826ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_NCP, 2836ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_NCU, 2846ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ENM, 2856ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_LOC, 2866ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_IP_ADDRESS, 2876ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ADV_DOMAIN, 2886ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_SYS_DOMAIN, 2896ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_ESSID, 2906ba597c5SAnurag S. Maskey NWAM_CONDITION_OBJECT_TYPE_BSSID 2916ba597c5SAnurag S. Maskey } nwam_condition_object_type_t; 2926ba597c5SAnurag S. Maskey 2936ba597c5SAnurag S. Maskey /* 2946ba597c5SAnurag S. Maskey * Activation condition-related functions that convert activation 2956ba597c5SAnurag S. Maskey * values to an appropriate string and back. 2966ba597c5SAnurag S. Maskey */ 2976ba597c5SAnurag S. Maskey extern nwam_error_t nwam_condition_to_condition_string( 2986ba597c5SAnurag S. Maskey nwam_condition_object_type_t, nwam_condition_t, const char *, char **); 2996ba597c5SAnurag S. Maskey extern nwam_error_t nwam_condition_string_to_condition(const char *, 3006ba597c5SAnurag S. Maskey nwam_condition_object_type_t *, nwam_condition_t *, char **); 3016ba597c5SAnurag S. Maskey 3026ba597c5SAnurag S. Maskey /* 3036ba597c5SAnurag S. Maskey * Only one location can be active at one time. As a 3046ba597c5SAnurag S. Maskey * consequence, if the activation conditions of multiple 3056ba597c5SAnurag S. Maskey * locations are satisfied, we need to compare activation 3066ba597c5SAnurag S. Maskey * conditions to see if one is more specific than another. 3076ba597c5SAnurag S. Maskey * 3086ba597c5SAnurag S. Maskey * The following heuristics are applied to rate an 3096ba597c5SAnurag S. Maskey * activation condition: 3106ba597c5SAnurag S. Maskey * - "is" is the most specific condition 3116ba597c5SAnurag S. Maskey * - it is followed by "is-in-range" and "contains" 3126ba597c5SAnurag S. Maskey * - "is-not-in-range" and "does-not-contain" are next 3136ba597c5SAnurag S. Maskey * - finally "is-not" is least specific 3146ba597c5SAnurag S. Maskey * 3156ba597c5SAnurag S. Maskey * Regarding the objects these conditions apply to: 3166ba597c5SAnurag S. Maskey * - NCU, ENM and locations are most specific 3176ba597c5SAnurag S. Maskey * - system-domain is next 3186ba597c5SAnurag S. Maskey * - advertised-domain is next 3196ba597c5SAnurag S. Maskey * - IP address is next 3206ba597c5SAnurag S. Maskey * - wireless BSSID is next 3216ba597c5SAnurag S. Maskey * - wireless ESSID is least specific 3226ba597c5SAnurag S. Maskey * 3236ba597c5SAnurag S. Maskey */ 3246ba597c5SAnurag S. Maskey extern nwam_error_t nwam_condition_rate(nwam_condition_object_type_t, 3256ba597c5SAnurag S. Maskey nwam_condition_t, uint64_t *); 3266ba597c5SAnurag S. Maskey 3276ba597c5SAnurag S. Maskey /* 3286ba597c5SAnurag S. Maskey * Location definitions. 3296ba597c5SAnurag S. Maskey */ 3306ba597c5SAnurag S. Maskey 3316ba597c5SAnurag S. Maskey #define NWAM_LOC_NAME_AUTOMATIC "Automatic" 3326ba597c5SAnurag S. Maskey #define NWAM_LOC_NAME_NO_NET "NoNet" 3336ba597c5SAnurag S. Maskey #define NWAM_LOC_NAME_LEGACY "Legacy" 3346ba597c5SAnurag S. Maskey 3356ba597c5SAnurag S. Maskey #define NWAM_LOC_NAME_PRE_DEFINED(name) \ 3366ba597c5SAnurag S. Maskey (strcasecmp(name, NWAM_LOC_NAME_AUTOMATIC) == 0 || \ 3376ba597c5SAnurag S. Maskey strcasecmp(name, NWAM_LOC_NAME_NO_NET) == 0 || \ 3386ba597c5SAnurag S. Maskey strcasecmp(name, NWAM_LOC_NAME_LEGACY) == 0) 3396ba597c5SAnurag S. Maskey 3406ba597c5SAnurag S. Maskey /* Forward definition */ 3416ba597c5SAnurag S. Maskey struct nwam_handle; 3426ba597c5SAnurag S. Maskey 3436ba597c5SAnurag S. Maskey typedef struct nwam_handle *nwam_loc_handle_t; 3446ba597c5SAnurag S. Maskey 3456ba597c5SAnurag S. Maskey /* Location properties */ 3466ba597c5SAnurag S. Maskey 3476ba597c5SAnurag S. Maskey typedef enum { 3486ba597c5SAnurag S. Maskey NWAM_NAMESERVICES_DNS, 3496ba597c5SAnurag S. Maskey NWAM_NAMESERVICES_FILES, 3506ba597c5SAnurag S. Maskey NWAM_NAMESERVICES_NIS, 3516ba597c5SAnurag S. Maskey NWAM_NAMESERVICES_LDAP 3526ba597c5SAnurag S. Maskey } nwam_nameservices_t; 3536ba597c5SAnurag S. Maskey 3546ba597c5SAnurag S. Maskey typedef enum { 3556ba597c5SAnurag S. Maskey NWAM_CONFIGSRC_MANUAL, 3566ba597c5SAnurag S. Maskey NWAM_CONFIGSRC_DHCP 3576ba597c5SAnurag S. Maskey } nwam_configsrc_t; 3586ba597c5SAnurag S. Maskey 3596ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_ACTIVATION_MODE "activation-mode" 3606ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_CONDITIONS "conditions" 3616ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_ENABLED "enabled" 362b00044a2SJames Carlson 3636ba597c5SAnurag S. Maskey /* Nameservice location properties */ 3646ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_NAMESERVICES "nameservices" 3656ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_NAMESERVICES_CONFIG_FILE "nameservices-config-file" 3666ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_DNS_NAMESERVICE_CONFIGSRC "dns-nameservice-configsrc" 3676ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_DNS_NAMESERVICE_DOMAIN "dns-nameservice-domain" 3686ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_DNS_NAMESERVICE_SERVERS "dns-nameservice-servers" 3696ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_DNS_NAMESERVICE_SEARCH "dns-nameservice-search" 3706ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_NIS_NAMESERVICE_CONFIGSRC "nis-nameservice-configsrc" 3716ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_NIS_NAMESERVICE_SERVERS "nis-nameservice-servers" 3726ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_LDAP_NAMESERVICE_CONFIGSRC "ldap-nameservice-configsrc" 3736ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_LDAP_NAMESERVICE_SERVERS "ldap-nameservice-servers" 3746ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_DEFAULT_DOMAIN "default-domain" 3756ba597c5SAnurag S. Maskey 3766ba597c5SAnurag S. Maskey /* NFSv4 domain */ 3776ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_NFSV4_DOMAIN "nfsv4-domain" 3786ba597c5SAnurag S. Maskey 3796ba597c5SAnurag S. Maskey /* IPfilter configuration */ 3806ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IPFILTER_CONFIG_FILE "ipfilter-config-file" 3816ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IPFILTER_V6_CONFIG_FILE "ipfilter-v6-config-file" 3826ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IPNAT_CONFIG_FILE "ipnat-config-file" 3836ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IPPOOL_CONFIG_FILE "ippool-config-file" 3846ba597c5SAnurag S. Maskey 3856ba597c5SAnurag S. Maskey /* IPsec configuration */ 3866ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IKE_CONFIG_FILE "ike-config-file" 3876ba597c5SAnurag S. Maskey #define NWAM_LOC_PROP_IPSECPOLICY_CONFIG_FILE "ipsecpolicy-config-file" 3886ba597c5SAnurag S. Maskey 3896ba597c5SAnurag S. Maskey /* 3906ba597c5SAnurag S. Maskey * NCP/NCU definitions. 3916ba597c5SAnurag S. Maskey */ 3926ba597c5SAnurag S. Maskey 3936ba597c5SAnurag S. Maskey #define NWAM_NCP_NAME_AUTOMATIC "Automatic" 3946ba597c5SAnurag S. Maskey #define NWAM_NCP_NAME_USER "User" 3956ba597c5SAnurag S. Maskey 3966ba597c5SAnurag S. Maskey #define NWAM_NCP_AUTOMATIC(name) \ 3976ba597c5SAnurag S. Maskey (strcasecmp(name, NWAM_NCP_NAME_AUTOMATIC) == 0) 3986ba597c5SAnurag S. Maskey 3996ba597c5SAnurag S. Maskey typedef struct nwam_handle *nwam_ncp_handle_t; 4006ba597c5SAnurag S. Maskey 4016ba597c5SAnurag S. Maskey typedef struct nwam_handle *nwam_ncu_handle_t; 4026ba597c5SAnurag S. Maskey 4036ba597c5SAnurag S. Maskey typedef enum { 4046ba597c5SAnurag S. Maskey NWAM_NCU_TYPE_UNKNOWN = -1, 4056ba597c5SAnurag S. Maskey NWAM_NCU_TYPE_LINK, 4066ba597c5SAnurag S. Maskey NWAM_NCU_TYPE_INTERFACE, 4076ba597c5SAnurag S. Maskey NWAM_NCU_TYPE_ANY 4086ba597c5SAnurag S. Maskey } nwam_ncu_type_t; 4096ba597c5SAnurag S. Maskey 4106ba597c5SAnurag S. Maskey typedef enum { 4116ba597c5SAnurag S. Maskey NWAM_NCU_CLASS_UNKNOWN = -1, 4126ba597c5SAnurag S. Maskey NWAM_NCU_CLASS_PHYS, 4136ba597c5SAnurag S. Maskey NWAM_NCU_CLASS_IP, 4146ba597c5SAnurag S. Maskey NWAM_NCU_CLASS_ANY 4156ba597c5SAnurag S. Maskey } nwam_ncu_class_t; 4166ba597c5SAnurag S. Maskey 4176ba597c5SAnurag S. Maskey typedef enum { 4186ba597c5SAnurag S. Maskey NWAM_ADDRSRC_DHCP, 4196ba597c5SAnurag S. Maskey NWAM_ADDRSRC_AUTOCONF, 4206ba597c5SAnurag S. Maskey NWAM_ADDRSRC_STATIC 4216ba597c5SAnurag S. Maskey } nwam_addrsrc_t; 4226ba597c5SAnurag S. Maskey 4236ba597c5SAnurag S. Maskey typedef enum { 4246ba597c5SAnurag S. Maskey NWAM_PRIORITY_MODE_EXCLUSIVE, 4256ba597c5SAnurag S. Maskey NWAM_PRIORITY_MODE_SHARED, 4266ba597c5SAnurag S. Maskey NWAM_PRIORITY_MODE_ALL 4276ba597c5SAnurag S. Maskey } nwam_priority_mode_t; 4286ba597c5SAnurag S. Maskey 4296ba597c5SAnurag S. Maskey /* NCU properties common to all type/classes */ 4306ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_TYPE "type" 4316ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_CLASS "class" 4326ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_PARENT_NCP "parent" 4336ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_ACTIVATION_MODE "activation-mode" 4346ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_ENABLED "enabled" 4356ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_PRIORITY_GROUP "priority-group" 4366ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_PRIORITY_MODE "priority-mode" 4376ba597c5SAnurag S. Maskey 4386ba597c5SAnurag S. Maskey /* Link NCU properties */ 4396ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_LINK_MAC_ADDR "link-mac-addr" 4406ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_LINK_AUTOPUSH "link-autopush" 4416ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_LINK_MTU "link-mtu" 4426ba597c5SAnurag S. Maskey 4436ba597c5SAnurag S. Maskey /* IP NCU properties */ 4446ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IP_VERSION "ip-version" 4456ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV4_ADDRSRC "ipv4-addrsrc" 4466ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV4_ADDR "ipv4-addr" 4476ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV4_DEFAULT_ROUTE "ipv4-default-route" 4486ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV6_ADDRSRC "ipv6-addrsrc" 4496ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV6_ADDR "ipv6-addr" 4506ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_IPV6_DEFAULT_ROUTE "ipv6-default-route" 451*b31320a7SChris Fraire #define NWAM_NCU_PROP_IP_PRIMARY "ip-primary" 452*b31320a7SChris Fraire #define NWAM_NCU_PROP_IP_REQHOST "ip-reqhost" 4536ba597c5SAnurag S. Maskey 4546ba597c5SAnurag S. Maskey /* Some properties should only be set on creation */ 4556ba597c5SAnurag S. Maskey #define NWAM_NCU_PROP_SETONCE(prop) \ 4566ba597c5SAnurag S. Maskey (strcmp(prop, NWAM_NCU_PROP_TYPE) == 0 || \ 4576ba597c5SAnurag S. Maskey strcmp(prop, NWAM_NCU_PROP_CLASS) == 0 || \ 4586ba597c5SAnurag S. Maskey strcmp(prop, NWAM_NCU_PROP_PARENT_NCP) == 0) 4596ba597c5SAnurag S. Maskey /* 4606ba597c5SAnurag S. Maskey * ENM definitions 4616ba597c5SAnurag S. Maskey */ 4626ba597c5SAnurag S. Maskey 4636ba597c5SAnurag S. Maskey typedef struct nwam_handle *nwam_enm_handle_t; 4646ba597c5SAnurag S. Maskey 4656ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_ACTIVATION_MODE "activation-mode" 4666ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_CONDITIONS "conditions" 4676ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_ENABLED "enabled" 4686ba597c5SAnurag S. Maskey 4696ba597c5SAnurag S. Maskey /* FMRI associated with ENM */ 4706ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_FMRI "fmri" 4716ba597c5SAnurag S. Maskey 4726ba597c5SAnurag S. Maskey /* Start/stop scripts associated with ENM */ 4736ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_START "start" 4746ba597c5SAnurag S. Maskey #define NWAM_ENM_PROP_STOP "stop" 4756ba597c5SAnurag S. Maskey 4766ba597c5SAnurag S. Maskey /* 4776ba597c5SAnurag S. Maskey * Known Wireless LAN info (known WLAN) definitions. 4786ba597c5SAnurag S. Maskey */ 4796ba597c5SAnurag S. Maskey 4806ba597c5SAnurag S. Maskey typedef struct nwam_handle *nwam_known_wlan_handle_t; 4816ba597c5SAnurag S. Maskey 4826ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_PROP_BSSIDS "bssids" 4836ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_PROP_PRIORITY "priority" 4846ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_PROP_KEYNAME "keyname" 4856ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_PROP_KEYSLOT "keyslot" 4866ba597c5SAnurag S. Maskey #define NWAM_KNOWN_WLAN_PROP_SECURITY_MODE "security-mode" 4876ba597c5SAnurag S. Maskey 4886ba597c5SAnurag S. Maskey /* 4896ba597c5SAnurag S. Maskey * Location Functions 4906ba597c5SAnurag S. Maskey */ 4916ba597c5SAnurag S. Maskey 4926ba597c5SAnurag S. Maskey /* Create a location */ 4936ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_create(const char *, nwam_loc_handle_t *); 4946ba597c5SAnurag S. Maskey 4956ba597c5SAnurag S. Maskey /* Copy a location */ 4966ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_copy(nwam_loc_handle_t, const char *, 4976ba597c5SAnurag S. Maskey nwam_loc_handle_t *); 4986ba597c5SAnurag S. Maskey 4996ba597c5SAnurag S. Maskey /* Read a location from persistent storage */ 5006ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_read(const char *, uint64_t, 5016ba597c5SAnurag S. Maskey nwam_loc_handle_t *); 5026ba597c5SAnurag S. Maskey 5036ba597c5SAnurag S. Maskey /* Validate in-memory representation of a location */ 5046ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_validate(nwam_loc_handle_t, const char **); 5056ba597c5SAnurag S. Maskey 5066ba597c5SAnurag S. Maskey /* Commit in-memory representation of a location to persistent storage */ 5076ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_commit(nwam_loc_handle_t, uint64_t); 5086ba597c5SAnurag S. Maskey 5096ba597c5SAnurag S. Maskey /* Destroy a location in persistent storage */ 5106ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_destroy(nwam_loc_handle_t, uint64_t); 5116ba597c5SAnurag S. Maskey 5126ba597c5SAnurag S. Maskey /* Free in-memory representation of a location */ 5136ba597c5SAnurag S. Maskey extern void nwam_loc_free(nwam_loc_handle_t); 5146ba597c5SAnurag S. Maskey 5156ba597c5SAnurag S. Maskey /* read all locs from persistent storage and walk through each at a time */ 5166ba597c5SAnurag S. Maskey extern nwam_error_t nwam_walk_locs(int (*)(nwam_loc_handle_t, void *), void *, 5176ba597c5SAnurag S. Maskey uint64_t, int *); 5186ba597c5SAnurag S. Maskey 5196ba597c5SAnurag S. Maskey /* get/set loc name */ 5206ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_name(nwam_loc_handle_t, char **); 5216ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_set_name(nwam_loc_handle_t, const char *); 5226ba597c5SAnurag S. Maskey extern boolean_t nwam_loc_can_set_name(nwam_loc_handle_t); 5236ba597c5SAnurag S. Maskey 5246ba597c5SAnurag S. Maskey /* activate/deactivate loc */ 5256ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_enable(nwam_loc_handle_t); 5266ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_disable(nwam_loc_handle_t); 5276ba597c5SAnurag S. Maskey 5286ba597c5SAnurag S. Maskey /* walk all properties of an in-memory loc */ 5296ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_walk_props(nwam_loc_handle_t, 5306ba597c5SAnurag S. Maskey int (*)(const char *, nwam_value_t, void *), 5316ba597c5SAnurag S. Maskey void *, uint64_t, int *); 5326ba597c5SAnurag S. Maskey 5336ba597c5SAnurag S. Maskey /* delete/get/set validate loc property */ 5346ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_delete_prop(nwam_loc_handle_t, 535b00044a2SJames Carlson const char *); 5366ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_prop_value(nwam_loc_handle_t, 5376ba597c5SAnurag S. Maskey const char *, nwam_value_t *); 5386ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_set_prop_value(nwam_loc_handle_t, 5396ba597c5SAnurag S. Maskey const char *, nwam_value_t); 5406ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_validate_prop(nwam_loc_handle_t, const char *, 5416ba597c5SAnurag S. Maskey nwam_value_t); 5426ba597c5SAnurag S. Maskey 5436ba597c5SAnurag S. Maskey /* Get the read-only value for a particular loc property */ 5446ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_prop_read_only(const char *, boolean_t *); 5456ba597c5SAnurag S. Maskey 5466ba597c5SAnurag S. Maskey /* Whether the property is multi-valued or not */ 5476ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_prop_multivalued(const char *, boolean_t *); 5486ba597c5SAnurag S. Maskey 5496ba597c5SAnurag S. Maskey /* Retrieve data type */ 5506ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_prop_type(const char *, nwam_value_type_t *); 5516ba597c5SAnurag S. Maskey 5526ba597c5SAnurag S. Maskey /* Retrieve description */ 5536ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_prop_description(const char *, const char **); 5546ba597c5SAnurag S. Maskey 5556ba597c5SAnurag S. Maskey /* get default loc props */ 5566ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_default_proplist(const char ***, uint_t *); 5576ba597c5SAnurag S. Maskey 5586ba597c5SAnurag S. Maskey /* get sstate of loc from nwamd */ 5596ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_get_state(nwam_loc_handle_t, nwam_state_t *, 5606ba597c5SAnurag S. Maskey nwam_aux_state_t *); 5616ba597c5SAnurag S. Maskey 5626ba597c5SAnurag S. Maskey /* Get whether the loc has manual activation-mode or not */ 5636ba597c5SAnurag S. Maskey extern nwam_error_t nwam_loc_is_manual(nwam_loc_handle_t, boolean_t *); 5646ba597c5SAnurag S. Maskey 5656ba597c5SAnurag S. Maskey /* 5666ba597c5SAnurag S. Maskey * NCP/NCU functions 5676ba597c5SAnurag S. Maskey */ 5686ba597c5SAnurag S. Maskey 5696ba597c5SAnurag S. Maskey /* Create an ncp */ 5706ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_create(const char *, uint64_t, 5716ba597c5SAnurag S. Maskey nwam_ncp_handle_t *); 5726ba597c5SAnurag S. Maskey 5736ba597c5SAnurag S. Maskey /* Read an ncp from persistent storage */ 5746ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_read(const char *, uint64_t, nwam_ncp_handle_t *); 5756ba597c5SAnurag S. Maskey 5766ba597c5SAnurag S. Maskey /* Make a copy of existing ncp */ 5776ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_copy(nwam_ncp_handle_t, const char *, 5786ba597c5SAnurag S. Maskey nwam_ncp_handle_t *); 5796ba597c5SAnurag S. Maskey 5806ba597c5SAnurag S. Maskey /* Walk ncps */ 5816ba597c5SAnurag S. Maskey extern nwam_error_t nwam_walk_ncps(int (*)(nwam_ncp_handle_t, void *), 5826ba597c5SAnurag S. Maskey void *, uint64_t, int *); 5836ba597c5SAnurag S. Maskey 5846ba597c5SAnurag S. Maskey /* Get ncp name */ 5856ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_get_name(nwam_ncp_handle_t, char **); 5866ba597c5SAnurag S. Maskey 5876ba597c5SAnurag S. Maskey /* Get the read-only value for this ncp */ 5886ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t, boolean_t *); 5896ba597c5SAnurag S. Maskey 5906ba597c5SAnurag S. Maskey /* Destroy ncp */ 5916ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_destroy(nwam_ncp_handle_t, uint64_t); 5926ba597c5SAnurag S. Maskey 5936ba597c5SAnurag S. Maskey /* 5946ba597c5SAnurag S. Maskey * Walk all ncus associated with ncp. Specific types/classes of ncu can 5956ba597c5SAnurag S. Maskey * be selected via flags, or all via NWAM_FLAG_ALL. 5966ba597c5SAnurag S. Maskey */ 5976ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_walk_ncus(nwam_ncp_handle_t, 5986ba597c5SAnurag S. Maskey int(*)(nwam_ncu_handle_t, void *), void *, uint64_t, int *); 5996ba597c5SAnurag S. Maskey 6006ba597c5SAnurag S. Maskey /* Activate ncp */ 6016ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_enable(nwam_ncp_handle_t); 6026ba597c5SAnurag S. Maskey 6036ba597c5SAnurag S. Maskey /* Free in-memory representation of ncp */ 6046ba597c5SAnurag S. Maskey extern void nwam_ncp_free(nwam_ncp_handle_t); 6056ba597c5SAnurag S. Maskey 6066ba597c5SAnurag S. Maskey /* Get state of NCP from nwamd */ 6076ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_get_state(nwam_ncp_handle_t, nwam_state_t *, 6086ba597c5SAnurag S. Maskey nwam_aux_state_t *); 6096ba597c5SAnurag S. Maskey 6106ba597c5SAnurag S. Maskey /* Get the active priority-group */ 6116ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncp_get_active_priority_group(int64_t *); 6126ba597c5SAnurag S. Maskey 6136ba597c5SAnurag S. Maskey /* Create an ncu or read it from persistent storage */ 6146ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_create(nwam_ncp_handle_t, const char *, 6156ba597c5SAnurag S. Maskey nwam_ncu_type_t, nwam_ncu_class_t, nwam_ncu_handle_t *); 6166ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_read(nwam_ncp_handle_t, const char *, 6176ba597c5SAnurag S. Maskey nwam_ncu_type_t, uint64_t, nwam_ncu_handle_t *); 6186ba597c5SAnurag S. Maskey 6196ba597c5SAnurag S. Maskey /* Destroy an ncu in persistent storage or free the in-memory representation */ 6206ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_destroy(nwam_ncu_handle_t, uint64_t); 6216ba597c5SAnurag S. Maskey extern void nwam_ncu_free(nwam_ncu_handle_t); 6226ba597c5SAnurag S. Maskey 6236ba597c5SAnurag S. Maskey /* make a copy of existing ncu */ 6246ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_copy(nwam_ncu_handle_t, const char *, 6256ba597c5SAnurag S. Maskey nwam_ncu_handle_t *); 6266ba597c5SAnurag S. Maskey 6276ba597c5SAnurag S. Maskey /* Commit ncu changes to persistent storage */ 6286ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_commit(nwam_ncu_handle_t, uint64_t); 6296ba597c5SAnurag S. Maskey 6306ba597c5SAnurag S. Maskey /* activate/deactivate an individual NCU (must be part of the active NCP) */ 6316ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_enable(nwam_ncu_handle_t); 6326ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_disable(nwam_ncu_handle_t); 6336ba597c5SAnurag S. Maskey 6346ba597c5SAnurag S. Maskey /* Get state of NCU from nwamd */ 6356ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_state(nwam_ncu_handle_t, nwam_state_t *, 6366ba597c5SAnurag S. Maskey nwam_aux_state_t *); 6376ba597c5SAnurag S. Maskey 6386ba597c5SAnurag S. Maskey /* Get NCU type */ 6396ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_ncu_type(nwam_ncu_handle_t, nwam_ncu_type_t *); 6406ba597c5SAnurag S. Maskey 6416ba597c5SAnurag S. Maskey /* Get NCU class */ 6426ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_ncu_class(nwam_ncu_handle_t, 6436ba597c5SAnurag S. Maskey nwam_ncu_class_t *); 6446ba597c5SAnurag S. Maskey 6456ba597c5SAnurag S. Maskey /* Validate ncu content */ 6466ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_validate(nwam_ncu_handle_t, const char **); 6476ba597c5SAnurag S. Maskey 6486ba597c5SAnurag S. Maskey /* Walk all properties in in-memory representation of ncu */ 6496ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_walk_props(nwam_ncu_handle_t, 6506ba597c5SAnurag S. Maskey int (*)(const char *, nwam_value_t, void *), 6516ba597c5SAnurag S. Maskey void *, uint64_t, int *); 6526ba597c5SAnurag S. Maskey 6536ba597c5SAnurag S. Maskey /* Get/set name of ncu, get parent ncp */ 6546ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_name(nwam_ncu_handle_t, char **); 6556ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_name_to_typed_name(const char *, nwam_ncu_type_t, 6566ba597c5SAnurag S. Maskey char **); 6576ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_typed_name_to_name(const char *, nwam_ncu_type_t *, 6586ba597c5SAnurag S. Maskey char **); 6596ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_default_proplist(nwam_ncu_type_t, 6606ba597c5SAnurag S. Maskey nwam_ncu_class_t, const char ***, uint_t *); 6616ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_ncp(nwam_ncu_handle_t, nwam_ncp_handle_t *); 6626ba597c5SAnurag S. Maskey 6636ba597c5SAnurag S. Maskey /* delete/get/set/validate property from/in in-memory representation of ncu */ 6646ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_delete_prop(nwam_ncu_handle_t, 6656ba597c5SAnurag S. Maskey const char *); 6666ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_prop_value(nwam_ncu_handle_t, 6676ba597c5SAnurag S. Maskey const char *, nwam_value_t *); 6686ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_set_prop_value(nwam_ncu_handle_t, 6696ba597c5SAnurag S. Maskey const char *, nwam_value_t); 6706ba597c5SAnurag S. Maskey 6716ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_validate_prop(nwam_ncu_handle_t, const char *, 6726ba597c5SAnurag S. Maskey nwam_value_t); 6736ba597c5SAnurag S. Maskey 6746ba597c5SAnurag S. Maskey /* Retrieve data type */ 6756ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_prop_type(const char *, nwam_value_type_t *); 6766ba597c5SAnurag S. Maskey /* Retrieve prop description */ 6776ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_prop_description(const char *, const char **); 6786ba597c5SAnurag S. Maskey 6796ba597c5SAnurag S. Maskey /* Get the read-only value from the handle or parent NCP */ 6806ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t, boolean_t *); 6816ba597c5SAnurag S. Maskey 6826ba597c5SAnurag S. Maskey /* Get the read-only value for a particular NCU property */ 6836ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_prop_read_only(const char *, boolean_t *); 6846ba597c5SAnurag S. Maskey 6856ba597c5SAnurag S. Maskey /* Whether the property is multi-valued or not */ 6866ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_prop_multivalued(const char *, boolean_t *); 6876ba597c5SAnurag S. Maskey 6886ba597c5SAnurag S. Maskey /* Get whether the NCU has manual activation-mode or not */ 6896ba597c5SAnurag S. Maskey extern nwam_error_t nwam_ncu_is_manual(nwam_ncu_handle_t, boolean_t *); 6906ba597c5SAnurag S. Maskey 6916ba597c5SAnurag S. Maskey /* Get the flag from the given class for walks */ 6926ba597c5SAnurag S. Maskey extern uint64_t nwam_ncu_class_to_flag(nwam_ncu_class_t); 6936ba597c5SAnurag S. Maskey 6946ba597c5SAnurag S. Maskey /* Get the NCU type from the given class */ 6956ba597c5SAnurag S. Maskey extern nwam_ncu_type_t nwam_ncu_class_to_type(nwam_ncu_class_t); 6966ba597c5SAnurag S. Maskey 6976ba597c5SAnurag S. Maskey /* ENM functions */ 6986ba597c5SAnurag S. Maskey /* 6996ba597c5SAnurag S. Maskey * Obtain a specific enm handle, either be creating a new enm 7006ba597c5SAnurag S. Maskey * or reading an existing one from persistent storage. 7016ba597c5SAnurag S. Maskey */ 7026ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_create(const char *, const char *, 7036ba597c5SAnurag S. Maskey nwam_enm_handle_t *); 7046ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_read(const char *, uint64_t, nwam_enm_handle_t *); 7056ba597c5SAnurag S. Maskey 7066ba597c5SAnurag S. Maskey /* Make a copy of existing enm */ 7076ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_copy(nwam_enm_handle_t, const char *, 7086ba597c5SAnurag S. Maskey nwam_enm_handle_t *); 7096ba597c5SAnurag S. Maskey 7106ba597c5SAnurag S. Maskey /* 7116ba597c5SAnurag S. Maskey * Obtain handles for all existing enms. Caller-specified callback 7126ba597c5SAnurag S. Maskey * function will be called once for each enm, passing the handle and 7136ba597c5SAnurag S. Maskey * the caller-specified arg. 7146ba597c5SAnurag S. Maskey */ 7156ba597c5SAnurag S. Maskey extern nwam_error_t nwam_walk_enms(int (*)(nwam_enm_handle_t, void *), void *, 7166ba597c5SAnurag S. Maskey uint64_t, int *); 7176ba597c5SAnurag S. Maskey 7186ba597c5SAnurag S. Maskey /* 7196ba597c5SAnurag S. Maskey * Commit an enm to persistent storage. Does not free the handle. 7206ba597c5SAnurag S. Maskey */ 7216ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_commit(nwam_enm_handle_t, uint64_t); 7226ba597c5SAnurag S. Maskey 7236ba597c5SAnurag S. Maskey /* 7246ba597c5SAnurag S. Maskey * Remove an enm from persistent storage. 7256ba597c5SAnurag S. Maskey */ 7266ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_destroy(nwam_enm_handle_t, uint64_t); 7276ba597c5SAnurag S. Maskey 7286ba597c5SAnurag S. Maskey /* 7296ba597c5SAnurag S. Maskey * Free an enm handle 7306ba597c5SAnurag S. Maskey */ 7316ba597c5SAnurag S. Maskey extern void nwam_enm_free(nwam_enm_handle_t); 7326ba597c5SAnurag S. Maskey 7336ba597c5SAnurag S. Maskey /* 7346ba597c5SAnurag S. Maskey * Validate an enm, or a specific enm property. If validating 7356ba597c5SAnurag S. Maskey * an entire enm, the invalid property type is returned. 7366ba597c5SAnurag S. Maskey */ 7376ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_validate(nwam_enm_handle_t, const char **); 7386ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_validate_prop(nwam_enm_handle_t, const char *, 7396ba597c5SAnurag S. Maskey nwam_value_t); 7406ba597c5SAnurag S. Maskey 7416ba597c5SAnurag S. Maskey /* Retrieve data type */ 7426ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_prop_type(const char *, nwam_value_type_t *); 7436ba597c5SAnurag S. Maskey /* Retrieve prop description */ 7446ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_prop_description(const char *, const char **); 7456ba597c5SAnurag S. Maskey 7466ba597c5SAnurag S. Maskey /* 7476ba597c5SAnurag S. Maskey * Delete/get/set enm property values. 7486ba597c5SAnurag S. Maskey */ 7496ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_delete_prop(nwam_enm_handle_t, 7506ba597c5SAnurag S. Maskey const char *); 7516ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_prop_value(nwam_enm_handle_t, 7526ba597c5SAnurag S. Maskey const char *, nwam_value_t *); 7536ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_set_prop_value(nwam_enm_handle_t, 7546ba597c5SAnurag S. Maskey const char *, nwam_value_t); 7556ba597c5SAnurag S. Maskey 7566ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_default_proplist(const char ***, uint_t *); 7576ba597c5SAnurag S. Maskey 7586ba597c5SAnurag S. Maskey /* Get the read-only value for a particular ENM property */ 7596ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_prop_read_only(const char *, boolean_t *); 7606ba597c5SAnurag S. Maskey 7616ba597c5SAnurag S. Maskey /* Whether the property is multi-valued or not */ 7626ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_prop_multivalued(const char *, boolean_t *); 7636ba597c5SAnurag S. Maskey 7646ba597c5SAnurag S. Maskey /* 7656ba597c5SAnurag S. Maskey * Walk all properties of a specific enm. For each property, specified 7666ba597c5SAnurag S. Maskey * callback function is called. Caller is responsible for freeing memory 7676ba597c5SAnurag S. Maskey * allocated for each property. 7686ba597c5SAnurag S. Maskey */ 7696ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_walk_props(nwam_enm_handle_t, 7706ba597c5SAnurag S. Maskey int (*)(const char *, nwam_value_t, void *), 7716ba597c5SAnurag S. Maskey void *, uint64_t, int *); 7726ba597c5SAnurag S. Maskey 7736ba597c5SAnurag S. Maskey /* 7746ba597c5SAnurag S. Maskey * Get/set the name of an enm. When getting the name, the library will 7756ba597c5SAnurag S. Maskey * allocate a buffer; the caller is responsible for freeing the memory. 7766ba597c5SAnurag S. Maskey */ 7776ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_name(nwam_enm_handle_t, char **); 7786ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_set_name(nwam_enm_handle_t, const char *); 7796ba597c5SAnurag S. Maskey extern boolean_t nwam_enm_can_set_name(nwam_enm_handle_t); 7806ba597c5SAnurag S. Maskey 7816ba597c5SAnurag S. Maskey /* 7826ba597c5SAnurag S. Maskey * Start/stop an enm. 7836ba597c5SAnurag S. Maskey */ 7846ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_enable(nwam_enm_handle_t); 7856ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_disable(nwam_enm_handle_t); 7866ba597c5SAnurag S. Maskey 7876ba597c5SAnurag S. Maskey /* 7886ba597c5SAnurag S. Maskey * Get state of ENM from nwamd. 7896ba597c5SAnurag S. Maskey */ 7906ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_get_state(nwam_enm_handle_t, nwam_state_t *, 7916ba597c5SAnurag S. Maskey nwam_aux_state_t *); 7926ba597c5SAnurag S. Maskey 7936ba597c5SAnurag S. Maskey /* 7946ba597c5SAnurag S. Maskey * Get whether the ENM has manual activation-mode or not. 7956ba597c5SAnurag S. Maskey */ 7966ba597c5SAnurag S. Maskey extern nwam_error_t nwam_enm_is_manual(nwam_enm_handle_t, boolean_t *); 7976ba597c5SAnurag S. Maskey 7986ba597c5SAnurag S. Maskey /* 7996ba597c5SAnurag S. Maskey * Known Wireless LAN (WLAN) info. 8006ba597c5SAnurag S. Maskey */ 8016ba597c5SAnurag S. Maskey 8026ba597c5SAnurag S. Maskey /* Create a known WLAN */ 8036ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_create(const char *, 8046ba597c5SAnurag S. Maskey nwam_known_wlan_handle_t *); 8056ba597c5SAnurag S. Maskey 8066ba597c5SAnurag S. Maskey /* Read a known WLAN from persistent storage */ 8076ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_read(const char *, uint64_t, 8086ba597c5SAnurag S. Maskey nwam_known_wlan_handle_t *); 8096ba597c5SAnurag S. Maskey 8106ba597c5SAnurag S. Maskey /* 8116ba597c5SAnurag S. Maskey * Destroy a known WLAN in persistent storage or free the in-memory 8126ba597c5SAnurag S. Maskey * representation. 8136ba597c5SAnurag S. Maskey */ 8146ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_destroy(nwam_known_wlan_handle_t, uint64_t); 8156ba597c5SAnurag S. Maskey extern void nwam_known_wlan_free(nwam_known_wlan_handle_t); 8166ba597c5SAnurag S. Maskey 8176ba597c5SAnurag S. Maskey /* make a copy of existing known WLAN */ 8186ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_copy(nwam_known_wlan_handle_t, const char *, 8196ba597c5SAnurag S. Maskey nwam_known_wlan_handle_t *); 8206ba597c5SAnurag S. Maskey 8216ba597c5SAnurag S. Maskey /* Commit known WLAN changes to persistent storage */ 8226ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_commit(nwam_known_wlan_handle_t, uint64_t); 8236ba597c5SAnurag S. Maskey 8246ba597c5SAnurag S. Maskey /* Validate known WLAN content */ 8256ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_validate(nwam_known_wlan_handle_t, 8266ba597c5SAnurag S. Maskey const char **); 8276ba597c5SAnurag S. Maskey 8286ba597c5SAnurag S. Maskey /* Walk known WLANs */ 8296ba597c5SAnurag S. Maskey extern nwam_error_t nwam_walk_known_wlans 8306ba597c5SAnurag S. Maskey (int(*)(nwam_known_wlan_handle_t, void *), void *, uint64_t, int *); 8316ba597c5SAnurag S. Maskey 8326ba597c5SAnurag S. Maskey /* get/set known WLAN name */ 8336ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_get_name(nwam_known_wlan_handle_t, char **); 8346ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_set_name(nwam_known_wlan_handle_t, 8356ba597c5SAnurag S. Maskey const char *); 8366ba597c5SAnurag S. Maskey extern boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t); 8376ba597c5SAnurag S. Maskey 8386ba597c5SAnurag S. Maskey /* walk all properties of an in-memory known WLAN */ 8396ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_walk_props(nwam_known_wlan_handle_t, 8406ba597c5SAnurag S. Maskey int (*)(const char *, nwam_value_t, void *), 8416ba597c5SAnurag S. Maskey void *, uint64_t, int *); 8426ba597c5SAnurag S. Maskey 8436ba597c5SAnurag S. Maskey /* delete/get/set/validate known WLAN property */ 8446ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_delete_prop(nwam_known_wlan_handle_t, 8456ba597c5SAnurag S. Maskey const char *); 8466ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_get_prop_value(nwam_known_wlan_handle_t, 8476ba597c5SAnurag S. Maskey const char *, nwam_value_t *); 8486ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_set_prop_value(nwam_known_wlan_handle_t, 8496ba597c5SAnurag S. Maskey const char *, nwam_value_t); 8506ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_validate_prop(nwam_known_wlan_handle_t, 8516ba597c5SAnurag S. Maskey const char *, nwam_value_t); 8526ba597c5SAnurag S. Maskey 8536ba597c5SAnurag S. Maskey /* Retrieve data type */ 8546ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_get_prop_type(const char *, 8556ba597c5SAnurag S. Maskey nwam_value_type_t *); 8566ba597c5SAnurag S. Maskey /* Retrieve prop description */ 8576ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_get_prop_description(const char *, 8586ba597c5SAnurag S. Maskey const char **); 8596ba597c5SAnurag S. Maskey 8606ba597c5SAnurag S. Maskey /* get default known WLAN props */ 8616ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_get_default_proplist(const char ***, 8626ba597c5SAnurag S. Maskey uint_t *); 8636ba597c5SAnurag S. Maskey 8646ba597c5SAnurag S. Maskey /* Whether the property is multi-valued or not */ 8656ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_prop_multivalued(const char *, boolean_t *); 8666ba597c5SAnurag S. Maskey 8676ba597c5SAnurag S. Maskey /* Add a bssid to the known WLANs */ 8686ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_add_to_known_wlans(const char *, 8696ba597c5SAnurag S. Maskey const char *, uint32_t, uint_t, const char *); 8706ba597c5SAnurag S. Maskey 8716ba597c5SAnurag S. Maskey /* Remove a bssid from known WLANs */ 8726ba597c5SAnurag S. Maskey extern nwam_error_t nwam_known_wlan_remove_from_known_wlans(const char *, 873ab32bdf2SJames Carlson const char *, const char *); 874b00044a2SJames Carlson 8756ba597c5SAnurag S. Maskey /* 8766ba597c5SAnurag S. Maskey * nwam_wlan_t is used for scan/need choice/need key events and by 8776ba597c5SAnurag S. Maskey * nwam_wlan_get_scan_results(). The following fields are valid: 8786ba597c5SAnurag S. Maskey * 8796ba597c5SAnurag S. Maskey * - for scan and need choice event, ESSID, BSSID, signal strength, security 8806ba597c5SAnurag S. Maskey * mode, speed, channel, bsstype, key index, and if we already have a key 8816ba597c5SAnurag S. Maskey * (have_key), if the WLAN is the current selection (selected) and 8826ba597c5SAnurag S. Maskey * if the current WLAN is connected (connected). 8836ba597c5SAnurag S. Maskey * - for need key events, ESSID, security mode, have_key, selected and connected 8846ba597c5SAnurag S. Maskey * values are set. The rest of the fields are not set since multiple WLANs 8856ba597c5SAnurag S. Maskey * may match the ESSID and have different speeds, channels etc. If an 8866ba597c5SAnurag S. Maskey * ESSID/BSSID selection is specified, the BSSID will be set also. 8876ba597c5SAnurag S. Maskey * 8886ba597c5SAnurag S. Maskey */ 8896ba597c5SAnurag S. Maskey typedef struct { 8906ba597c5SAnurag S. Maskey char nww_essid[NWAM_MAX_NAME_LEN]; 8916ba597c5SAnurag S. Maskey char nww_bssid[NWAM_MAX_NAME_LEN]; 8926ba597c5SAnurag S. Maskey char nww_signal_strength[NWAM_MAX_NAME_LEN]; 8936ba597c5SAnurag S. Maskey uint32_t nww_security_mode; /* a dladm_wlan_secmode_t */ 8946ba597c5SAnurag S. Maskey uint32_t nww_speed; /* a dladm_wlan_speed_t */ 8956ba597c5SAnurag S. Maskey uint32_t nww_channel; /* a dladm_wlan_channel_t */ 8966ba597c5SAnurag S. Maskey uint32_t nww_bsstype; /* a dladm_wlan_bsstype_t */ 8976ba597c5SAnurag S. Maskey uint_t nww_keyindex; 8986ba597c5SAnurag S. Maskey boolean_t nww_have_key; 8996ba597c5SAnurag S. Maskey boolean_t nww_selected; 9006ba597c5SAnurag S. Maskey boolean_t nww_connected; 9016ba597c5SAnurag S. Maskey } nwam_wlan_t; 9026ba597c5SAnurag S. Maskey 9036ba597c5SAnurag S. Maskey /* 9046ba597c5SAnurag S. Maskey * Active WLAN definitions. Used to scan WLANs/choose a WLAN/set a WLAN key. 9056ba597c5SAnurag S. Maskey */ 9066ba597c5SAnurag S. Maskey extern nwam_error_t nwam_wlan_scan(const char *); 9076ba597c5SAnurag S. Maskey extern nwam_error_t nwam_wlan_get_scan_results(const char *, uint_t *, 9086ba597c5SAnurag S. Maskey nwam_wlan_t **); 9096ba597c5SAnurag S. Maskey extern nwam_error_t nwam_wlan_select(const char *, const char *, const char *, 9106ba597c5SAnurag S. Maskey uint32_t, boolean_t); 9116ba597c5SAnurag S. Maskey extern nwam_error_t nwam_wlan_set_key(const char *, const char *, const char *, 9126ba597c5SAnurag S. Maskey uint32_t, uint_t, const char *); 9136ba597c5SAnurag S. Maskey 9146ba597c5SAnurag S. Maskey /* 9156ba597c5SAnurag S. Maskey * Event notification definitions 9166ba597c5SAnurag S. Maskey */ 9176ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_NOOP 0 9186ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_INIT 1 9196ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_SHUTDOWN 2 9206ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_OBJECT_ACTION 3 9216ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_OBJECT_STATE 4 9226ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_PRIORITY_GROUP 5 9236ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_INFO 6 9246ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_WLAN_SCAN_REPORT 7 9256ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_WLAN_NEED_CHOICE 8 9266ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_WLAN_NEED_KEY 9 9276ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_WLAN_CONNECTION_REPORT 10 9286ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_IF_ACTION 11 9296ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_IF_STATE 12 9306ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_LINK_ACTION 13 9316ba597c5SAnurag S. Maskey #define NWAM_EVENT_TYPE_LINK_STATE 14 9326ba597c5SAnurag S. Maskey #define NWAM_EVENT_MAX NWAM_EVENT_TYPE_LINK_STATE 9336ba597c5SAnurag S. Maskey 9346ba597c5SAnurag S. Maskey #define NWAM_EVENT_STATUS_OK 0 9356ba597c5SAnurag S. Maskey #define NWAM_EVENT_STATUS_NOT_HANDLED 1 9366ba597c5SAnurag S. Maskey 9376ba597c5SAnurag S. Maskey #define NWAM_EVENT_NETWORK_OBJECT_UNDEFINED 0 9386ba597c5SAnurag S. Maskey #define NWAM_EVENT_NETWORK_OBJECT_LINK 1 9396ba597c5SAnurag S. Maskey #define NWAM_EVENT_NETWORK_OBJECT_INTERFACE 2 9406ba597c5SAnurag S. Maskey 9416ba597c5SAnurag S. Maskey #define NWAM_EVENT_REQUEST_UNDEFINED 0 9426ba597c5SAnurag S. Maskey #define NWAM_EVENT_REQUEST_WLAN 1 9436ba597c5SAnurag S. Maskey #define NWAM_EVENT_REQUEST_KEY 2 9446ba597c5SAnurag S. Maskey 9456ba597c5SAnurag S. Maskey /* 9466ba597c5SAnurag S. Maskey * Actions for nwamd to perform, used in conjunction with 9476ba597c5SAnurag S. Maskey * nwam_request_type_t in nwam_door_arg_t. 9486ba597c5SAnurag S. Maskey * Add string representations to nwam_action_to_string() in libnwam_util.c. 9496ba597c5SAnurag S. Maskey */ 9506ba597c5SAnurag S. Maskey typedef enum { 9516ba597c5SAnurag S. Maskey NWAM_ACTION_UNKNOWN = -1, 9526ba597c5SAnurag S. Maskey NWAM_ACTION_ADD, 9536ba597c5SAnurag S. Maskey NWAM_ACTION_REMOVE, 9546ba597c5SAnurag S. Maskey NWAM_ACTION_REFRESH, 9556ba597c5SAnurag S. Maskey NWAM_ACTION_ENABLE, 9566ba597c5SAnurag S. Maskey NWAM_ACTION_DISABLE, 9576ba597c5SAnurag S. Maskey NWAM_ACTION_DESTROY 9586ba597c5SAnurag S. Maskey } nwam_action_t; 9596ba597c5SAnurag S. Maskey 9606ba597c5SAnurag S. Maskey typedef enum { 9616ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_UNKNOWN = -1, 9626ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_NCP = 0, 9636ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_NCU = 1, 9646ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_LOC = 2, 9656ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_ENM = 3, 9666ba597c5SAnurag S. Maskey NWAM_OBJECT_TYPE_KNOWN_WLAN = 4 9676ba597c5SAnurag S. Maskey } nwam_object_type_t; 9686ba597c5SAnurag S. Maskey 9696ba597c5SAnurag S. Maskey typedef struct nwam_event *nwam_event_t; 9706ba597c5SAnurag S. Maskey struct nwam_event { 9716ba597c5SAnurag S. Maskey int nwe_type; 9726ba597c5SAnurag S. Maskey uint32_t nwe_size; 9736ba597c5SAnurag S. Maskey 9746ba597c5SAnurag S. Maskey union { 9756ba597c5SAnurag S. Maskey struct nwam_event_object_action { 9766ba597c5SAnurag S. Maskey nwam_object_type_t nwe_object_type; 9776ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 9786ba597c5SAnurag S. Maskey char nwe_parent[NWAM_MAX_NAME_LEN]; 9796ba597c5SAnurag S. Maskey nwam_action_t nwe_action; 9806ba597c5SAnurag S. Maskey } nwe_object_action; 9816ba597c5SAnurag S. Maskey 9826ba597c5SAnurag S. Maskey struct nwam_event_object_state { 9836ba597c5SAnurag S. Maskey nwam_object_type_t nwe_object_type; 9846ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 9856ba597c5SAnurag S. Maskey char nwe_parent[NWAM_MAX_NAME_LEN]; 9866ba597c5SAnurag S. Maskey nwam_state_t nwe_state; 9876ba597c5SAnurag S. Maskey nwam_aux_state_t nwe_aux_state; 9886ba597c5SAnurag S. Maskey } nwe_object_state; 9896ba597c5SAnurag S. Maskey 9906ba597c5SAnurag S. Maskey struct nwam_event_priority_group_info { 9916ba597c5SAnurag S. Maskey int64_t nwe_priority; 9926ba597c5SAnurag S. Maskey } nwe_priority_group_info; 9936ba597c5SAnurag S. Maskey 9946ba597c5SAnurag S. Maskey struct nwam_event_info { 9956ba597c5SAnurag S. Maskey char nwe_message[NWAM_MAX_VALUE_LEN]; 9966ba597c5SAnurag S. Maskey } nwe_info; 9976ba597c5SAnurag S. Maskey 9986ba597c5SAnurag S. Maskey /* 9996ba597c5SAnurag S. Maskey * wlan_info stores both scan results and the single 10006ba597c5SAnurag S. Maskey * WLAN we require a key for in the case of _WLAN_NEED_KEY 10016ba597c5SAnurag S. Maskey * events. For _WLAN_CONNECTION_REPORT events, it stores 10026ba597c5SAnurag S. Maskey * the WLAN the connection succeeded/failed for, indicating 10036ba597c5SAnurag S. Maskey * success/failure using the 'connected' boolean. 10046ba597c5SAnurag S. Maskey */ 10056ba597c5SAnurag S. Maskey struct nwam_event_wlan_info { 10066ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 10076ba597c5SAnurag S. Maskey boolean_t nwe_connected; 10086ba597c5SAnurag S. Maskey uint16_t nwe_num_wlans; 10096ba597c5SAnurag S. Maskey nwam_wlan_t nwe_wlans[1]; 10106ba597c5SAnurag S. Maskey /* 10116ba597c5SAnurag S. Maskey * space may be allocated by user here for the 10126ba597c5SAnurag S. Maskey * number of wlans 10136ba597c5SAnurag S. Maskey */ 10146ba597c5SAnurag S. Maskey } nwe_wlan_info; 10156ba597c5SAnurag S. Maskey 10166ba597c5SAnurag S. Maskey struct nwam_event_if_action { 10176ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 10186ba597c5SAnurag S. Maskey nwam_action_t nwe_action; 10196ba597c5SAnurag S. Maskey } nwe_if_action; 10206ba597c5SAnurag S. Maskey 10216ba597c5SAnurag S. Maskey struct nwam_event_if_state { 10226ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 10236ba597c5SAnurag S. Maskey uint32_t nwe_flags; 10246ba597c5SAnurag S. Maskey uint32_t nwe_addr_valid; /* boolean */ 10256ba597c5SAnurag S. Maskey uint32_t nwe_addr_added; /* boolean */ 10266ba597c5SAnurag S. Maskey struct sockaddr_storage nwe_addr; 1027f6da83d4SAnurag S. Maskey struct sockaddr_storage nwe_netmask; 10286ba597c5SAnurag S. Maskey } nwe_if_state; 10296ba597c5SAnurag S. Maskey 10306ba597c5SAnurag S. Maskey struct nwam_event_link_state { 10316ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 10326ba597c5SAnurag S. Maskey boolean_t nwe_link_up; 10336ba597c5SAnurag S. Maskey /* link_state_t from sys/mac.h */ 10346ba597c5SAnurag S. Maskey } nwe_link_state; 10356ba597c5SAnurag S. Maskey 10366ba597c5SAnurag S. Maskey struct nwam_event_link_action { 10376ba597c5SAnurag S. Maskey char nwe_name[NWAM_MAX_NAME_LEN]; 10386ba597c5SAnurag S. Maskey nwam_action_t nwe_action; 10396ba597c5SAnurag S. Maskey } nwe_link_action; 10406ba597c5SAnurag S. Maskey } nwe_data; 10416ba597c5SAnurag S. Maskey }; 10426ba597c5SAnurag S. Maskey 10436ba597c5SAnurag S. Maskey /* NWAM client functions, used to register/unregister and receive events */ 10446ba597c5SAnurag S. Maskey extern nwam_error_t nwam_events_init(void); 10456ba597c5SAnurag S. Maskey extern void nwam_events_fini(void); 10466ba597c5SAnurag S. Maskey extern nwam_error_t nwam_event_wait(nwam_event_t *); 10476ba597c5SAnurag S. Maskey extern void nwam_event_free(nwam_event_t); 10486ba597c5SAnurag S. Maskey 10496ba597c5SAnurag S. Maskey /* Event-related string conversion functions */ 10506ba597c5SAnurag S. Maskey extern const char *nwam_action_to_string(nwam_action_t); 10516ba597c5SAnurag S. Maskey extern const char *nwam_event_type_to_string(int); 10526ba597c5SAnurag S. Maskey extern const char *nwam_state_to_string(nwam_state_t); 10536ba597c5SAnurag S. Maskey extern const char *nwam_aux_state_to_string(nwam_aux_state_t); 10546ba597c5SAnurag S. Maskey 10556ba597c5SAnurag S. Maskey extern const char *nwam_object_type_to_string(nwam_object_type_t); 10566ba597c5SAnurag S. Maskey extern nwam_object_type_t nwam_string_to_object_type(const char *); 10576ba597c5SAnurag S. Maskey 10586ba597c5SAnurag S. Maskey /* Utility strtok_r-like function */ 10596ba597c5SAnurag S. Maskey extern char *nwam_tokenize_by_unescaped_delim(char *, char, char **); 10606ba597c5SAnurag S. Maskey 10616ba597c5SAnurag S. Maskey #ifdef __cplusplus 1062b00044a2SJames Carlson } 1063b00044a2SJames Carlson #endif 1064b00044a2SJames Carlson 10656ba597c5SAnurag S. Maskey #endif /* _LIBNWAM_H */ 1066