Commit a12143e6 authored by Jeremy Sowden's avatar Jeremy Sowden Committed by Pablo Neira Ayuso
Browse files

netfilter: bitwise: rename some boolean operation functions



In the next patch we add support for doing AND, OR and XOR operations
directly in the kernel, so rename some functions and an enum constant
related to mask-and-xor boolean operations.

Signed-off-by: default avatarJeremy Sowden <jeremy@azazel.net>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent f0d839c1
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -564,16 +564,20 @@ enum nft_immediate_attributes {
/**
 * enum nft_bitwise_ops - nf_tables bitwise operations
 *
 * @NFT_BITWISE_BOOL: mask-and-xor operation used to implement NOT, AND, OR and
 *                    XOR boolean operations
 * @NFT_BITWISE_MASK_XOR: mask-and-xor operation used to implement NOT, AND, OR
 *                        and XOR boolean operations
 * @NFT_BITWISE_LSHIFT: left-shift operation
 * @NFT_BITWISE_RSHIFT: right-shift operation
 */
enum nft_bitwise_ops {
	NFT_BITWISE_BOOL,
	NFT_BITWISE_MASK_XOR,
	NFT_BITWISE_LSHIFT,
	NFT_BITWISE_RSHIFT,
};
/*
 * Old name for NFT_BITWISE_MASK_XOR.  Retained for backwards-compatibility.
 */
#define NFT_BITWISE_BOOL NFT_BITWISE_MASK_XOR

/**
 * enum nft_bitwise_attributes - nf_tables bitwise expression netlink attributes
+17 −17
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ struct nft_bitwise {
	struct nft_data		data;
};

static void nft_bitwise_eval_bool(u32 *dst, const u32 *src,
static void nft_bitwise_eval_mask_xor(u32 *dst, const u32 *src,
				      const struct nft_bitwise *priv)
{
	unsigned int i;
@@ -68,8 +68,8 @@ void nft_bitwise_eval(const struct nft_expr *expr,
	u32 *dst = &regs->data[priv->dreg];

	switch (priv->op) {
	case NFT_BITWISE_BOOL:
		nft_bitwise_eval_bool(dst, src, priv);
	case NFT_BITWISE_MASK_XOR:
		nft_bitwise_eval_mask_xor(dst, src, priv);
		break;
	case NFT_BITWISE_LSHIFT:
		nft_bitwise_eval_lshift(dst, src, priv);
@@ -90,7 +90,7 @@ static const struct nla_policy nft_bitwise_policy[NFTA_BITWISE_MAX + 1] = {
	[NFTA_BITWISE_DATA]	= { .type = NLA_NESTED },
};

static int nft_bitwise_init_bool(struct nft_bitwise *priv,
static int nft_bitwise_init_mask_xor(struct nft_bitwise *priv,
				     const struct nlattr *const tb[])
{
	struct nft_data_desc mask = {
@@ -185,7 +185,7 @@ static int nft_bitwise_init(const struct nft_ctx *ctx,
	if (tb[NFTA_BITWISE_OP]) {
		priv->op = ntohl(nla_get_be32(tb[NFTA_BITWISE_OP]));
		switch (priv->op) {
		case NFT_BITWISE_BOOL:
		case NFT_BITWISE_MASK_XOR:
		case NFT_BITWISE_LSHIFT:
		case NFT_BITWISE_RSHIFT:
			break;
@@ -193,12 +193,12 @@ static int nft_bitwise_init(const struct nft_ctx *ctx,
			return -EOPNOTSUPP;
		}
	} else {
		priv->op = NFT_BITWISE_BOOL;
		priv->op = NFT_BITWISE_MASK_XOR;
	}

	switch(priv->op) {
	case NFT_BITWISE_BOOL:
		err = nft_bitwise_init_bool(priv, tb);
	case NFT_BITWISE_MASK_XOR:
		err = nft_bitwise_init_mask_xor(priv, tb);
		break;
	case NFT_BITWISE_LSHIFT:
	case NFT_BITWISE_RSHIFT:
@@ -209,7 +209,7 @@ static int nft_bitwise_init(const struct nft_ctx *ctx,
	return err;
}

static int nft_bitwise_dump_bool(struct sk_buff *skb,
static int nft_bitwise_dump_mask_xor(struct sk_buff *skb,
				     const struct nft_bitwise *priv)
{
	if (nft_data_dump(skb, NFTA_BITWISE_MASK, &priv->mask,
@@ -248,8 +248,8 @@ static int nft_bitwise_dump(struct sk_buff *skb,
		return -1;

	switch (priv->op) {
	case NFT_BITWISE_BOOL:
		err = nft_bitwise_dump_bool(skb, priv);
	case NFT_BITWISE_MASK_XOR:
		err = nft_bitwise_dump_mask_xor(skb, priv);
		break;
	case NFT_BITWISE_LSHIFT:
	case NFT_BITWISE_RSHIFT:
@@ -269,7 +269,7 @@ static int nft_bitwise_offload(struct nft_offload_ctx *ctx,
	const struct nft_bitwise *priv = nft_expr_priv(expr);
	struct nft_offload_reg *reg = &ctx->regs[priv->dreg];

	if (priv->op != NFT_BITWISE_BOOL)
	if (priv->op != NFT_BITWISE_MASK_XOR)
		return -EOPNOTSUPP;

	if (memcmp(&priv->xor, &zero, sizeof(priv->xor)) ||
@@ -406,7 +406,7 @@ nft_bitwise_fast_dump(struct sk_buff *skb,
		return -1;
	if (nla_put_be32(skb, NFTA_BITWISE_LEN, htonl(sizeof(u32))))
		return -1;
	if (nla_put_be32(skb, NFTA_BITWISE_OP, htonl(NFT_BITWISE_BOOL)))
	if (nla_put_be32(skb, NFTA_BITWISE_OP, htonl(NFT_BITWISE_MASK_XOR)))
		return -1;

	data.data[0] = priv->mask;
@@ -501,7 +501,7 @@ nft_bitwise_select_ops(const struct nft_ctx *ctx,
		return &nft_bitwise_ops;

	if (tb[NFTA_BITWISE_OP] &&
	    ntohl(nla_get_be32(tb[NFTA_BITWISE_OP])) != NFT_BITWISE_BOOL)
	    ntohl(nla_get_be32(tb[NFTA_BITWISE_OP])) != NFT_BITWISE_MASK_XOR)
		return &nft_bitwise_ops;

	return &nft_bitwise_fast_ops;