projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
OF11: push_vlan support
[openvswitch]
/
lib
/
meta-flow.h
diff --git
a/lib/meta-flow.h
b/lib/meta-flow.h
index 1fecc15caf18e1ec06b1c39273d3028f300c7d33..60bfecaa586515f7ebd10d59891a3782b0f3285d 100644
(file)
--- a/
lib/meta-flow.h
+++ b/
lib/meta-flow.h
@@
-24,8
+24,8
@@
#include "ofp-errors.h"
#include "packets.h"
#include "ofp-errors.h"
#include "packets.h"
-struct cls_rule;
struct ds;
struct ds;
+struct match;
/* The comment on each of these indicates the member in "union mf_value" used
* to represent its value. */
/* The comment on each of these indicates the member in "union mf_value" used
* to represent its value. */
@@
-66,8
+66,10
@@
enum mf_field_id {
MFF_ETH_TYPE, /* be16 */
MFF_VLAN_TCI, /* be16 */
MFF_ETH_TYPE, /* be16 */
MFF_VLAN_TCI, /* be16 */
- MFF_VLAN_VID, /* be16 */
- MFF_VLAN_PCP, /* u8 */
+ MFF_DL_VLAN, /* be16 (OpenFlow 1.0 compatibility) */
+ MFF_VLAN_VID, /* be16 (OpenFlow 1.2 compatibility) */
+ MFF_DL_VLAN_PCP, /* u8 (OpenFlow 1.0 compatibility) */
+ MFF_VLAN_PCP, /* be16 (OpenFlow 1.2 compatibility) */
/* L3. */
MFF_IPV4_SRC, /* be32 */
/* L3. */
MFF_IPV4_SRC, /* be32 */
@@
-154,6
+156,7
@@
enum mf_prereqs {
/* L2 requirements. */
MFP_ARP,
/* L2 requirements. */
MFP_ARP,
+ MFP_VLAN_VID,
MFP_IPV4,
MFP_IPV6,
MFP_IP_ANY,
MFP_IPV4,
MFP_IPV6,
MFP_IP_ANY,
@@
-215,7
+218,6
@@
struct mf_field {
/* Properties. */
enum mf_maskable maskable;
/* Properties. */
enum mf_maskable maskable;
- flow_wildcards_t fww_bit; /* Either 0 or exactly one FWW_* bit. */
enum mf_string string;
enum mf_prereqs prereqs;
bool writable; /* May be written by actions? */
enum mf_string string;
enum mf_prereqs prereqs;
bool writable; /* May be written by actions? */
@@
-292,7
+294,7
@@
void mf_get_mask(const struct mf_field *, const struct flow_wildcards *,
/* Prerequisites. */
bool mf_are_prereqs_ok(const struct mf_field *, const struct flow *);
/* Prerequisites. */
bool mf_are_prereqs_ok(const struct mf_field *, const struct flow *);
-void mf_force_prereqs(const struct mf_field *, struct
cls_rule
*);
+void mf_force_prereqs(const struct mf_field *, struct
match
*);
/* Field values. */
bool mf_is_value_valid(const struct mf_field *, const union mf_value *value);
/* Field values. */
bool mf_is_value_valid(const struct mf_field *, const union mf_value *value);
@@
-300,24
+302,26
@@
bool mf_is_value_valid(const struct mf_field *, const union mf_value *value);
void mf_get_value(const struct mf_field *, const struct flow *,
union mf_value *value);
void mf_set_value(const struct mf_field *, const union mf_value *value,
void mf_get_value(const struct mf_field *, const struct flow *,
union mf_value *value);
void mf_set_value(const struct mf_field *, const union mf_value *value,
- struct
cls_rule
*);
+ struct
match
*);
void mf_set_flow_value(const struct mf_field *, const union mf_value *value,
struct flow *);
bool mf_is_zero(const struct mf_field *, const struct flow *);
void mf_set_flow_value(const struct mf_field *, const union mf_value *value,
struct flow *);
bool mf_is_zero(const struct mf_field *, const struct flow *);
-void mf_get(const struct mf_field *, const struct
cls_rule
*,
+void mf_get(const struct mf_field *, const struct
match
*,
union mf_value *value, union mf_value *mask);
void mf_set(const struct mf_field *,
const union mf_value *value, const union mf_value *mask,
union mf_value *value, union mf_value *mask);
void mf_set(const struct mf_field *,
const union mf_value *value, const union mf_value *mask,
- struct
cls_rule
*);
+ struct
match
*);
-void mf_set_wild(const struct mf_field *, struct
cls_rule
*);
+void mf_set_wild(const struct mf_field *, struct
match
*);
void mf_random_value(const struct mf_field *, union mf_value *value);
/* Subfields. */
void mf_random_value(const struct mf_field *, union mf_value *value);
/* Subfields. */
+void mf_write_subfield_flow(const struct mf_subfield *,
+ const union mf_subvalue *, struct flow *);
void mf_write_subfield(const struct mf_subfield *, const union mf_subvalue *,
void mf_write_subfield(const struct mf_subfield *, const union mf_subvalue *,
- struct
cls_rule
*);
+ struct
match
*);
void mf_read_subfield(const struct mf_subfield *, const struct flow *,
union mf_subvalue *);
void mf_read_subfield(const struct mf_subfield *, const struct flow *,
union mf_subvalue *);
@@
-338,5
+342,6
@@
char *mf_parse_value(const struct mf_field *, const char *, union mf_value *);
void mf_format(const struct mf_field *,
const union mf_value *value, const union mf_value *mask,
struct ds *);
void mf_format(const struct mf_field *,
const union mf_value *value, const union mf_value *mask,
struct ds *);
+void mf_format_subvalue(const union mf_subvalue *subvalue, struct ds *s);
#endif /* meta-flow.h */
#endif /* meta-flow.h */