blob: 8a1fe69e4d8b45fc651fcaa2d80090ac4fb58df2 [file] [log] [blame]
Guo-wei Shieh013a6cf2015-12-28 22:06:551/*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Henrik Kjellanderfb3e1b62017-06-29 06:03:0411#ifndef WEBRTC_RTC_BASE_IFADDRS_CONVERTER_H_
12#define WEBRTC_RTC_BASE_IFADDRS_CONVERTER_H_
Guo-wei Shieh013a6cf2015-12-28 22:06:5513
Henrik Kjellander88b2dd42017-06-29 05:52:5014#if defined(WEBRTC_ANDROID)
kjellander19796962017-06-30 17:45:2115#include "webrtc/rtc_base/ifaddrs-android.h"
Henrik Kjellander88b2dd42017-06-29 05:52:5016#else
17#include <ifaddrs.h>
18#endif // WEBRTC_ANDROID
Guo-wei Shieh013a6cf2015-12-28 22:06:5519
kjellander19796962017-06-30 17:45:2120#include "webrtc/rtc_base/ipaddress.h"
Henrik Kjellander88b2dd42017-06-29 05:52:5021
22namespace rtc {
23
24// This class converts native interface addresses to our internal IPAddress
25// class. Subclasses should override ConvertNativeToIPAttributes to implement
26// the different ways of retrieving IPv6 attributes for various POSIX platforms.
27class IfAddrsConverter {
28 public:
29 IfAddrsConverter();
30 virtual ~IfAddrsConverter();
31 virtual bool ConvertIfAddrsToIPAddress(const struct ifaddrs* interface,
32 InterfaceAddress* ipaddress,
33 IPAddress* mask);
34
35 protected:
36 virtual bool ConvertNativeAttributesToIPAttributes(
37 const struct ifaddrs* interface,
38 int* ip_attributes);
39};
40
41IfAddrsConverter* CreateIfAddrsConverter();
42
43} // namespace rtc
Guo-wei Shieh013a6cf2015-12-28 22:06:5544
Henrik Kjellanderfb3e1b62017-06-29 06:03:0445#endif // WEBRTC_RTC_BASE_IFADDRS_CONVERTER_H_