X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fodp-util.h;h=7e27888610670edaef1731298385da9e70298fed;hb=4b570f12766f3c4eeb527de69d8eedfd59c34b86;hp=0455370d3000f099559169a938ecb180ab3bbac7;hpb=98f0520fb205eb619a386f9689b35dec3487fedf;p=sliver-openvswitch.git diff --git a/lib/odp-util.h b/lib/odp-util.h index 0455370d3..7e2788861 100644 --- a/lib/odp-util.h +++ b/lib/odp-util.h @@ -29,11 +29,13 @@ struct ds; struct flow; struct flow_tnl; +struct flow_wildcards; struct nlattr; struct ofpbuf; struct simap; -#define OVSP_NONE UINT32_MAX +#define ODPP_LOCAL ODP_PORT_C(OVSP_LOCAL) +#define ODPP_NONE ODP_PORT_C(UINT32_MAX) void format_odp_actions(struct ds *, const struct nlattr *odp_actions, size_t actions_len); @@ -87,12 +89,21 @@ struct odputil_keybuf { 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_format(const struct nlattr *key, size_t key_len, + const struct nlattr *mask, size_t mask_len, + struct ds *, bool verbose); 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 *); +int odp_flow_from_string(const char *s, + const struct simap *port_names, + struct ofpbuf *, struct ofpbuf *); void odp_flow_key_from_flow(struct ofpbuf *, const struct flow *, - uint32_t odp_in_port); + odp_port_t odp_in_port); +void odp_flow_key_from_mask(struct ofpbuf *, const struct flow *mask, + const struct flow *flow, uint32_t odp_in_port); uint32_t odp_flow_key_hash(const struct nlattr *, size_t); @@ -116,7 +127,8 @@ const char *odp_key_fitness_to_string(enum odp_key_fitness); void commit_odp_tunnel_action(const struct flow *, struct flow *base, struct ofpbuf *odp_actions); void commit_odp_actions(const struct flow *, struct flow *base, - struct ofpbuf *odp_actions); + struct ofpbuf *odp_actions, + struct flow_wildcards *wc); /* ofproto-dpif interface. *