4 #include <linux/types.h>
13 /* Buffers are identified to userspace by a 31-bit opaque ID. We divide the ID
14 * into a buffer number (low bits) and a cookie (high bits). The buffer number
15 * is an index into an array of buffers. The cookie distinguishes between
16 * different packets that have occupied a single buffer. Thus, the more
17 * buffers we have, the lower-quality the cookie... */
18 #define PKT_BUFFER_BITS 8
19 #define N_PKT_BUFFERS (1 << PKT_BUFFER_BITS)
20 #define PKT_BUFFER_MASK (N_PKT_BUFFERS - 1)
22 #define PKT_COOKIE_BITS (32 - PKT_BUFFER_BITS)
25 void fwd_port_input(struct sw_chain *, struct sk_buff *, int in_port);
26 int run_flow_through_tables(struct sw_chain *, struct sk_buff *, int in_port);
27 int fwd_control_input(struct sw_chain *, const struct sender *,
28 const void *, size_t);
30 uint32_t fwd_save_skb(struct sk_buff *skb);
31 void fwd_discard_all(void);
35 void execute_actions(struct datapath *, struct sk_buff *,
36 const struct sw_flow_key *,
37 const struct ofp_action *, int n_actions);
38 struct sk_buff *execute_setter(struct sk_buff *, uint16_t,
39 const struct sw_flow_key *, const struct ofp_action *);
41 #endif /* forward.h */