15ff8d64b6
As far as I can tell, it has no consumers whatsoever outside the tree. (wpa_supplicant did not even use it.) So, remove it altogether. If that turns out to be mistaken, we can reinstate it temporarily as a private class function or ABI-only symbol.
145 lines
3.5 KiB
C++
145 lines
3.5 KiB
C++
/*
|
|
* Copyright 2010, Haiku, Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _NETWORK_DEVICE_H
|
|
#define _NETWORK_DEVICE_H
|
|
|
|
|
|
#include <net/if.h>
|
|
#include <string.h>
|
|
|
|
|
|
// authentication modes
|
|
enum {
|
|
B_NETWORK_AUTHENTICATION_NONE = 0,
|
|
B_NETWORK_AUTHENTICATION_WEP = 1,
|
|
B_NETWORK_AUTHENTICATION_WPA = 2,
|
|
B_NETWORK_AUTHENTICATION_WPA2 = 3,
|
|
B_NETWORK_AUTHENTICATION_EAP = 4
|
|
};
|
|
|
|
// cipher algorithms
|
|
enum {
|
|
B_NETWORK_CIPHER_NONE = 0x01,
|
|
B_NETWORK_CIPHER_WEP_40 = 0x02,
|
|
B_NETWORK_CIPHER_WEP_104 = 0x04,
|
|
B_NETWORK_CIPHER_TKIP = 0x08,
|
|
B_NETWORK_CIPHER_CCMP = 0x10,
|
|
B_NETWORK_CIPHER_AES_128_CMAC = 0x20
|
|
};
|
|
|
|
// key modes
|
|
enum {
|
|
B_KEY_MODE_IEEE802_1X = 0x0001,
|
|
B_KEY_MODE_PSK = 0x0002,
|
|
B_KEY_MODE_NONE = 0x0004,
|
|
B_KEY_MODE_FT_IEEE802_1X = 0x0020,
|
|
B_KEY_MODE_FT_PSK = 0x0040,
|
|
B_KEY_MODE_IEEE802_1X_SHA256 = 0x0080,
|
|
B_KEY_MODE_PSK_SHA256 = 0x0100,
|
|
B_KEY_MODE_WPS = 0x0200
|
|
};
|
|
|
|
// eap encapsulation method (IEEE 802.1x)
|
|
enum {
|
|
B_NETWORK_EAP_ENCAPSULATION_NONE = 0x0000,
|
|
B_NETWORK_EAP_ENCAPSULATION_PEAP = 0x0001,
|
|
B_NETWORK_EAP_ENCAPSULATION_TLS = 0x0002
|
|
};
|
|
|
|
|
|
#if defined(__cplusplus) && !defined(_KERNEL_MODE)
|
|
|
|
#include <NetworkAddress.h>
|
|
|
|
|
|
struct wireless_network {
|
|
char name[32];
|
|
BNetworkAddress address;
|
|
uint8 noise_level;
|
|
uint8 signal_strength;
|
|
uint32 flags;
|
|
uint32 authentication_mode;
|
|
uint32 cipher;
|
|
uint32 group_cipher;
|
|
uint32 key_mode;
|
|
|
|
bool operator==(const wireless_network& other) {
|
|
return strncmp(name, other.name, 32) == 0
|
|
// ignore address difference
|
|
&& noise_level == other.noise_level
|
|
&& signal_strength == other.signal_strength
|
|
&& flags == other.flags
|
|
&& authentication_mode == other.authentication_mode
|
|
&& cipher == other.cipher
|
|
&& group_cipher == other.group_cipher
|
|
&& key_mode == other.key_mode;
|
|
}
|
|
};
|
|
|
|
// flags
|
|
#define B_NETWORK_IS_ENCRYPTED 0x01
|
|
#define B_NETWORK_IS_PERSISTENT 0x02
|
|
|
|
|
|
class BNetworkDevice {
|
|
public:
|
|
BNetworkDevice();
|
|
BNetworkDevice(const char* name);
|
|
~BNetworkDevice();
|
|
|
|
void Unset();
|
|
void SetTo(const char* name);
|
|
|
|
const char* Name() const;
|
|
bool Exists() const;
|
|
uint32 Index() const;
|
|
|
|
uint32 Flags() const;
|
|
bool HasLink() const;
|
|
|
|
int32 Media() const;
|
|
status_t SetMedia(int32 media);
|
|
|
|
status_t GetHardwareAddress(BNetworkAddress& address);
|
|
|
|
bool IsEthernet();
|
|
bool IsWireless();
|
|
|
|
status_t Control(int option, void* request);
|
|
|
|
status_t Scan(bool wait = true,
|
|
bool forceRescan = true);
|
|
|
|
status_t GetNetworks(wireless_network*& networks,
|
|
uint32& count);
|
|
status_t GetNetwork(const char* name,
|
|
wireless_network& network);
|
|
status_t GetNetwork(const BNetworkAddress& address,
|
|
wireless_network& network);
|
|
|
|
status_t JoinNetwork(const char* name,
|
|
const char* password = NULL);
|
|
status_t JoinNetwork(const wireless_network& network,
|
|
const char* password = NULL);
|
|
status_t JoinNetwork(const BNetworkAddress& address,
|
|
const char* password = NULL);
|
|
|
|
status_t LeaveNetwork(const char* name);
|
|
status_t LeaveNetwork(const wireless_network& network);
|
|
status_t LeaveNetwork(const BNetworkAddress& address);
|
|
|
|
status_t GetNextAssociatedNetwork(uint32& cookie,
|
|
wireless_network& network);
|
|
status_t GetNextAssociatedNetwork(uint32& cookie,
|
|
BNetworkAddress& address);
|
|
|
|
private:
|
|
char fName[IF_NAMESIZE];
|
|
};
|
|
|
|
#endif // __cplusplus && !_KERNEL_MODE
|
|
|
|
#endif // _NETWORK_DEVICE_H
|