diff options
author | Ben Pfaff <blp@nicira.com> | 2012-07-03 22:14:29 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2012-07-03 22:21:12 -0700 |
commit | d01c980ffe0d61497298a9f907ff93fe1751e2bd (patch) | |
tree | 9eb64c7bc6f1e9f8a10338e32e413485e79db600 /include/openflow/openflow-1.0.h | |
parent | f25d0cf3c366d92042269a4f787f19c741c2530c (diff) | |
download | openvswitch-d01c980ffe0d61497298a9f907ff93fe1751e2bd.tar.gz |
ofp-actions: Add decoding and encoding OF1.1 instructions and actions.
So far, only the Apply-Actions instruction is supported, and only
actions that have identical semantics to OpenFlow 1.0 actions.
Co-authored-by: Simon Horman <horms@verge.net.au>
Co-authored-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'include/openflow/openflow-1.0.h')
-rw-r--r-- | include/openflow/openflow-1.0.h | 59 |
1 files changed, 3 insertions, 56 deletions
diff --git a/include/openflow/openflow-1.0.h b/include/openflow/openflow-1.0.h index 2ee356df8..039eb6bea 100644 --- a/include/openflow/openflow-1.0.h +++ b/include/openflow/openflow-1.0.h @@ -232,72 +232,19 @@ enum ofp10_action_type { * When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max * number of bytes to send. A 'max_len' of zero means no bytes of the * packet should be sent. */ -struct ofp_action_output { +struct ofp10_action_output { ovs_be16 type; /* OFPAT10_OUTPUT. */ ovs_be16 len; /* Length is 8. */ ovs_be16 port; /* Output port. */ ovs_be16 max_len; /* Max length to send to controller. */ }; -OFP_ASSERT(sizeof(struct ofp_action_output) == 8); +OFP_ASSERT(sizeof(struct ofp10_action_output) == 8); /* The VLAN id is 12 bits, so we can use the entire 16 bits to indicate * special conditions. All ones is used to match that no VLAN id was * set. */ #define OFP_VLAN_NONE 0xffff -/* Action structure for OFPAT10_SET_VLAN_VID. */ -struct ofp_action_vlan_vid { - ovs_be16 type; /* OFPAT10_SET_VLAN_VID. */ - ovs_be16 len; /* Length is 8. */ - ovs_be16 vlan_vid; /* VLAN id. */ - uint8_t pad[2]; -}; -OFP_ASSERT(sizeof(struct ofp_action_vlan_vid) == 8); - -/* Action structure for OFPAT10_SET_VLAN_PCP. */ -struct ofp_action_vlan_pcp { - ovs_be16 type; /* OFPAT10_SET_VLAN_PCP. */ - ovs_be16 len; /* Length is 8. */ - uint8_t vlan_pcp; /* VLAN priority. */ - uint8_t pad[3]; -}; -OFP_ASSERT(sizeof(struct ofp_action_vlan_pcp) == 8); - -/* Action structure for OFPAT10_SET_DL_SRC/DST. */ -struct ofp_action_dl_addr { - ovs_be16 type; /* OFPAT10_SET_DL_SRC/DST. */ - ovs_be16 len; /* Length is 16. */ - uint8_t dl_addr[OFP_ETH_ALEN]; /* Ethernet address. */ - uint8_t pad[6]; -}; -OFP_ASSERT(sizeof(struct ofp_action_dl_addr) == 16); - -/* Action structure for OFPAT10_SET_NW_SRC/DST. */ -struct ofp_action_nw_addr { - ovs_be16 type; /* OFPAT10_SET_TW_SRC/DST. */ - ovs_be16 len; /* Length is 8. */ - ovs_be32 nw_addr; /* IP address. */ -}; -OFP_ASSERT(sizeof(struct ofp_action_nw_addr) == 8); - -/* Action structure for OFPAT10_SET_NW_TOS. */ -struct ofp_action_nw_tos { - ovs_be16 type; /* OFPAT10_SET_TW_TOS. */ - ovs_be16 len; /* Length is 8. */ - uint8_t nw_tos; /* DSCP in high 6 bits, rest ignored. */ - uint8_t pad[3]; -}; -OFP_ASSERT(sizeof(struct ofp_action_nw_tos) == 8); - -/* Action structure for OFPAT10_SET_TP_SRC/DST. */ -struct ofp_action_tp_port { - ovs_be16 type; /* OFPAT10_SET_TP_SRC/DST. */ - ovs_be16 len; /* Length is 8. */ - ovs_be16 tp_port; /* TCP/UDP port. */ - uint8_t pad[2]; -}; -OFP_ASSERT(sizeof(struct ofp_action_tp_port) == 8); - /* Action header for OFPAT10_VENDOR. The rest of the body is vendor-defined. */ struct ofp_action_vendor_header { ovs_be16 type; /* OFPAT10_VENDOR. */ @@ -336,7 +283,7 @@ union ofp_action { ovs_be16 type; struct ofp_action_header header; struct ofp_action_vendor_header vendor; - struct ofp_action_output output; + struct ofp10_action_output output10; struct ofp_action_vlan_vid vlan_vid; struct ofp_action_vlan_pcp vlan_pcp; struct ofp_action_nw_addr nw_addr; |