aboutsummaryrefslogtreecommitdiff
path: root/lib/odp-util.h
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2010-12-10 10:40:58 -0800
committerBen Pfaff <blp@nicira.com>2010-12-10 11:13:32 -0800
commitcdee00fd635d1e0f1eeb5d9c009daeb59abd4777 (patch)
tree49ef94d30bcb995fa1070c3aa770a9a515b26b0a /lib/odp-util.h
parent7f8ca6459c37ede8faf13f730bcd4d9f05dfd13b (diff)
datapath: Replace "struct odp_action" by Netlink attributes.
In the medium term, we plan to migrate the datapath to use Netlink as its communication channel. In the short term, we need to be able to have actions with 64-bit arguments but "struct odp_action" only has room for 48 bits. So this patch shifts to variable-length arguments using Netlink attributes, which starts in on the Netlink transition and makes 64-bit arguments possible at the same time. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'lib/odp-util.h')
-rw-r--r--lib/odp-util.h31
1 files changed, 4 insertions, 27 deletions
diff --git a/lib/odp-util.h b/lib/odp-util.h
index 813e29f3..6051c52d 100644
--- a/lib/odp-util.h
+++ b/lib/odp-util.h
@@ -29,30 +29,6 @@
struct ds;
struct flow;
-enum { MAX_ODP_ACTIONS = 16384 / sizeof(union odp_action) };
-
-/* odp_actions_add() assumes that MAX_ODP_ACTIONS is a power of 2. */
-BUILD_ASSERT_DECL(IS_POW2(MAX_ODP_ACTIONS));
-
-struct odp_actions {
- size_t n_actions;
- union odp_action actions[MAX_ODP_ACTIONS];
-};
-
-static inline void
-odp_actions_init(struct odp_actions *actions)
-{
- actions->n_actions = 0;
-}
-
-union odp_action *odp_actions_add(struct odp_actions *actions, uint16_t type);
-
-static inline bool
-odp_actions_overflow(const struct odp_actions *actions)
-{
- return actions->n_actions > MAX_ODP_ACTIONS;
-}
-
static inline uint16_t
ofp_port_to_odp_port(uint16_t ofp_port)
{
@@ -80,9 +56,10 @@ odp_port_to_ofp_port(uint16_t odp_port)
}
void format_odp_flow_key(struct ds *, const struct odp_flow_key *);
-void format_odp_action(struct ds *, const union odp_action *);
-void format_odp_actions(struct ds *, const union odp_action *actions,
- size_t n_actions);
+int odp_action_len(uint16_t type);
+void format_odp_action(struct ds *, const struct nlattr *);
+void format_odp_actions(struct ds *, const struct nlattr *odp_actions,
+ size_t actions_len);
void format_odp_flow_stats(struct ds *, const struct odp_flow_stats *);
void format_odp_flow(struct ds *, const struct odp_flow *);