> On Nov 15, 2016, at 3:35 PM, Joo Kim <itsolut...@gmail.com> wrote: > > Hello, > > In this OVS (2.6) code below, > It seems that a dp_netdev_flow obj contains a dpcls_rule struct, and given > a dpcls_rule, it gets the corresponding dp_netdev_flow via > dp_netdev_flow_cast(). > Does it mean dpcls_rule and dp_netdev_flow have an 1-1 mapping > relationship?
Yes, as you saw from the code, the relationship is 1:1. > But, as I understand, dpcls_rule could have a wildcard which can match > multiple flows. Then, how does dp_netdev_flow_cast() (which seems to assume > 1-1 mapping) make sense? > You are tripping over the overloaded term ‘flow’ here. struct dp_netdev_flow and the associated struct dpcls_rule always have the same wildcarding. A wildcarded dpcls_rule, and therefore dp_netdev_flow, can match multiple transport connections, or multiple “exact match flows”. Jarno > > struct dp_netdev_flow { > const struct flow flow; /* Unmasked flow that created this entry. > */ > /* Hash table index by unmasked flow. */ > const struct cmap_node node; /* In owning dp_netdev_pmd_thread's */ > /* 'flow_table'. */ > … > /* Packet classification. */ > struct dpcls_rule cr; /* In owning dp_netdev's 'cls'. */ > /* 'cr' must be the last member. */ > }; > > > > static struct dp_netdev_flow * > dp_netdev_flow_cast(const struct dpcls_rule *cr) > { > return cr ? CONTAINER_OF(cr, struct dp_netdev_flow, cr) : NULL; > } > > > static struct dp_netdev_flow * > dp_netdev_pmd_lookup_flow(struct dp_netdev_pmd_thread *pmd, > const struct netdev_flow_key *key, > int *lookup_num_p) > { > struct dpcls *cls; > struct dpcls_rule *rule; > odp_port_t in_port = u32_to_odp(MINIFLOW_GET_U32(&key->mf, in_port)); > struct dp_netdev_flow *netdev_flow = NULL; > > cls = dp_netdev_pmd_lookup_dpcls(pmd, in_port); > if (OVS_LIKELY(cls)) { > dpcls_lookup(cls, key, &rule, 1, lookup_num_p); > netdev_flow = dp_netdev_flow_cast(rule); <<<<< > } > return netdev_flow; > } > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev