summaryrefslogtreecommitdiff
path: root/include/mesh.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mesh.h')
-rw-r--r--include/mesh.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/include/mesh.h b/include/mesh.h
new file mode 100644
index 00000000..547c237e
--- /dev/null
+++ b/include/mesh.h
@@ -0,0 +1,155 @@
+/*
+ *
+ * Connection Manager
+ *
+ *
+ * Copyright (C) 2017 Samsung Electronics Co., Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#ifndef __CONNMAN_MESH_H
+#define __CONNMAN_MESH_H
+
+#include <gdbus.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct connman_mesh;
+
+enum connman_mesh_security {
+ CONNMAN_MESH_SECURITY_UNKNOWN = 0,
+ CONNMAN_MESH_SECURITY_NONE = 1,
+ CONNMAN_MESH_SECURITY_SAE = 2,
+};
+
+enum connman_mesh_state {
+ CONNMAN_MESH_STATE_UNKNOWN = 0,
+ CONNMAN_MESH_STATE_IDLE = 1,
+ CONNMAN_MESH_STATE_ASSOCIATION = 2,
+ CONNMAN_MESH_STATE_CONFIGURATION = 3,
+ CONNMAN_MESH_STATE_READY = 4,
+ CONNMAN_MESH_STATE_DISCONNECT = 5,
+ CONNMAN_MESH_STATE_FAILURE = 6,
+};
+
+enum connman_mesh_peer_type {
+ CONNMAN_MESH_PEER_TYPE_CREATED = 0,
+ CONNMAN_MESH_PEER_TYPE_DISCOVERED = 1,
+};
+
+enum connman_mesh_peer_disconnect_reason {
+ CONNMAN_MESH_REASON_UNKNOWN = 0,
+ CONNMAN_MESH_DEAUTH_LEAVING = 1,
+ CONNMAN_MESH_PEERING_CANCELLED = 2,
+ CONNMAN_MESH_MAX_PEERS = 3,
+ CONNMAN_MESH_CONFIG_POLICY_VIOLATION = 4,
+ CONNMAN_MESH_CLOSE_RCVD = 5,
+ CONNMAN_MESH_MAX_RETRIES = 6,
+ CONNMAN_MESH_CONFIRM_TIMEOUT = 7,
+ CONNMAN_MESH_INVALID_GTK = 8,
+ CONNMAN_MESH_INCONSISTENT_PARAMS = 9,
+ CONNMAN_MESH_INVALID_SECURITY_CAP = 10,
+};
+
+enum connman_mesh_peer_status {
+ CONNMAN_MESH_PEER_ADD = 0,
+ CONNMAN_MESH_PEER_REMOVE = 1,
+};
+
+struct connman_mesh *connman_mesh_create(const char *interface_addr,
+ const char *identifier);
+
+void connman_mesh_set_name(struct connman_mesh *mesh, const char *name);
+const char *connman_mesh_get_name(struct connman_mesh *mesh);
+void connman_mesh_set_passphrase(struct connman_mesh *mesh,
+ const char *passphrase);
+const char *connman_mesh_get_passphrase(struct connman_mesh *mesh);
+void connman_mesh_set_address(struct connman_mesh *mesh, const char *address);
+void connman_mesh_set_security(struct connman_mesh *mesh, const char *security);
+const char *connman_mesh_get_security(struct connman_mesh *mesh);
+void connman_mesh_set_frequency(struct connman_mesh *mesh, uint16_t frequency);
+uint16_t connman_mesh_get_frequency(struct connman_mesh *mesh);
+void connman_mesh_set_ieee80211w(struct connman_mesh *mesh, uint16_t ieee80211w);
+uint16_t connman_mesh_get_ieee80211w(struct connman_mesh *mesh);
+int connman_mesh_peer_set_state(struct connman_mesh *mesh,
+ enum connman_mesh_state new_state);
+void connman_mesh_set_peer_type(struct connman_mesh *mesh,
+ enum connman_mesh_peer_type type);
+bool connman_mesh_peer_is_connected_state(struct connman_mesh *mesh);
+struct connman_mesh *connman_get_connected_mesh_from_name(char *name);
+struct connman_mesh *connman_get_connecting_mesh_from_name(char *name);
+void connman_mesh_set_index(struct connman_mesh *mesh, int index);
+void connman_mesh_set_strength(struct connman_mesh *mesh, uint8_t strength);
+void connman_mesh_peer_set_disconnect_reason(struct connman_mesh *mesh,
+ int disconnect_reason);
+void __connman_mesh_add_ethernet_to_bridge(void);
+void __connman_mesh_remove_ethernet_from_bridge(void);
+int __connman_mesh_change_peer_status(DBusMessage *msg,
+ const char *peer_address,
+ enum connman_mesh_peer_status status);
+
+int connman_mesh_register(struct connman_mesh *mesh);
+void connman_mesh_unregister(struct connman_mesh *mesh);
+
+int __connman_mesh_add_virtual_interface(const char *ifname,
+ const char *parent_ifname, const char *bridge_ifname);
+
+int __connman_mesh_remove_virtual_interface(const char *ifname);
+int __connman_mesh_set_stp_gate_announce(bool gate_announce, int hwmp_rootmode,
+ int stp);
+
+const char *connman_mesh_get_interface_name(void);
+bool connman_mesh_is_interface_created(void);
+
+struct connman_mesh *connman_mesh_get(const char *interface_addr,
+ const char *identifier);
+
+int connman_mesh_notify_interface_create(bool success);
+int connman_mesh_notify_interface_remove(bool success);
+
+int connman_mesh_add_connected_peer(const char *peer_address);
+int connman_mesh_remove_connected_peer(const char *peer_address, int reason);
+
+typedef void (*mesh_change_peer_status_cb_t) (int result, void *user_data);
+
+struct connman_mesh_driver {
+ int (*add_interface) (const char *ifname, const char *parent_ifname);
+ int (*remove_interface) (const char *ifname);
+ int (*connect) (struct connman_mesh *mesh);
+ int (*disconnect) (struct connman_mesh *mesh);
+ int (*change_peer_status) (const char *peer_address,
+ enum connman_mesh_peer_status status,
+ mesh_change_peer_status_cb_t callback, void *user_data);
+};
+
+int connman_mesh_driver_register(struct connman_mesh_driver *driver);
+void connman_mesh_driver_unregister(struct connman_mesh_driver *driver);
+
+struct connman_mesh_eth_driver {
+ int (*add_to_bridge) (const char *bridge);
+ int (*remove_from_bridge) (const char *bridge);
+};
+
+int connman_mesh_eth_driver_register(struct connman_mesh_eth_driver *driver);
+void connman_mesh_eth_driver_unregister(struct connman_mesh_eth_driver *driver);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CONNMAN_MESH_H */