Prepare for storing data reg byteorder, no functional change intended.
Note the odd case in expr/byteorder.c since there is a local variable
with same name already.
Signed-off-by: Phil Sutter <phil@nwl.cc>
struct attr_policy *attr_policy;
void (*init)(const struct nftnl_expr *e);
void (*free)(const struct nftnl_expr *e);
- int (*set)(struct nftnl_expr *e, uint16_t type, const void *data, uint32_t data_len);
+ int (*set)(struct nftnl_expr *e, uint16_t type, const void *data, uint32_t data_len, uint32_t byteorder);
const void *(*get)(const struct nftnl_expr *e, uint16_t type, uint32_t *data_len);
int (*parse)(struct nftnl_expr *e, struct nlattr *attr);
void (*build)(struct nlmsghdr *nlh, const struct nftnl_expr *e);
return expr->flags & (1 << type);
}
-EXPORT_SYMBOL(nftnl_expr_set);
-int nftnl_expr_set(struct nftnl_expr *expr, uint16_t type,
- const void *data, uint32_t data_len)
+static int __nftnl_expr_set(struct nftnl_expr *expr, uint16_t type,
+ const void *data, uint32_t data_len,
+ uint32_t byteorder)
{
switch(type) {
case NFTNL_EXPR_NAME: /* cannot be modified */
expr->ops->attr_policy[type].maxlen < data_len)
return -1;
- if (expr->ops->set(expr, type, data, data_len) < 0)
+ if (expr->ops->set(expr, type, data, data_len, byteorder) < 0)
return -1;
}
expr->flags |= (1 << type);
return 0;
}
+EXPORT_SYMBOL(nftnl_expr_set);
+int nftnl_expr_set(struct nftnl_expr *expr, uint16_t type,
+ const void *data, uint32_t data_len)
+{
+ return __nftnl_expr_set(expr, type, data, data_len, 0);
+}
+
EXPORT_SYMBOL(nftnl_expr_set_u8);
void
nftnl_expr_set_u8(struct nftnl_expr *expr, uint16_t type, uint8_t data)
static int
nftnl_expr_bitwise_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_bitwise *bitwise = nftnl_expr_data(e);
static int
nftnl_expr_byteorder_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorderp)
{
struct nftnl_expr_byteorder *byteorder = nftnl_expr_data(e);
static int
nftnl_expr_cmp_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_cmp *cmp = nftnl_expr_data(e);
static int
nftnl_expr_connlimit_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_connlimit *connlimit = nftnl_expr_data(e);
static int
nftnl_expr_counter_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_counter *ctr = nftnl_expr_data(e);
static int
nftnl_expr_ct_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_ct *ct = nftnl_expr_data(e);
enum nft_registers sreg_dev;
};
-static int nftnl_expr_dup_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_dup_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_dup *dup = nftnl_expr_data(e);
static int
nftnl_expr_dynset_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_dynset *dynset = nftnl_expr_data(e);
struct nftnl_expr *expr, *next;
static int
nftnl_expr_exthdr_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_exthdr *exthdr = nftnl_expr_data(e);
static int
nftnl_expr_fib_set(struct nftnl_expr *e, uint16_t result,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_fib *fib = nftnl_expr_data(e);
char *table_name;
};
-static int nftnl_expr_flow_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_flow_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_flow *flow = nftnl_expr_data(e);
uint32_t nfproto;
};
-static int nftnl_expr_fwd_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_fwd_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_fwd *fwd = nftnl_expr_data(e);
static int
nftnl_expr_hash_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_hash *hash = nftnl_expr_data(e);
switch (type) {
static int
nftnl_expr_immediate_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_immediate *imm = nftnl_expr_data(e);
static int
nftnl_expr_inner_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_inner *inner = nftnl_expr_data(e);
uint32_t set;
};
-static int nftnl_expr_last_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_last_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_last *last = nftnl_expr_data(e);
static int
nftnl_expr_limit_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_limit *limit = nftnl_expr_data(e);
const char *prefix;
};
-static int nftnl_expr_log_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_log_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_log *log = nftnl_expr_data(e);
static int
nftnl_expr_lookup_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_lookup *lookup = nftnl_expr_data(e);
static int
nftnl_expr_masq_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_masq *masq = nftnl_expr_data(e);
static int
nftnl_expr_match_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_match *mt = nftnl_expr_data(e);
static int
nftnl_expr_meta_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_meta *meta = nftnl_expr_data(e);
static int
nftnl_expr_nat_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_nat *nat = nftnl_expr_data(e);
static int
nftnl_expr_ng_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_ng *ng = nftnl_expr_data(e);
} set;
};
-static int nftnl_expr_objref_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_objref_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_objref *objref = nftnl_expr_data(e);
uint32_t flags;
};
-static int nftnl_expr_osf_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_osf_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_osf *osf = nftnl_expr_data(e);
static int
nftnl_expr_payload_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_payload *payload = nftnl_expr_data(e);
uint16_t flags;
};
-static int nftnl_expr_queue_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_queue_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_queue *queue = nftnl_expr_data(e);
uint32_t flags;
};
-static int nftnl_expr_quota_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_quota_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_quota *quota = nftnl_expr_data(e);
enum nft_range_ops op;
};
-static int nftnl_expr_range_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_range_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_range *range = nftnl_expr_data(e);
static int
nftnl_expr_redir_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_redir *redir = nftnl_expr_data(e);
uint8_t icmp_code;
};
-static int nftnl_expr_reject_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_reject_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_reject *reject = nftnl_expr_data(e);
static int
nftnl_expr_rt_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_rt *rt = nftnl_expr_data(e);
static int
nftnl_expr_socket_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_socket *socket = nftnl_expr_data(e);
uint32_t flags;
};
-static int nftnl_expr_synproxy_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_synproxy_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_synproxy *synproxy = nftnl_expr_data(e);
static int
nftnl_expr_target_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_target *tg = nftnl_expr_data(e);
static int
nftnl_expr_tproxy_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_tproxy *tproxy = nftnl_expr_data(e);
enum nft_registers dreg;
};
-static int nftnl_expr_tunnel_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+static int
+nftnl_expr_tunnel_set(struct nftnl_expr *e, uint16_t type,
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_tunnel *tunnel = nftnl_expr_data(e);
static int
nftnl_expr_xfrm_set(struct nftnl_expr *e, uint16_t type,
- const void *data, uint32_t data_len)
+ const void *data, uint32_t data_len, uint32_t byteorder)
{
struct nftnl_expr_xfrm *x = nftnl_expr_data(e);