/*
- * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
OFPUTIL_NXT_FLOW_REMOVED,
OFPUTIL_NXT_SET_PACKET_IN_FORMAT,
OFPUTIL_NXT_PACKET_IN,
+ OFPUTIL_NXT_FLOW_AGE,
+ OFPUTIL_NXT_SET_ASYNC_CONFIG,
+ OFPUTIL_NXT_SET_CONTROLLER_ID,
/* NXST_* stat requests. */
OFPUTIL_NXST_FLOW_REQUEST,
uint32_t duration_nsec;
uint16_t idle_timeout;
uint16_t hard_timeout;
+ int idle_age; /* Seconds since last packet, -1 if unknown. */
+ int hard_age; /* Seconds since last change, -1 if unknown. */
uint64_t packet_count; /* Packet count, UINT64_MAX if unknown. */
uint64_t byte_count; /* Byte count, UINT64_MAX if unknown. */
union ofp_action *actions;
};
int ofputil_decode_flow_stats_reply(struct ofputil_flow_stats *,
- struct ofpbuf *msg);
+ struct ofpbuf *msg,
+ bool flow_age_extension);
void ofputil_append_flow_stats_reply(const struct ofputil_flow_stats *,
struct list *replies);
const void *packet;
size_t packet_len;
- uint8_t reason; /* One of OFPR_*. */
+ enum ofp_packet_in_reason reason; /* One of OFPRR_*. */
+ uint16_t controller_id; /* Controller ID to send to. */
uint8_t table_id;
ovs_be64 cookie;
const struct ofp_header *);
struct ofpbuf *ofputil_encode_packet_in(const struct ofputil_packet_in *,
enum nx_packet_in_format);
-int ofputil_decode_packet_in(struct ofputil_packet_in *pi,
- const struct ofp_header *oh);
+
+const char *ofputil_packet_in_reason_to_string(enum ofp_packet_in_reason);
+bool ofputil_packet_in_reason_from_string(const char *,
+ enum ofp_packet_in_reason *);
+
+/* Abstract packet-out message. */
+struct ofputil_packet_out {
+ const void *packet; /* Packet data, if buffer_id == UINT32_MAX. */
+ size_t packet_len; /* Length of packet data in bytes. */
+ uint32_t buffer_id; /* Buffer id or UINT32_MAX if no buffer. */
+ uint16_t in_port; /* Packet's input port or OFPP_NONE. */
+ union ofp_action *actions; /* Actions. */
+ size_t n_actions; /* Number of elements in 'actions' array. */
+};
+
+enum ofperr ofputil_decode_packet_out(struct ofputil_packet_out *,
+ const struct ofp_packet_out *);
+struct ofpbuf *ofputil_encode_packet_out(const struct ofputil_packet_out *);
/* OpenFlow protocol utility functions. */
void *make_openflow(size_t openflow_len, uint8_t type, struct ofpbuf **);
struct ofpbuf *make_packet_in(uint32_t buffer_id, uint16_t in_port,
uint8_t reason,
const struct ofpbuf *payload, int max_send_len);
-struct ofpbuf *make_packet_out(const struct ofpbuf *packet, uint32_t buffer_id,
- uint16_t in_port,
- const struct ofp_action_header *,
- size_t n_actions);
-struct ofpbuf *make_buffered_packet_out(uint32_t buffer_id,
- uint16_t in_port, uint16_t out_port);
-struct ofpbuf *make_unbuffered_packet_out(const struct ofpbuf *packet,
- uint16_t in_port, uint16_t out_port);
struct ofpbuf *make_echo_request(void);
struct ofpbuf *make_echo_reply(const struct ofp_header *rq);
+struct ofpbuf *ofputil_encode_barrier_request(void);
+
const char *ofputil_frag_handling_to_string(enum ofp_config_flags);
bool ofputil_frag_handling_from_string(const char *, enum ofp_config_flags *);
\f
* OFPUTIL_NXAST_BUNDLE_LOAD
* OFPUTIL_NXAST_RESUBMIT_TABLE
* OFPUTIL_NXAST_OUTPUT_REG
+ * OFPUTIL_NXAST_LEARN
+ * OFPUTIL_NXAST_DEC_TTL
+ * OFPUTIL_NXAST_FIN_TIMEOUT
*
* (The above list helps developers who want to "grep" for these definitions.)
*/