This seems slightly cleaner than embedding this logic directing into
ofproto-dpif, since it is an interface that theoretically could be useful
to other ofproto providers.
Signed-off-by: Ben Pfaff <blp@nicira.com>
- * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <stdbool.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdint.h>
+#include "ofproto-provider.h"
struct connmgr;
struct fail_open;
struct connmgr;
struct fail_open;
* creates flows with this priority). And "f0" is mnemonic for "fail open"! */
#define FAIL_OPEN_PRIORITY 0xf0f0f0
* creates flows with this priority). And "f0" is mnemonic for "fail open"! */
#define FAIL_OPEN_PRIORITY 0xf0f0f0
+/* Returns true if 'rule' is one created by the "fail open" logic, false
+ * otherwise. */
+static inline bool
+is_fail_open_rule(const struct rule *rule)
+{
+ return rule->cr.priority == FAIL_OPEN_PRIORITY;
+}
+
struct fail_open *fail_open_create(struct ofproto *, struct connmgr *);
void fail_open_destroy(struct fail_open *);
void fail_open_wait(struct fail_open *);
struct fail_open *fail_open_create(struct ofproto *, struct connmgr *);
void fail_open_destroy(struct fail_open *);
void fail_open_wait(struct fail_open *);
- xout->fail_open = ctx.rule && rule_dpif_fail_open(ctx.rule);
+ xout->fail_open = ctx.rule && rule_dpif_is_fail_open(ctx.rule);
if (xin->ofpacts) {
ofpacts = xin->ofpacts;
if (xin->ofpacts) {
ofpacts = xin->ofpacts;
-rule_dpif_fail_open(const struct rule_dpif *rule)
+rule_dpif_is_fail_open(const struct rule_dpif *rule)
- return rule->up.cr.priority == FAIL_OPEN_PRIORITY;
+ return is_fail_open_rule(&rule->up);
+}
void rule_dpif_credit_stats(struct rule_dpif *rule ,
const struct dpif_flow_stats *);
void rule_dpif_credit_stats(struct rule_dpif *rule ,
const struct dpif_flow_stats *);
-bool rule_dpif_fail_open(const struct rule_dpif *rule);
+bool rule_dpif_is_fail_open(const struct rule_dpif *);
struct rule_actions *rule_dpif_get_actions(const struct rule_dpif *);
struct rule_actions *rule_dpif_get_actions(const struct rule_dpif *);