Remove libbpf code from connMan
[platform/upstream/connman.git] / include / mesh.h
1 /*
2  *
3  *  Connection Manager
4  *
5  *
6  *  Copyright (C) 2017 Samsung Electronics Co., Ltd.
7  *
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.
11  *
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.
16  *
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
20  *  02110-1301  USA
21  */
22
23 #ifndef __CONNMAN_MESH_H
24 #define __CONNMAN_MESH_H
25
26 #include <gdbus.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 struct connman_mesh;
33
34 enum connman_mesh_security {
35         CONNMAN_MESH_SECURITY_UNKNOWN = 0,
36         CONNMAN_MESH_SECURITY_NONE    = 1,
37         CONNMAN_MESH_SECURITY_SAE     = 2,
38 };
39
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,
48 };
49
50 enum connman_mesh_peer_type {
51         CONNMAN_MESH_PEER_TYPE_CREATED    = 0,
52         CONNMAN_MESH_PEER_TYPE_DISCOVERED = 1,
53 };
54
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,
67 };
68
69 enum connman_mesh_peer_status {
70         CONNMAN_MESH_PEER_ADD    = 0,
71         CONNMAN_MESH_PEER_REMOVE = 1,
72 };
73
74 struct connman_mesh *connman_mesh_create(const char *interface_addr,
75                                                                         const char *identifier);
76
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);
105
106 int connman_mesh_register(struct connman_mesh *mesh);
107 void connman_mesh_unregister(struct connman_mesh *mesh);
108
109 int __connman_mesh_add_virtual_interface(const char *ifname,
110                                           const char *parent_ifname, const char *bridge_ifname);
111
112 int __connman_mesh_remove_virtual_interface(const char *ifname);
113 int __connman_mesh_set_stp_gate_announce(bool gate_announce, int hwmp_rootmode,
114                                           int stp);
115
116 const char *connman_mesh_get_interface_name(void);
117 bool connman_mesh_is_interface_created(void);
118
119 struct connman_mesh *connman_mesh_get(const char *interface_addr,
120                                        const char *identifier);
121
122 int connman_mesh_notify_interface_create(bool success);
123 int connman_mesh_notify_interface_remove(bool success);
124
125 int connman_mesh_add_connected_peer(const char *peer_address);
126 int connman_mesh_remove_connected_peer(const char *peer_address, int reason);
127
128 typedef void (*mesh_change_peer_status_cb_t) (int result, void *user_data);
129
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);
138 };
139
140 int connman_mesh_driver_register(struct connman_mesh_driver *driver);
141 void connman_mesh_driver_unregister(struct connman_mesh_driver *driver);
142
143 struct connman_mesh_eth_driver {
144         int (*add_to_bridge) (const char *bridge);
145         int (*remove_from_bridge) (const char *bridge);
146 };
147
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);
150
151 #ifdef __cplusplus
152 }
153 #endif
154
155 #endif /* __CONNMAN_MESH_H */