Implement IPFIX export
[sliver-openvswitch.git] / ofproto / ofproto.h
index 3ea56df..bb799b5 100644 (file)
@@ -33,7 +33,6 @@
 extern "C" {
 #endif
 
-struct cfm_settings;
 struct cls_rule;
 struct netdev;
 struct ofproto;
@@ -69,6 +68,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 +210,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 +242,10 @@ 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);
 int ofproto_set_stp(struct ofproto *, const struct ofproto_stp_settings *);
 int ofproto_get_stp_status(struct ofproto *, struct ofproto_stp_status *);
 
@@ -362,8 +378,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 +387,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;