23 return (net_addr_ll_set(ctx, ifname, addr) == 0);
27#if defined(TARGET_OPENBSD) || defined(TARGET_FREEBSD) || defined(TARGET_DARWIN)
28#define IFCONFIG_LLADDR_FMT "%s %s lladdr %s"
29#elif defined(TARGET_NETBSD)
30#define IFCONFIG_LLADDR_FMT "%s %s link %s active"
35#ifdef IFCONFIG_LLADDR_FMT
44 "Sorry, but I don't know how to configure link layer addresses on this operating system.");
53 if (!ifname || !lladdr)
58#if defined(TARGET_LINUX)
59 int r = set_lladdr_linux(ctx, ifname, lladdr);
66 msg(
M_INFO,
"TUN/TAP link layer address set to %s", lladdr);
void argv_msg(const msglvl_t msglevel, const struct argv *a)
Write the arguments stored in a struct argv via the msg() command.
void argv_free(struct argv *a)
Frees all memory allocations allocated by the struct argv related functions.
bool argv_printf(struct argv *argres, const char *format,...)
printf() variant which populates a struct argv.
struct argv argv_new(void)
Allocates a new struct argv and ensures it is initialised.
static int set_lladdr_ifconfig(const char *ifname, const char *lladdr, const struct env_set *es)
int set_lladdr(openvpn_net_ctx_t *ctx, const char *ifname, const char *lladdr, const struct env_set *es)
#define MAC_SCAN_ARG(_mac)
int openvpn_execve_check(const struct argv *a, const struct env_set *es, const unsigned int flags, const char *error_message)