Ejemplo n.º 1
0
static int chain_cb(const struct nlmsghdr *nlh, int event,
			struct callback_data *cb)
{
	struct nftnl_chain *chain;

	chain = nftnl_chain_alloc();
	if (!chain)
		return MNL_CB_OK;

	if (nftnl_chain_nlmsg_parse(nlh, chain) < 0)
		goto out;

	switch (cb->type) {
	case CALLBACK_RETURN_HANDLE:
		cb->value = nftnl_chain_get_u64(chain, NFTNL_CHAIN_HANDLE);
		cb->success = true;
		break;

	default:
		DBG("unhandled callback type %d\n", cb->type);
		break;
	}

out:
	nftnl_chain_free(chain);
	return MNL_CB_OK;
}
Ejemplo n.º 2
0
static void cmp_nftnl_chain(struct nftnl_chain *a, struct nftnl_chain *b)
{

	if (strcmp(nftnl_chain_get_str(a, NFTNL_CHAIN_NAME),
		   nftnl_chain_get_str(b, NFTNL_CHAIN_NAME)) != 0)
		print_err("Chain name mismatches");
	if (strcmp(nftnl_chain_get_str(a, NFTNL_CHAIN_TABLE),
		   nftnl_chain_get_str(b, NFTNL_CHAIN_TABLE)) != 0)
		print_err("Chain table mismatches");
	if (nftnl_chain_get_u32(a, NFTNL_CHAIN_FAMILY) !=
	    nftnl_chain_get_u32(b, NFTNL_CHAIN_FAMILY))
		print_err("Chain family mismatches");
	if (nftnl_chain_get_u32(a, NFTNL_CHAIN_POLICY) !=
	    nftnl_chain_get_u32(b, NFTNL_CHAIN_POLICY))
		print_err("Chain policy mismatches");
	if (nftnl_chain_get_u32(a, NFTNL_CHAIN_HOOKNUM) !=
	    nftnl_chain_get_u32(b, NFTNL_CHAIN_HOOKNUM))
		print_err("Chain hooknum mismatches");
	if (nftnl_chain_get_s32(a, NFTNL_CHAIN_PRIO) !=
	    nftnl_chain_get_s32(b, NFTNL_CHAIN_PRIO))
		print_err("Chain Prio mismatches");
	if (nftnl_chain_get_u32(a, NFTNL_CHAIN_USE) !=
	    nftnl_chain_get_u32(b, NFTNL_CHAIN_USE))
		print_err("Chain use mismatches");
	if (nftnl_chain_get_u64(a, NFTNL_CHAIN_PACKETS) !=
	    nftnl_chain_get_u64(b, NFTNL_CHAIN_PACKETS))
		print_err("Chain packets mismatches");
	if (nftnl_chain_get_u64(a, NFTNL_CHAIN_BYTES) !=
	    nftnl_chain_get_u64(b, NFTNL_CHAIN_BYTES))
		print_err("Chain bytes mismatches");
	if (nftnl_chain_get_u64(a, NFTNL_CHAIN_HANDLE) !=
	    nftnl_chain_get_u64(b, NFTNL_CHAIN_HANDLE))
		print_err("Chain handle mismatches");
	if (strcmp(nftnl_chain_get_str(a, NFTNL_CHAIN_TYPE),
		   nftnl_chain_get_str(b, NFTNL_CHAIN_TYPE)) != 0)
		print_err("Chain type mismatches");
	if (strcmp(nftnl_chain_get_str(a, NFTNL_CHAIN_DEV),
		   nftnl_chain_get_str(b, NFTNL_CHAIN_DEV)) != 0)
		print_err("Chain device mismatches");
}