summaryrefslogtreecommitdiffstats
path: root/include/xtables.h
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2023-12-17 15:10:15 +0100
committerPhil Sutter <phil@nwl.cc>2024-01-10 16:07:30 +0100
commit810f8568f44f5863c2350a39f4f5c8d60f762958 (patch)
tree06fcabcc577f937d22e090be877cf527753dc127 /include/xtables.h
parent122300a6fff9892b697f8900a7f84e94bac151ee (diff)
libxtables: xtoptions: Implement XTTYPE_ETHERMACMASK
Accept an Ethernet MAC address with optional mask in the format xtables_parse_mac_and_mask() expects it. Does not support XTOPT_PUT (for now) due to the lack of defined data structure.
Diffstat (limited to 'include/xtables.h')
-rw-r--r--include/xtables.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/xtables.h b/include/xtables.h
index db7c492a..ab856ebc 100644
--- a/include/xtables.h
+++ b/include/xtables.h
@@ -12,6 +12,7 @@
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
+#include <netinet/ether.h>
#include <netinet/in.h>
#include <net/if.h>
#include <linux/types.h>
@@ -68,6 +69,7 @@ struct in_addr;
* %XTTYPE_PLEN: prefix length
* %XTTYPE_PLENMASK: prefix length (ptr: union nf_inet_addr)
* %XTTYPE_ETHERMAC: Ethernet MAC address in hex form
+ * %XTTYPE_ETHERMACMASK: Ethernet MAC address in hex form with optional mask
*/
enum xt_option_type {
XTTYPE_NONE,
@@ -92,6 +94,7 @@ enum xt_option_type {
XTTYPE_PLEN,
XTTYPE_PLENMASK,
XTTYPE_ETHERMAC,
+ XTTYPE_ETHERMACMASK,
};
/**
@@ -167,7 +170,9 @@ struct xt_option_call {
struct {
uint32_t mark, mask;
};
- uint8_t ethermac[6];
+ struct {
+ uint8_t ethermac[ETH_ALEN], ethermacmask[ETH_ALEN];
+ };
} val;
/* Wished for a world where the ones below were gone: */
union {