#include <stdbool.h>
#include <stddef.h>
#include "compiler.h"
+#include "dp-packet.h"
+#include "packets.h"
#include "unixctl.h"
+struct netdev;
+struct ovs_action_push_tnl;
+struct netdev_tnl_build_header_params;
+
int
netdev_gre_build_header(const struct netdev *netdev,
struct ovs_action_push_tnl *data,
- const struct flow *tnl_flow);
+ const struct netdev_tnl_build_header_params *params);
+
void
-netdev_gre_push_header(struct dp_packet *packet,
+netdev_gre_push_header(const struct netdev *netdev,
+ struct dp_packet *packet,
const struct ovs_action_push_tnl *data);
-int
+struct dp_packet *
netdev_gre_pop_header(struct dp_packet *packet);
+int
+netdev_erspan_build_header(const struct netdev *netdev,
+ struct ovs_action_push_tnl *data,
+ const struct netdev_tnl_build_header_params *p);
+
void
-netdev_tnl_push_udp_header(struct dp_packet *packet,
+netdev_erspan_push_header(const struct netdev *netdev,
+ struct dp_packet *packet,
+ const struct ovs_action_push_tnl *data);
+struct dp_packet *
+netdev_erspan_pop_header(struct dp_packet *packet);
+
+struct dp_packet *
+netdev_gtpu_pop_header(struct dp_packet *packet);
+
+void
+netdev_gtpu_push_header(const struct netdev *netdev,
+ struct dp_packet *packet,
+ const struct ovs_action_push_tnl *data);
+
+int
+netdev_gtpu_build_header(const struct netdev *netdev,
+ struct ovs_action_push_tnl *data,
+ const struct netdev_tnl_build_header_params *p);
+
+void
+netdev_tnl_push_udp_header(const struct netdev *netdev,
+ struct dp_packet *packet,
const struct ovs_action_push_tnl *data);
int
netdev_geneve_build_header(const struct netdev *netdev,
struct ovs_action_push_tnl *data,
- const struct flow *tnl_flow);
-int
+ const struct netdev_tnl_build_header_params *params);
+
+struct dp_packet *
netdev_geneve_pop_header(struct dp_packet *packet);
int
netdev_vxlan_build_header(const struct netdev *netdev,
struct ovs_action_push_tnl *data,
- const struct flow *tnl_flow);
-int
+ const struct netdev_tnl_build_header_params *params);
+
+struct dp_packet *
netdev_vxlan_pop_header(struct dp_packet *packet);
static inline bool
return (void *)((char *)eth + sizeof (struct eth_header));
}
+void *
+netdev_tnl_ip_build_header(struct ovs_action_push_tnl *data,
+ const struct netdev_tnl_build_header_params *params,
+ uint8_t next_proto);
+
extern uint16_t tnl_udp_port_min;
extern uint16_t tnl_udp_port_max;