mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
ofproto: Log changes made by flow normalization.
Open vSwitch has always "normalized" flows, that is, zeroed out fields that are wildcarded or that otherwise cannot affect whether a packet actually matches the flow. But until now it has done so silently, which prevents the authors of controllers from learning what is happening and makes it less likely that they will update code on their end. This commit makes OVS log when normalization changes a flow. Suggested by partner.
This commit is contained in:
@@ -754,3 +754,40 @@ normalize_match(struct ofp_match *m)
|
||||
m->wildcards = htonl(wc);
|
||||
}
|
||||
|
||||
/* Returns a string that describes 'match' in a very literal way, without
|
||||
* interpreting its contents except in a very basic fashion. The returned
|
||||
* string is intended to be fixed-length, so that it is easy to see differences
|
||||
* between two such strings if one is put above another. This is useful for
|
||||
* describing changes made by normalize_match().
|
||||
*
|
||||
* The caller must free the returned string (with free()). */
|
||||
char *
|
||||
ofp_match_to_literal_string(const struct ofp_match *match)
|
||||
{
|
||||
return xasprintf("wildcards=%#10"PRIx32" "
|
||||
" in_port=%5"PRId16" "
|
||||
" dl_src="ETH_ADDR_FMT" "
|
||||
" dl_dst="ETH_ADDR_FMT" "
|
||||
" dl_vlan=%5"PRId16" "
|
||||
" dl_vlan_pcp=%3"PRId8" "
|
||||
" dl_type=%#6"PRIx16" "
|
||||
" nw_tos=%#4"PRIx8" "
|
||||
" nw_proto=%#4"PRIx16" "
|
||||
" nw_src=%#10"PRIx32" "
|
||||
" nw_dst=%#10"PRIx32" "
|
||||
" tp_src=%5"PRId16" "
|
||||
" tp_dst=%5"PRId16,
|
||||
ntohl(match->wildcards),
|
||||
ntohs(match->in_port),
|
||||
ETH_ADDR_ARGS(match->dl_src),
|
||||
ETH_ADDR_ARGS(match->dl_dst),
|
||||
ntohs(match->dl_vlan),
|
||||
match->dl_vlan_pcp,
|
||||
ntohs(match->dl_type),
|
||||
match->nw_tos,
|
||||
match->nw_proto,
|
||||
ntohl(match->nw_src),
|
||||
ntohl(match->nw_dst),
|
||||
ntohs(match->tp_src),
|
||||
ntohs(match->tp_dst));
|
||||
}
|
||||
|
Reference in New Issue
Block a user