mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-28 17:40:21 +10:00
net: extract port range fields from fl_flow_key
[ Upstream commit83d85bb069
] So it can be used for port range filter offloading. Co-developed-by: Volodymyr Mytnyk <volodymyr.mytnyk@plvision.eu> Signed-off-by: Volodymyr Mytnyk <volodymyr.mytnyk@plvision.eu> Signed-off-by: Maksym Glubokiy <maksym.glubokiy@plvision.eu> Signed-off-by: David S. Miller <davem@davemloft.net> Stable-dep-of:3e5796862c
("flow_dissector: Fix handling of mixed port and port-range keys") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d37e36db58
commit
895d04846e
@ -158,6 +158,22 @@ struct flow_dissector_key_ports {
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* struct flow_dissector_key_ports_range
|
||||
* @tp: port number from packet
|
||||
* @tp_min: min port number in range
|
||||
* @tp_max: max port number in range
|
||||
*/
|
||||
struct flow_dissector_key_ports_range {
|
||||
union {
|
||||
struct flow_dissector_key_ports tp;
|
||||
struct {
|
||||
struct flow_dissector_key_ports tp_min;
|
||||
struct flow_dissector_key_ports tp_max;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* flow_dissector_key_icmp:
|
||||
* @ports: type and code of ICMP header
|
||||
|
@ -48,6 +48,10 @@ struct flow_match_ports {
|
||||
struct flow_dissector_key_ports *key, *mask;
|
||||
};
|
||||
|
||||
struct flow_match_ports_range {
|
||||
struct flow_dissector_key_ports_range *key, *mask;
|
||||
};
|
||||
|
||||
struct flow_match_icmp {
|
||||
struct flow_dissector_key_icmp *key, *mask;
|
||||
};
|
||||
@ -90,6 +94,8 @@ void flow_rule_match_ip(const struct flow_rule *rule,
|
||||
struct flow_match_ip *out);
|
||||
void flow_rule_match_ports(const struct flow_rule *rule,
|
||||
struct flow_match_ports *out);
|
||||
void flow_rule_match_ports_range(const struct flow_rule *rule,
|
||||
struct flow_match_ports_range *out);
|
||||
void flow_rule_match_tcp(const struct flow_rule *rule,
|
||||
struct flow_match_tcp *out);
|
||||
void flow_rule_match_icmp(const struct flow_rule *rule,
|
||||
|
@ -97,6 +97,13 @@ void flow_rule_match_ports(const struct flow_rule *rule,
|
||||
}
|
||||
EXPORT_SYMBOL(flow_rule_match_ports);
|
||||
|
||||
void flow_rule_match_ports_range(const struct flow_rule *rule,
|
||||
struct flow_match_ports_range *out)
|
||||
{
|
||||
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_PORTS_RANGE, out);
|
||||
}
|
||||
EXPORT_SYMBOL(flow_rule_match_ports_range);
|
||||
|
||||
void flow_rule_match_tcp(const struct flow_rule *rule,
|
||||
struct flow_match_tcp *out)
|
||||
{
|
||||
|
@ -54,13 +54,7 @@ struct fl_flow_key {
|
||||
struct flow_dissector_key_ip ip;
|
||||
struct flow_dissector_key_ip enc_ip;
|
||||
struct flow_dissector_key_enc_opts enc_opts;
|
||||
union {
|
||||
struct flow_dissector_key_ports tp;
|
||||
struct {
|
||||
struct flow_dissector_key_ports tp_min;
|
||||
struct flow_dissector_key_ports tp_max;
|
||||
};
|
||||
} tp_range;
|
||||
struct flow_dissector_key_ports_range tp_range;
|
||||
struct flow_dissector_key_ct ct;
|
||||
} __aligned(BITS_PER_LONG / 8); /* Ensure that we can do comparisons as longs. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user