]>
git.proxmox.com Git - ifupdown-pve.git/blob - archkfreebsd.c
10 #include "archcommon.h"
12 static bool match_mac(const char *iface
, const char *pattern
) {
13 for (struct ifaddrs
*ifa
= ifap
; ifa
; ifa
= ifa
->ifa_next
) {
14 if (ifa
->ifa_addr
->sa_family
!= AF_LINK
)
17 struct sockaddr_dl
*dl
= (struct sockaddr_dl
*)ifa
->ifa_addr
;
18 if (dl
->sdl_alen
!= 6)
21 if (strcmp(ifa
->ifa_name
, iface
))
24 unsigned char *ll
= (unsigned char *)LLADDR(dl
);
26 snprintf(buf
, sizeof buf
, "%02x:%02x:%02x:%02x:%02x:%02x", ll
[0], ll
[1], ll
[2], ll
[3], ll
[4], ll
[5]);
27 return fnmatch(pattern
, buf
, FNM_EXTMATCH
) == 0;
33 bool variable_match(const char *iface
, const char *variable
, const char *pattern
) {
34 if (!strcasecmp(variable
, "mac"))
35 return match_mac(iface
, pattern
);
37 if (!strcasecmp(variable
, "name"))
38 return fnmatch(pattern
, iface
, FNM_EXTMATCH
) == 0;
40 warnx("Unknown or unsupported pattern variable %s", variable
);