X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fopenflow%2Fnicira-ext.h;h=df2488bd9200caa47d1095ba352230576e6230de;hb=1588bb8d91095366786aa92d53759b1cf48139d6;hp=c97478faf3bc337d7649aff8cfb97cfdc7425ee5;hpb=933df876ffa272d9d5768edf7fc5465261888ad2;p=openvswitch diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index c97478fa..df2488bd 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -142,7 +142,17 @@ enum nx_action_subtype { * This is useful because OpenFlow does not provide a way to match on the * Ethernet addresses inside ARP packets, so there is no other way to drop * spoofed ARPs other than sending every ARP packet to a controller. */ - NXAST_DROP_SPOOFED_ARP + NXAST_DROP_SPOOFED_ARP, + + /* Set the queue that should be used when packets are output. This + * is similar to the OpenFlow OFPAT_ENQUEUE action, but does not + * take the output port as an argument. This allows the queue + * to be defined before the port is known. */ + NXAST_SET_QUEUE, + + /* Restore the queue to the value it was before any NXAST_SET_QUEUE + * actions were used. */ + NXAST_POP_QUEUE }; /* Action structure for NXAST_RESUBMIT. */ @@ -167,6 +177,17 @@ struct nx_action_set_tunnel { }; OFP_ASSERT(sizeof(struct nx_action_set_tunnel) == 16); +/* Action structure for NXAST_SET_QUEUE. */ +struct nx_action_set_queue { + uint16_t type; /* OFPAT_VENDOR. */ + uint16_t len; /* Length is 16. */ + uint32_t vendor; /* NX_VENDOR_ID. */ + uint16_t subtype; /* NXAST_SET_QUEUE. */ + uint8_t pad[2]; + uint32_t queue_id; /* Where to enqueue packets. */ +}; +OFP_ASSERT(sizeof(struct nx_action_set_queue) == 16); + /* Header for Nicira-defined actions. */ struct nx_action_header { uint16_t type; /* OFPAT_VENDOR. */