]> git.proxmox.com Git - mirror_ovs.git/blame - lib/packet-dpif.h
vtep: Limit the split elements to 2 (maxsplit + 1)
[mirror_ovs.git] / lib / packet-dpif.h
CommitLineData
91088554
DDP
1/*
2 * Copyright (c) 2014 Nicira, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef PACKET_DPIF_H
18#define PACKET_DPIF_H 1
19
20#include "ofpbuf.h"
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/* A packet received from a netdev and passed to a dpif. */
27
28struct dpif_packet {
29 struct ofpbuf ofpbuf; /* Packet data. */
61a2647e 30#ifndef DPDK_NETDEV
8cbf4f47 31 uint32_t dp_hash; /* Packet hash. */
61a2647e 32#endif
41ccaa24 33 struct pkt_metadata md;
91088554
DDP
34};
35
36struct dpif_packet *dpif_packet_new_with_headroom(size_t size,
37 size_t headroom);
38
39struct dpif_packet *dpif_packet_clone_from_ofpbuf(const struct ofpbuf *b);
40
41struct dpif_packet *dpif_packet_clone(struct dpif_packet *p);
42
43static inline void dpif_packet_delete(struct dpif_packet *p)
44{
e381def9 45 struct ofpbuf *buf = &p->ofpbuf;
91088554 46
e381def9 47 ofpbuf_delete(buf);
91088554
DDP
48}
49
61a2647e
DDP
50static inline uint32_t dpif_packet_get_dp_hash(struct dpif_packet *p)
51{
52#ifdef DPDK_NETDEV
53 return p->ofpbuf.mbuf.pkt.hash.rss;
54#else
55 return p->dp_hash;
56#endif
57}
58
59static inline void dpif_packet_set_dp_hash(struct dpif_packet *p,
60 uint32_t hash)
61{
62#ifdef DPDK_NETDEV
63 p->ofpbuf.mbuf.pkt.hash.rss = hash;
64#else
65 p->dp_hash = hash;
66#endif
67}
68
91088554
DDP
69#ifdef __cplusplus
70}
71#endif
72
73#endif /* packet-dpif.h */