2 * Copyright (c) 2014 VMware, Inc.
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:
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 typedef struct _OVS_VXLAN_VPORT {
31 } OVS_VXLAN_VPORT, *POVS_VXLAN_VPORT;
34 typedef struct VXLANHdr {
37 /* Packet needs replication to multicast group (used for multicast proxy). */
38 UINT32 locallyReplicate:1;
39 /* Instance ID flag, must be set to 1. */
51 NTSTATUS OvsInitVxlanTunnel(PIRP irp,
52 POVS_VPORT_ENTRY vport,
54 PFNTunnelVportPendingOp callback,
57 NTSTATUS OvsCleanupVxlanTunnel(PIRP irp,
58 POVS_VPORT_ENTRY vport,
59 PFNTunnelVportPendingOp callback,
62 NDIS_STATUS OvsSlowPathDecapVxlan(const PNET_BUFFER_LIST packet,
63 OvsIPv4TunnelKey *tunnelKey);
65 NDIS_STATUS OvsEncapVxlan(POVS_VPORT_ENTRY vport,
66 PNET_BUFFER_LIST curNbl,
67 OvsIPv4TunnelKey *tunKey,
68 POVS_SWITCH_CONTEXT switchContext,
69 POVS_PACKET_HDR_INFO layers,
70 PNET_BUFFER_LIST *newNbl);
72 NDIS_STATUS OvsDecapVxlan(POVS_SWITCH_CONTEXT switchContext,
73 PNET_BUFFER_LIST curNbl,
74 OvsIPv4TunnelKey *tunKey,
75 PNET_BUFFER_LIST *newNbl);
77 static __inline UINT32
78 OvsGetVxlanTunHdrSize(VOID)
80 /* XXX: Can L2 include VLAN at all? */
81 return sizeof (EthHdr) + sizeof (IPHdr) + sizeof (UDPHdr) +
85 #define VXLAN_UDP_PORT 4789
86 #define VXLAN_UDP_PORT_NBO 0xB512
88 #endif /* __VXLAN_H_ */