]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/libnetwork/network/phy.h
wireless-ap: Automatically enable all supported ciphers
[people/ms/network.git] / src / libnetwork / network / phy.h
index 7adb2590c5b6a3cae0a88bda94cffc1581c0d908..bc6dafb4c30318be444627c62f0d44306fdecf17 100644 (file)
@@ -30,4 +30,85 @@ int network_phy_new(struct network_ctx*, struct network_phy** phy, const char* n
 struct network_phy* network_phy_ref(struct network_phy* phy);
 struct network_phy* network_phy_unref(struct network_phy* phy);
 
+enum network_phy_ciphers {
+       NETWORK_PHY_CIPHER_WEP40           = (1 <<  0),
+       NETWORK_PHY_CIPHER_TKIP            = (1 <<  1),
+       NETWORK_PHY_CIPHER_CCMP128         = (1 <<  2),
+       NETWORK_PHY_CIPHER_WEP104          = (1 <<  3),
+       NETWORK_PHY_CIPHER_CMAC128         = (1 <<  4),
+       NETWORK_PHY_CIPHER_GCMP128         = (1 <<  5),
+       NETWORK_PHY_CIPHER_GCMP256         = (1 <<  6),
+       NETWORK_PHY_CIPHER_CCMP256         = (1 <<  7),
+       NETWORK_PHY_CIPHER_GMAC128         = (1 <<  8),
+       NETWORK_PHY_CIPHER_GMAC256         = (1 <<  9),
+       NETWORK_PHY_CIPHER_CMAC256         = (1 << 10),
+       NETWORK_PHY_CIPHER_WPISMS4         = (1 << 11),
+};
+
+const char* network_phy_get_cipher_string(const enum network_phy_ciphers cipher);
+int network_phy_supports_cipher(struct network_phy* phy, const enum network_phy_ciphers cipher);
+char* network_phy_list_ciphers(struct network_phy* phy);
+
+enum network_phy_ht_caps {
+       NETWORK_PHY_HT_CAP_RX_LDPC         = (1 <<  0),
+       NETWORK_PHY_HT_CAP_HT40            = (1 <<  1),
+       NETWORK_PHY_HT_CAP_SMPS_STATIC     = (1 <<  2),
+       NETWORK_PHY_HT_CAP_SMPS_DYNAMIC    = (1 <<  3),
+       NETWORK_PHY_HT_CAP_RX_GF           = (1 <<  4),
+       NETWORK_PHY_HT_CAP_RX_HT20_SGI     = (1 <<  5),
+       NETWORK_PHY_HT_CAP_RX_HT40_SGI     = (1 <<  6),
+       NETWORK_PHY_HT_CAP_TX_STBC         = (1 <<  7),
+       NETWORK_PHY_HT_CAP_RX_STBC1        = (1 <<  8),
+       NETWORK_PHY_HT_CAP_RX_STBC2        = (1 <<  9),
+       NETWORK_PHY_HT_CAP_RX_STBC3        = (1 << 10),
+       NETWORK_PHY_HT_CAP_DELAYED_BA      = (1 << 11),
+       NETWORK_PHY_HT_CAP_MAX_AMSDU_7935  = (1 << 12),
+       NETWORK_PHY_HT_CAP_DSSS_CCK_HT40   = (1 << 13),
+       NETWORK_PHY_HT_CAP_HT40_INTOLERANT = (1 << 14),
+       NETWORK_PHY_HT_CAP_LSIG_TXOP_PROT  = (1 << 15),
+};
+
+enum network_phy_vht_caps {
+       NETWORK_PHY_VHT_CAP_VHT160             = (1 <<  0),
+       NETWORK_PHY_VHT_CAP_VHT80PLUS80        = (1 <<  1),
+       NETWORK_PHY_VHT_CAP_RX_LDPC            = (1 <<  2),
+       NETWORK_PHY_VHT_CAP_RX_SHORT_GI_80     = (1 <<  3),
+       NETWORK_PHY_VHT_CAP_RX_SHORT_GI_160    = (1 <<  4),
+       NETWORK_PHY_VHT_CAP_TX_STBC            = (1 <<  5),
+       NETWORK_PHY_VHT_CAP_SU_BEAMFORMER      = (1 <<  6),
+       NETWORK_PHY_VHT_CAP_SU_BEAMFORMEE      = (1 <<  7),
+       NETWORK_PHY_VHT_CAP_MU_BEAMFORMER      = (1 <<  8),
+       NETWORK_PHY_VHT_CAP_MU_BEAMFORMEE      = (1 <<  9),
+       NETWORK_PHY_VHT_CAP_TXOP_PS            = (1 << 10),
+       NETWORK_PHY_VHT_CAP_HTC_VHT            = (1 << 11),
+       NETWORK_PHY_VHT_CAP_RX_ANTENNA_PATTERN = (1 << 12),
+       NETWORK_PHY_VHT_CAP_TX_ANTENNA_PATTERN = (1 << 13),
+};
+
+
+char* network_phy_list_channels(struct network_phy* phy);
+int network_phy_has_vht_capability(struct network_phy* phy, const enum network_phy_vht_caps cap);
+char* network_phy_list_vht_capabilities(struct network_phy* phy);
+int network_phy_has_ht_capability(struct network_phy* phy, const enum network_phy_ht_caps cap);
+char* network_phy_list_ht_capabilities(struct network_phy* phy);
+
+#ifdef NETWORK_PRIVATE
+
+#include <linux/nl80211.h>
+#include <netlink/msg.h>
+
+struct nl_msg* network_phy_make_netlink_message(struct network_phy* phy,
+       enum nl80211_commands cmd, int flags);
+
+#define foreach_cipher(cipher) \
+       for(enum network_phy_ciphers cipher = NETWORK_PHY_CIPHER_WEP40; cipher <= NETWORK_PHY_CIPHER_WPISMS4; cipher <<= 1)
+
+#define foreach_vht_cap(cap) \
+       for(int cap = NETWORK_PHY_VHT_CAP_VHT160; cap <= NETWORK_PHY_VHT_CAP_TX_ANTENNA_PATTERN; cap <<= 1)
+
+#define foreach_ht_cap(cap) \
+       for(int cap = NETWORK_PHY_HT_CAP_RX_LDPC; cap <= NETWORK_PHY_HT_CAP_LSIG_TXOP_PROT; cap <<= 1)
+
+#endif
+
 #endif /* NETWORK_PHY_H */