/*
- * Distributed under the terms of the GNU GPL version 2.
- * Copyright (c) 2008, 2009 Nicira Networks
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
#ifndef OPENFLOW_NICIRA_EXT_H
* pairs in the form "key=value\n". */
NXT_STATUS_REPLY,
- /* Configure an action. Most actions do not require configuration
- * beyond that supplied in the actual action call. */
- NXT_ACT_SET_CONFIG,
-
- /* Get configuration of action. */
- NXT_ACT_GET_CONFIG,
-
- /* Remote command execution. The request body is a sequence of strings
- * delimited by null bytes. The first string is a command name.
- * Subsequent strings are command arguments. */
- NXT_COMMAND_REQUEST,
-
- /* Remote command execution reply, sent when the command's execution
- * completes. The reply body is struct nx_command_reply. */
- NXT_COMMAND_REPLY,
-
/* No longer used. */
+ NXT_ACT_SET_CONFIG__OBSOLETE,
+ NXT_ACT_GET_CONFIG__OBSOLETE,
+ NXT_COMMAND_REQUEST__OBSOLETE,
+ NXT_COMMAND_REPLY__OBSOLETE,
NXT_FLOW_END_CONFIG__OBSOLETE,
-
- /* No longer used. */
NXT_FLOW_END__OBSOLETE,
-
- /* Management protocol. See "openflow-mgmt.h". */
- NXT_MGMT,
+ NXT_MGMT__OBSOLETE,
};
struct nicira_header {
uint32_t vendor; /* NX_VENDOR_ID. */
uint32_t subtype; /* One of NXT_* above. */
};
-OFP_ASSERT(sizeof(struct nicira_header) == sizeof(struct ofp_vendor_header) + 4);
+OFP_ASSERT(sizeof(struct nicira_header) == 16);
enum nx_action_subtype {
NXAST_SNAT__OBSOLETE, /* No longer used. */
- NXAST_RESUBMIT /* Throw against flow table again. */
+
+ /* Searches the flow table again, using a flow that is slightly modified
+ * from the original lookup:
+ *
+ * - The flow's in_port is changed to that specified in the 'in_port'
+ * member of struct nx_action_resubmit.
+ *
+ * - If NXAST_RESUBMIT is preceded by actions that affect the flow
+ * (e.g. OFPAT_SET_VLAN_VID), then the flow is updated with the new
+ * values.
+ *
+ * If the modified flow matches in the flow table, then the corresponding
+ * actions are executed, except that NXAST_RESUBMIT actions found in the
+ * secondary set of actions are ignored. Afterward, actions following
+ * NXAST_RESUBMIT in the original set of actions, if any, are executed; any
+ * changes made to the packet (e.g. changes to VLAN) by secondary actions
+ * persist when those actions are executed, although the original in_port
+ * is restored.
+ *
+ * NXAST_RESUBMIT may be used any number of times within a set of actions.
+ */
+ NXAST_RESUBMIT
};
/* Action structure for NXAST_RESUBMIT. */
};
OFP_ASSERT(sizeof(struct nx_action_header) == 16);
-/* Status bits for NXT_COMMAND_REPLY. */
-enum {
- NXT_STATUS_EXITED = 1 << 31, /* Exited normally. */
- NXT_STATUS_SIGNALED = 1 << 30, /* Exited due to signal. */
- NXT_STATUS_UNKNOWN = 1 << 29, /* Exited for unknown reason. */
- NXT_STATUS_COREDUMP = 1 << 28, /* Exited with core dump. */
- NXT_STATUS_ERROR = 1 << 27, /* Command could not be executed. */
- NXT_STATUS_STARTED = 1 << 26, /* Command was started. */
- NXT_STATUS_EXITSTATUS = 0xff, /* Exit code mask if NXT_STATUS_EXITED. */
- NXT_STATUS_TERMSIG = 0xff, /* Signal number if NXT_STATUS_SIGNALED. */
-};
-
-/* NXT_COMMAND_REPLY. */
-struct nx_command_reply {
- struct nicira_header nxh;
- uint32_t status; /* Status bits defined above. */
- /* Followed by any number of bytes of process output. */
-};
-OFP_ASSERT(sizeof(struct nx_command_reply) == 20);
-
#endif /* openflow/nicira-ext.h */