summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBen Warren <ben@skyportsystems.com>2016-04-04 21:32:02 -0400
committerBen Pfaff <blp@ovn.org>2016-04-14 10:18:36 -0700
commitb2bd6da6367f8112ea183edc184ef3fe998917f9 (patch)
tree5a1b5b4734b2feb3eaffed54a821661f264445dc /include
parentb44aaaaff8d826535025f4f8d12808c4ef36a7a8 (diff)
downloadopenvswitch-b2bd6da6367f8112ea183edc184ef3fe998917f9.tar.gz
Break packets.h into private and public parts
Public (struct definitions and some prototypes) go in include/openvswitch Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'include')
-rw-r--r--include/openvswitch/automake.mk1
-rw-r--r--include/openvswitch/packets.h64
2 files changed, 65 insertions, 0 deletions
diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk
index 8d253f364..fc183ffbc 100644
--- a/include/openvswitch/automake.mk
+++ b/include/openvswitch/automake.mk
@@ -7,6 +7,7 @@ openvswitchinclude_HEADERS = \
include/openvswitch/ofpbuf.h \
include/openvswitch/ofp-errors.h \
include/openvswitch/ofp-parse.h \
+ include/openvswitch/packets.h \
include/openvswitch/thread.h \
include/openvswitch/token-bucket.h \
include/openvswitch/tun-metadata.h \
diff --git a/include/openvswitch/packets.h b/include/openvswitch/packets.h
new file mode 100644
index 000000000..5d97309a9
--- /dev/null
+++ b/include/openvswitch/packets.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+ *
+ * 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 OPENVSWITCH_PACKETS_H
+#define OPENVSWITCH_PACKETS_H 1
+
+#include <netinet/in.h>
+#include "openvswitch/tun-metadata.h"
+
+/* Tunnel information used in flow key and metadata. */
+struct flow_tnl {
+ ovs_be32 ip_dst;
+ struct in6_addr ipv6_dst;
+ ovs_be32 ip_src;
+ struct in6_addr ipv6_src;
+ ovs_be64 tun_id;
+ uint16_t flags;
+ uint8_t ip_tos;
+ uint8_t ip_ttl;
+ ovs_be16 tp_src;
+ ovs_be16 tp_dst;
+ ovs_be16 gbp_id;
+ uint8_t gbp_flags;
+ uint8_t pad1[5]; /* Pad to 64 bits. */
+ struct tun_metadata metadata;
+};
+
+/* Some flags are exposed through OpenFlow while others are used only
+ * internally. */
+
+/* Public flags */
+#define FLOW_TNL_F_OAM (1 << 0)
+
+#define FLOW_TNL_PUB_F_MASK ((1 << 1) - 1)
+
+/* Private flags */
+#define FLOW_TNL_F_DONT_FRAGMENT (1 << 1)
+#define FLOW_TNL_F_CSUM (1 << 2)
+#define FLOW_TNL_F_KEY (1 << 3)
+
+#define FLOW_TNL_F_MASK ((1 << 4) - 1)
+
+/* Unfortunately, a "struct flow" sometimes has to handle OpenFlow port
+ * numbers and other times datapath (dpif) port numbers. This union allows
+ * access to both. */
+union flow_in_port {
+ odp_port_t odp_port;
+ ofp_port_t ofp_port;
+};
+
+#endif /* packets.h */