6 * Copyright (C) 2017 Samsung Electronics Co., Ltd.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
23 #ifndef __CONNMAN_MESH_H
24 #define __CONNMAN_MESH_H
34 enum connman_mesh_security {
35 CONNMAN_MESH_SECURITY_UNKNOWN = 0,
36 CONNMAN_MESH_SECURITY_NONE = 1,
37 CONNMAN_MESH_SECURITY_SAE = 2,
40 enum connman_mesh_state {
41 CONNMAN_MESH_STATE_UNKNOWN = 0,
42 CONNMAN_MESH_STATE_IDLE = 1,
43 CONNMAN_MESH_STATE_ASSOCIATION = 2,
44 CONNMAN_MESH_STATE_CONFIGURATION = 3,
45 CONNMAN_MESH_STATE_READY = 4,
46 CONNMAN_MESH_STATE_DISCONNECT = 5,
47 CONNMAN_MESH_STATE_FAILURE = 6,
50 enum connman_mesh_peer_type {
51 CONNMAN_MESH_PEER_TYPE_CREATED = 0,
52 CONNMAN_MESH_PEER_TYPE_DISCOVERED = 1,
55 enum connman_mesh_peer_disconnect_reason {
56 CONNMAN_MESH_REASON_UNKNOWN = 0,
57 CONNMAN_MESH_DEAUTH_LEAVING = 1,
58 CONNMAN_MESH_PEERING_CANCELLED = 2,
59 CONNMAN_MESH_MAX_PEERS = 3,
60 CONNMAN_MESH_CONFIG_POLICY_VIOLATION = 4,
61 CONNMAN_MESH_CLOSE_RCVD = 5,
62 CONNMAN_MESH_MAX_RETRIES = 6,
63 CONNMAN_MESH_CONFIRM_TIMEOUT = 7,
64 CONNMAN_MESH_INVALID_GTK = 8,
65 CONNMAN_MESH_INCONSISTENT_PARAMS = 9,
66 CONNMAN_MESH_INVALID_SECURITY_CAP = 10,
69 enum connman_mesh_peer_status {
70 CONNMAN_MESH_PEER_ADD = 0,
71 CONNMAN_MESH_PEER_REMOVE = 1,
74 struct connman_mesh *connman_mesh_create(const char *interface_addr,
75 const char *identifier);
77 void connman_mesh_set_name(struct connman_mesh *mesh, const char *name);
78 const char *connman_mesh_get_name(struct connman_mesh *mesh);
79 void connman_mesh_set_passphrase(struct connman_mesh *mesh,
80 const char *passphrase);
81 const char *connman_mesh_get_passphrase(struct connman_mesh *mesh);
82 void connman_mesh_set_address(struct connman_mesh *mesh, const char *address);
83 void connman_mesh_set_security(struct connman_mesh *mesh, const char *security);
84 const char *connman_mesh_get_security(struct connman_mesh *mesh);
85 void connman_mesh_set_frequency(struct connman_mesh *mesh, uint16_t frequency);
86 uint16_t connman_mesh_get_frequency(struct connman_mesh *mesh);
87 void connman_mesh_set_ieee80211w(struct connman_mesh *mesh, uint16_t ieee80211w);
88 uint16_t connman_mesh_get_ieee80211w(struct connman_mesh *mesh);
89 int connman_mesh_peer_set_state(struct connman_mesh *mesh,
90 enum connman_mesh_state new_state);
91 void connman_mesh_set_peer_type(struct connman_mesh *mesh,
92 enum connman_mesh_peer_type type);
93 bool connman_mesh_peer_is_connected_state(struct connman_mesh *mesh);
94 struct connman_mesh *connman_get_connected_mesh_from_name(char *name);
95 struct connman_mesh *connman_get_connecting_mesh_from_name(char *name);
96 void connman_mesh_set_index(struct connman_mesh *mesh, int index);
97 void connman_mesh_set_strength(struct connman_mesh *mesh, uint8_t strength);
98 void connman_mesh_peer_set_disconnect_reason(struct connman_mesh *mesh,
99 int disconnect_reason);
100 void __connman_mesh_add_ethernet_to_bridge(void);
101 void __connman_mesh_remove_ethernet_from_bridge(void);
102 int __connman_mesh_change_peer_status(DBusMessage *msg,
103 const char *peer_address,
104 enum connman_mesh_peer_status status);
106 int connman_mesh_register(struct connman_mesh *mesh);
107 void connman_mesh_unregister(struct connman_mesh *mesh);
109 int __connman_mesh_add_virtual_interface(const char *ifname,
110 const char *parent_ifname, const char *bridge_ifname);
112 int __connman_mesh_remove_virtual_interface(const char *ifname);
113 int __connman_mesh_set_stp_gate_announce(bool gate_announce, int hwmp_rootmode,
116 const char *connman_mesh_get_interface_name(void);
117 bool connman_mesh_is_interface_created(void);
119 struct connman_mesh *connman_mesh_get(const char *interface_addr,
120 const char *identifier);
122 int connman_mesh_notify_interface_create(bool success);
123 int connman_mesh_notify_interface_remove(bool success);
125 int connman_mesh_add_connected_peer(const char *peer_address);
126 int connman_mesh_remove_connected_peer(const char *peer_address, int reason);
128 typedef void (*mesh_change_peer_status_cb_t) (int result, void *user_data);
130 struct connman_mesh_driver {
131 int (*add_interface) (const char *ifname, const char *parent_ifname);
132 int (*remove_interface) (const char *ifname);
133 int (*connect) (struct connman_mesh *mesh);
134 int (*disconnect) (struct connman_mesh *mesh);
135 int (*change_peer_status) (const char *peer_address,
136 enum connman_mesh_peer_status status,
137 mesh_change_peer_status_cb_t callback, void *user_data);
140 int connman_mesh_driver_register(struct connman_mesh_driver *driver);
141 void connman_mesh_driver_unregister(struct connman_mesh_driver *driver);
143 struct connman_mesh_eth_driver {
144 int (*add_to_bridge) (const char *bridge);
145 int (*remove_from_bridge) (const char *bridge);
148 int connman_mesh_eth_driver_register(struct connman_mesh_eth_driver *driver);
149 void connman_mesh_eth_driver_unregister(struct connman_mesh_eth_driver *driver);
155 #endif /* __CONNMAN_MESH_H */