For SNAT, don't store the pre-fragment L2 header before actions are applied.
[sliver-openvswitch.git] / datapath / datapath.h
index 89c9059..867e502 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/workqueue.h>
 #include <linux/skbuff.h>
 #include "openflow/openflow.h"
+#include "openflow/nicira-ext.h"
 #include "flow.h"
 
 
@@ -46,10 +47,6 @@ struct sk_buff;
 struct datapath {
        int dp_idx;
 
-       /* Unique identifier for this datapath, incorporates the dp_idx and
-        * a hardware address */
-       uint64_t  id;
-
        struct timer_list timer;        /* Expiration timer. */
        struct sw_chain *chain;  /* Forwarding rules. */
        struct task_struct *dp_task; /* Kernel thread for maintenance. */
@@ -61,6 +58,9 @@ struct datapath {
        uint16_t flags;
        uint16_t miss_send_len;
 
+       /* Flag controlling whether Flow End messages are generated. */
+       uint8_t send_flow_end;
+
        /* Switch ports. */
        struct net_bridge_port *ports[DP_MAX_PORTS];
        struct net_bridge_port *local_port; /* OFPP_LOCAL port. */
@@ -99,8 +99,8 @@ void dp_set_origin(struct datapath *, uint16_t, struct sk_buff *);
 int dp_send_features_reply(struct datapath *, const struct sender *);
 int dp_send_config_reply(struct datapath *, const struct sender *);
 int dp_send_port_status(struct net_bridge_port *p, uint8_t status);
-int dp_send_flow_expired(struct datapath *, struct sw_flow *,
-                        enum ofp_flow_expired_reason);
+int dp_send_flow_end(struct datapath *, struct sw_flow *,
+                        enum nx_flow_end_reason);
 int dp_send_error_msg(struct datapath *, const struct sender *, 
                        uint16_t, uint16_t, const void *, size_t);
 int dp_update_port_flags(struct datapath *dp, const struct ofp_port_mod *opm);