ovs-vswitchd: An option to wait for userspace flow restore to complete.
[sliver-openvswitch.git] / ofproto / ofproto.h
index 3ea56df..18241e7 100644 (file)
@@ -33,6 +33,7 @@
 extern "C" {
 #endif
 
+struct bfd_cfg;
 struct cfm_settings;
 struct cls_rule;
 struct netdev;
@@ -40,6 +41,7 @@ struct ofproto;
 struct ofport;
 struct shash;
 struct simap;
+struct smap;
 struct netdev_stats;
 
 struct ofproto_controller_info {
@@ -69,6 +71,19 @@ struct ofproto_sflow_options {
     char *control_ip;
 };
 
+
+struct ofproto_ipfix_bridge_exporter_options {
+    struct sset targets;
+    uint32_t sampling_rate;
+    uint32_t obs_domain_id;  /* Bridge-wide Observation Domain ID. */
+    uint32_t obs_point_id;  /* Bridge-wide Observation Point ID. */
+};
+
+struct ofproto_ipfix_flow_exporter_options {
+    uint32_t collector_set_id;
+    struct sset targets;
+};
+
 struct ofproto_stp_settings {
     stp_identifier system_id;
     uint16_t priority;
@@ -198,7 +213,7 @@ int ofproto_port_dump_done(struct ofproto_port_dump *);
           : (ofproto_port_dump_done(DUMP), false));         \
         )
 
-#define OFPROTO_FLOW_EVICTION_THRESHOLD_DEFAULT  1000
+#define OFPROTO_FLOW_EVICTION_THRESHOLD_DEFAULT  2500
 #define OFPROTO_FLOW_EVICTION_THRESHOLD_MIN 100
 
 const char *ofproto_port_open_type(const char *datapath_type,
@@ -230,6 +245,12 @@ int ofproto_set_snoops(struct ofproto *, const struct sset *snoops);
 int ofproto_set_netflow(struct ofproto *,
                         const struct netflow_options *nf_options);
 int ofproto_set_sflow(struct ofproto *, const struct ofproto_sflow_options *);
+int ofproto_set_ipfix(struct ofproto *,
+                      const struct ofproto_ipfix_bridge_exporter_options *,
+                      const struct ofproto_ipfix_flow_exporter_options *,
+                      size_t);
+void ofproto_set_flow_restore_wait(bool flow_restore_wait_db);
+bool ofproto_get_flow_restore_wait(void);
 int ofproto_set_stp(struct ofproto *, const struct ofproto_stp_settings *);
 int ofproto_get_stp_status(struct ofproto *, struct ofproto_stp_status *);
 
@@ -239,6 +260,10 @@ void ofproto_port_unregister(struct ofproto *, uint16_t ofp_port);
 void ofproto_port_clear_cfm(struct ofproto *, uint16_t ofp_port);
 void ofproto_port_set_cfm(struct ofproto *, uint16_t ofp_port,
                           const struct cfm_settings *);
+void ofproto_port_set_bfd(struct ofproto *, uint16_t ofp_port,
+                          const struct smap *cfg);
+int ofproto_port_get_bfd_status(struct ofproto *, uint16_t ofp_port,
+                                struct smap *);
 int ofproto_port_is_lacp_current(struct ofproto *, uint16_t ofp_port);
 int ofproto_port_set_stp(struct ofproto *, uint16_t ofp_port,
                          const struct ofproto_port_stp_settings *);
@@ -362,8 +387,8 @@ void ofproto_free_ofproto_controller_info(struct shash *);
 
 /* CFM status query. */
 struct ofproto_cfm_status {
-    enum cfm_fault_reason faults; /* 0 if not faulted. */
-    int health;                   /* Health status in [0,100] range. */
+    /* 0 if not faulted, otherwise a combination of one or more reasons. */
+    enum cfm_fault_reason faults;
 
     /* 0 if the remote CFM endpoint is operationally down,
      * 1 if the remote CFM endpoint is operationally up,
@@ -371,6 +396,11 @@ struct ofproto_cfm_status {
      * mode. */
     int remote_opstate;
 
+    /* Ordinarily a "health status" in the range 0...100 inclusive, with 0
+     * being worst and 100 being best, or -1 if the health status is not
+     * well-defined. */
+    int health;
+
     /* MPIDs of remote maintenance points whose CCMs have been received. */
     const uint64_t *rmps;
     size_t n_rmps;