src/dpdk/drivers/net/softnic/rte_eth_softnic_flow.c
static int
flow_item_skip_disabled_protos(const struct rte_flow_item **item,
	uint64_t proto_mask,
	size_t *length,
	struct rte_flow_error *error)
{
	size_t len = 0;

	for ( ; (*item)->type != RTE_FLOW_ITEM_TYPE_END; (*item)++) {
		union flow_item spec, mask;
		size_t size;
		int disabled = 0, status;

		if ((*item)->type == RTE_FLOW_ITEM_TYPE_VOID)
			continue;

		status = flow_item_proto_preprocess(*item,
				&spec,
				&mask,
				&size,
				&disabled,
				error);
		if (status)
			return status;

		if ((proto_mask & (1LLU << (*item)->type)) ||
				!disabled)
			break;

		len += size;
	}

	if (length)
		*length = len;

	return 0;
}
/***
 * Skip disabled protocol items and VOID items
 * until any of the mutually exclusive conditions
 * from the list below takes place:
 *    (A) A protocol present in the proto_mask
 *        is met (either ENABLED or DISABLED);
 *    (B) A protocol NOT present in the proto_mask is met in ENABLED state;
 *    (C) The END item is met.
 */
Skip disabled protocol items and VOID items
until any of the mutually exclusive conditions
from the list below takes place:
(A) A protocol present in the proto_mask
is met (either ENABLED or DISABLED);
(B) A protocol NOT present in the proto_mask is met in ENABLED state;
(C) The END item is met.
Skip disabled protocol items and VOID items until any of the mutually exclusive conditions from the list below takes place : ( A ) A protocol present in the proto_mask is met ( either ENABLED or DISABLED ) ; ( B ) A protocol NOT present in the proto_mask is met in ENABLED state ; ( C ) The END item is met .
static int
flow_item_skip_disabled_protos(const struct rte_flow_item **item,
	uint64_t proto_mask,
	size_t *length,
	struct rte_flow_error *error)
{
	size_t len = 0;
	for ( ; (*item)->type != RTE_FLOW_ITEM_TYPE_END; (*item)++) {
		union flow_item spec, mask;
		size_t size;
		int disabled = 0, status;
		if ((*item)->type == RTE_FLOW_ITEM_TYPE_VOID)
			continue;
		status = flow_item_proto_preprocess(*item,
				&spec,
				&mask,
				&size,
				&disabled,
				error);
		if (status)
			return status;
		if ((proto_mask & (1LLU << (*item)->type)) ||
				!disabled)
			break;
		len += size;
	}
	if (length)
		*length = len;
	return 0;
}
static int flow_item_skip_disabled_protos ( const struct rte_flow_item * * item , uint64_t proto_mask , size_t * length , struct rte_flow_error * error ) { size_t len = 0 ; for ( ; ( * item ) -> type != RTE_FLOW_ITEM_TYPE_END ; ( * item ) ++ ) { union flow_item spec , mask ; size_t size ; int disabled = 0 , status ; if ( ( * item ) -> type == RTE_FLOW_ITEM_TYPE_VOID ) continue ; status = flow_item_proto_preprocess ( * item , & spec , & mask , & size , & disabled , error ) ; if ( status ) return status ; if ( ( proto_mask & ( 1LLU << ( * item ) -> type ) ) || ! disabled ) break ; len += size ; } if ( length ) * length = len ; return 0 ; }
Skip disabled protocol items and VOID items
 until any of the mutually exclusive conditions
 from the list below takes place:
    (A) A protocol present in the proto_mask
        is met (either ENABLED or DISABLED);
    (B) A protocol NOT present in the proto_mask is met in ENABLED state;
    (C) The END item is met.
Skip disabled protocol items and VOID items until any of the mutually exclusive conditions from the list below takes place : ( A ) A protocol present in the proto_mask is met ( either ENABLED or DISABLED ) ; ( B ) A protocol NOT present in the proto_mask is met in ENABLED state ; ( C ) The END item is met .