summaryrefslogtreecommitdiff
path: root/src/core/devices/wifi/nm-wifi-utils.h
blob: 1d46a9000fbb39b51f0eed0bee91458009eb0b6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2011 Red Hat, Inc.
 */

#ifndef __NM_WIFI_UTILS_H__
#define __NM_WIFI_UTILS_H__

#include "nm-dbus-interface.h"
#include "nm-connection.h"
#include "nm-setting-wireless.h"
#include "nm-setting-wireless-security.h"
#include "nm-setting-8021x.h"
#include "libnm-base/nm-base.h"

typedef enum {
    NM_IWD_NETWORK_SECURITY_OPEN,
    NM_IWD_NETWORK_SECURITY_WEP,
    NM_IWD_NETWORK_SECURITY_PSK,
    NM_IWD_NETWORK_SECURITY_8021X,
} NMIwdNetworkSecurity;

typedef struct {
    bool     source;
    bool     sink;
    uint16_t port;
    bool     has_audio;
    bool     has_uibc;
    bool     has_cp;
} NMIwdWfdInfo;

gboolean nm_wifi_utils_complete_connection(GBytes       *ssid,
                                           const char   *bssid,
                                           _NM80211Mode  mode,
                                           guint32       ap_freq,
                                           guint32       flags,
                                           guint32       wpa_flags,
                                           guint32       rsn_flags,
                                           NMConnection *connection,
                                           gboolean      lock_bssid,
                                           GError      **error);

gboolean nm_wifi_utils_is_manf_default_ssid(GBytes *ssid);

gboolean nm_wifi_connection_get_iwd_ssid_and_security(NMConnection         *connection,
                                                      char                **ssid,
                                                      NMIwdNetworkSecurity *security);
char    *nm_wifi_utils_get_iwd_config_filename(const char          *ssid,
                                               gssize               ssid_len,
                                               NMIwdNetworkSecurity security);

GKeyFile *
nm_wifi_utils_connection_to_iwd_config(NMConnection *conn, char **out_filename, GError **error);

bool    nm_wifi_utils_parse_wfd_ies(GBytes *ies, NMIwdWfdInfo *out_wfd);
GBytes *nm_wifi_utils_build_wfd_ies(const NMIwdWfdInfo *wfd);
bool    nm_wifi_utils_wfd_info_eq(const NMIwdWfdInfo *a, const NMIwdWfdInfo *b);

#endif /* __NM_WIFI_UTILS_H__ */