uint32_t keybuf[DIV_ROUND_UP(ODPUTIL_FLOW_KEY_BYTES, 4)];
};
+enum odp_key_fitness odp_tun_key_from_attr(const struct nlattr *,
+ struct flow_tnl *);
+
void odp_flow_key_format(const struct nlattr *, size_t, struct ds *);
int odp_flow_key_from_string(const char *s, const struct simap *port_names,
struct ofpbuf *);
/* Reasons why a subfacet might not be fast-pathable. */
enum slow_path_reason {
- /* These reasons are mutually exclusive. */
- SLOW_CFM = 1 << 0, /* CFM packets need per-packet processing. */
- SLOW_LACP = 1 << 1, /* LACP packets need per-packet processing. */
- SLOW_STP = 1 << 2, /* STP packets need per-packet processing. */
- SLOW_IN_BAND = 1 << 3, /* In-band control needs every packet. */
- SLOW_BFD = 1 << 4, /* BFD packets need per-packet processing. */
-
- /* Mutually exclusive with SLOW_BFD, SLOW_CFM, SLOW_LACP, SLOW_STP.
- * Could possibly appear with SLOW_IN_BAND. */
- SLOW_CONTROLLER = 1 << 5, /* Packets must go to OpenFlow controller. */
+ SLOW_CFM = 1, /* CFM packets need per-packet processing. */
+ SLOW_LACP, /* LACP packets need per-packet processing. */
+ SLOW_STP, /* STP packets need per-packet processing. */
+ SLOW_BFD, /* BFD packets need per-packet processing. */
+ SLOW_CONTROLLER, /* Packets must go to OpenFlow controller. */
+ __SLOW_MAX
};
#endif /* odp-util.h */