14#ifndef OPENVPN_NETCONF_ENUMIFACE_H
15#define OPENVPN_NETCONF_ENUMIFACE_H
18#include <sys/socket.h>
21#ifdef OPENVPN_PLATFORM_IPHONE
49 std::ostringstream
os;
50 os <<
"INTERFACES:" << std::endl;
51 for (
const ifaddrs *i =
ifinfo.get(); i->ifa_next; i = i->ifa_next)
58 for (
const ifaddrs *i =
ifinfo.get(); i->ifa_next; i = i->ifa_next)
60 if (!std::strcmp(iface, i->ifa_name)
69 static void render(
const ifaddrs *i, std::ostream &
os)
91 catch (
const std::exception &)
100 os <<
" (" << dst <<
')';
103 catch (
const std::exception &)
117 static const struct flag_info flag_info[] = {
188 for (
const struct flag_info *fi = flag_info; fi->flag; ++fi)
189 if (
flags & fi->flag)
196 ifaddrs *ifa =
nullptr;
std::unique_ptr< ifaddrs, decltype(&free_if_addrs)> ifinfo
static ifaddrs * alloc_if_addrs()
static std::string render_flags(const u_int flags)
std::string to_string() const
bool iface_up(const char *iface) const
static void render(const ifaddrs *i, std::ostream &os)
OPENVPN_EXCEPTION(enum_iface_error)
static void free_if_addrs(ifaddrs *p)
static Addr from_sockaddr(const struct sockaddr *sa)
static bool sockaddr_defined(const struct sockaddr *sa)
unsigned int prefix_len() const