blob: 4575c355a9b266af74c0b9807aab4218d5ae4290 [file] [log] [blame]
//
// Copyright (C) 2013 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef SHILL_TETHERING_H_
#define SHILL_TETHERING_H_
#include <stdint.h>
#include <set>
#include <vector>
namespace shill {
class Tethering {
public:
// Modern Android phones in tethering mode provide DHCP option 43 even
// without a DHCP client requesting it. The constant below is the value
// that it provides for this propery.
static const char kAndroidVendorEncapsulatedOptions[];
// This 802.11 BSS prefix is provided by many Android-based devices.
static const uint8_t kAndroidBSSIDPrefix[];
// This OUI is provided in 802.11 vendor IEs by many IOS devices in
// tethering mode.
static const uint32_t kIosOui;
// This bit, if set in the first octet of a MAC address, indicates that
// this address is not assigned by the IEEE, but was generated locally.
static const uint8_t kLocallyAdministratedMACBit;
// Returns whether an 802.11 BSSID is likely to be owned by an Android device.
static bool IsAndroidBSSID(const std::vector<uint8_t>& bssid);
// Returns whether an 802.11 BSSID is a locally-administered address, as
// opposed to a unique IEEE-issued address.
static bool IsLocallyAdministeredBSSID(const std::vector<uint8_t>& bssid);
// Returns whether any of the organizationally unique identifiers in
// |oui_set| is commonly associated with IOS devices.
static bool HasIosOui(const std::set<uint32_t>& oui_set);
};
} // namespace shill
#endif // SHILL_TETHERING_H_