Blame include/rt.h

Packit c5a612
#ifndef NFTABLES_RT_H
Packit c5a612
#define NFTABLES_RT_H
Packit c5a612
Packit c5a612
/**
Packit c5a612
 * struct rt_template - template for routing expressions
Packit c5a612
 *
Packit c5a612
 * @token:	parser token for the expression
Packit c5a612
 * @dtype:	data type of the expression
Packit c5a612
 * @len:	length of the expression
Packit c5a612
 * @byteorder:	byteorder
Packit c5a612
 * @invalid:	invalidate datatype on allocation from parser
Packit c5a612
 */
Packit c5a612
struct rt_template {
Packit c5a612
	const char		*token;
Packit c5a612
	const struct datatype	*dtype;
Packit c5a612
	unsigned int		len;
Packit c5a612
	enum byteorder		byteorder;
Packit c5a612
	bool			invalid;
Packit c5a612
};
Packit c5a612
Packit c5a612
extern const struct rt_template rt_templates[];
Packit c5a612
Packit c5a612
#define RT_TEMPLATE(__token, __dtype, __len, __byteorder, __invalid) {	\
Packit c5a612
	.token		= (__token),					\
Packit c5a612
	.dtype		= (__dtype),					\
Packit c5a612
	.len		= (__len),					\
Packit c5a612
	.byteorder	= (__byteorder),				\
Packit c5a612
	.invalid	= (__invalid),					\
Packit c5a612
}
Packit c5a612
Packit c5a612
extern struct expr *rt_expr_alloc(const struct location *loc,
Packit c5a612
				  enum nft_rt_keys key, bool invalid);
Packit c5a612
extern void rt_expr_update_type(struct proto_ctx *ctx, struct expr *expr);
Packit c5a612
Packit c5a612
extern const struct datatype realm_type;
Packit c5a612
Packit c5a612
#endif /* NFTABLES_RT_H */