#define FLOW_H 1
#include <linux/kernel.h>
+#include <linux/netlink.h>
#include <linux/spinlock.h>
#include <linux/types.h>
#include <linux/rcupdate.h>
struct sw_flow_actions {
struct rcu_head rcu;
- unsigned int n_actions;
- union odp_action actions[];
+ u32 actions_len;
+ struct nlattr actions[];
};
struct sw_flow {
struct tbl_node tbl_node;
struct odp_flow_key key;
- struct sw_flow_actions *sf_acts;
+ struct sw_flow_actions __rcu *sf_acts;
atomic_t refcnt;
bool dead;
unsigned char ar_sip[4]; /* sender IP address */
unsigned char ar_tha[ETH_ALEN]; /* target hardware address */
unsigned char ar_tip[4]; /* target IP address */
-} __attribute__((packed));
+} __packed;
int flow_init(void);
void flow_exit(void);
void flow_deferred_free(struct sw_flow *);
void flow_free_tbl(struct tbl_node *);
-struct sw_flow_actions *flow_actions_alloc(size_t n_actions);
+struct sw_flow_actions *flow_actions_alloc(u32 actions_len);
void flow_deferred_free_acts(struct sw_flow_actions *);
void flow_hold(struct sw_flow *);