X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ofproto%2Fofproto-dpif.h;h=94d4e1e70d649e91c288764c3095d5bf7c914264;hb=dc723c447a797e555d400594133a35b9841eb1de;hp=ae6f9b75c04383084fea64cfe96b0fc90f265a86;hpb=6b83a3c5c37a07118681a3738ec776a7d8485a3f;p=sliver-openvswitch.git diff --git a/ofproto/ofproto-dpif.h b/ofproto/ofproto-dpif.h index ae6f9b75c..94d4e1e70 100644 --- a/ofproto/ofproto-dpif.h +++ b/ofproto/ofproto-dpif.h @@ -21,6 +21,7 @@ #include "odp-util.h" #include "ofp-util.h" #include "ovs-thread.h" +#include "ofproto-provider.h" #include "timer.h" #include "util.h" #include "ovs-thread.h" @@ -83,16 +84,19 @@ extern struct ovs_rwlock xlate_rwlock; * actions into datapath actions. */ size_t ofproto_dpif_get_max_mpls_depth(const struct ofproto_dpif *); +bool ofproto_dpif_get_enable_recirc(const struct ofproto_dpif *); -uint8_t rule_dpif_lookup(struct ofproto_dpif *, const struct flow *, - struct flow_wildcards *, struct rule_dpif **rule); +uint8_t rule_dpif_lookup(struct ofproto_dpif *, struct flow *, + struct flow_wildcards *, struct rule_dpif **rule, + bool take_ref); enum rule_dpif_lookup_verdict rule_dpif_lookup_from_table(struct ofproto_dpif *, const struct flow *, struct flow_wildcards *, bool force_controller_on_miss, uint8_t *table_id, - struct rule_dpif **rule); + struct rule_dpif **rule, + bool take_ref); void rule_dpif_ref(struct rule_dpif *); void rule_dpif_unref(struct rule_dpif *); @@ -103,8 +107,9 @@ void rule_dpif_credit_stats(struct rule_dpif *rule , bool rule_dpif_is_fail_open(const struct rule_dpif *); bool rule_dpif_is_table_miss(const struct rule_dpif *); bool rule_dpif_is_internal(const struct rule_dpif *); +uint8_t rule_dpif_get_table(const struct rule_dpif *); -struct rule_actions *rule_dpif_get_actions(const struct rule_dpif *); +const struct rule_actions *rule_dpif_get_actions(const struct rule_dpif *); ovs_be64 rule_dpif_get_flow_cookie(const struct rule_dpif *rule); @@ -114,7 +119,7 @@ void rule_dpif_reduce_timeouts(struct rule_dpif *rule, uint16_t idle_timeout, void choose_miss_rule(enum ofputil_port_config, struct rule_dpif *miss_rule, struct rule_dpif *no_packet_in_rule, - struct rule_dpif **rule); + struct rule_dpif **rule, bool take_ref); bool group_dpif_lookup(struct ofproto_dpif *ofproto, uint32_t group_id, struct group_dpif **group); @@ -140,6 +145,7 @@ void ofproto_dpif_send_packet_in(struct ofproto_dpif *, bool ofproto_dpif_wants_packet_in_on_miss(struct ofproto_dpif *); int ofproto_dpif_send_packet(const struct ofport_dpif *, struct ofpbuf *); void ofproto_dpif_flow_mod(struct ofproto_dpif *, struct ofputil_flow_mod *); +struct rule_dpif *ofproto_dpif_refresh_rule(struct rule_dpif *); struct ofport_dpif *odp_port_to_ofport(const struct dpif_backer *, odp_port_t); @@ -207,4 +213,11 @@ struct ofport_dpif *odp_port_to_ofport(const struct dpif_backer *, odp_port_t); uint32_t ofproto_dpif_alloc_recirc_id(struct ofproto_dpif *ofproto); void ofproto_dpif_free_recirc_id(struct ofproto_dpif *ofproto, uint32_t recirc_id); +int ofproto_dpif_add_internal_flow(struct ofproto_dpif *, + struct match *, int priority, + const struct ofpbuf *ofpacts, + struct rule **rulep); +int ofproto_dpif_delete_internal_flow(struct ofproto_dpif *, struct match *, + int priority); + #endif /* ofproto-dpif.h */