blob: bd6957d01efdc8b979d5970a9d496407a4c212e5 [file] [log] [blame]
Guo-wei Shieh9faf1542015-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
Mirko Bonadei92ea95e2017-09-15 04:47:3111#ifndef RTC_BASE_IFADDRS_CONVERTER_H_
12#define RTC_BASE_IFADDRS_CONVERTER_H_
Guo-wei Shieh9faf1542015-12-28 22:06:5513
Henrik Kjellanderec78f1c2017-06-29 05:52:5014#if defined(WEBRTC_ANDROID)
Steve Anton10542f22019-01-11 17:11:0015#include "rtc_base/ifaddrs_android.h"
Henrik Kjellanderec78f1c2017-06-29 05:52:5016#else
17#include <ifaddrs.h>
18#endif // WEBRTC_ANDROID
Guo-wei Shieh9faf1542015-12-28 22:06:5519
Steve Anton10542f22019-01-11 17:11:0020#include "rtc_base/ip_address.h"
Henrik Kjellanderec78f1c2017-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 Shieh9faf1542015-12-28 22:06:5544
Mirko Bonadei92ea95e2017-09-15 04:47:3145#endif // RTC_BASE_IFADDRS_CONVERTER_H_