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 {
32
} OVS_VXLAN_VPORT, *POVS_VXLAN_VPORT;
35
typedef struct VXLANHdr {
38
/* Packet needs replication to multicast group (used for multicast proxy). */
39
UINT32 locallyReplicate:1;
40
/* Instance ID flag, must be set to 1. */
52
NTSTATUS OvsInitVxlanTunnel(PIRP irp,
53
POVS_VPORT_ENTRY vport,
55
PFNTunnelVportPendingOp callback,
58
NTSTATUS OvsCleanupVxlanTunnel(PIRP irp,
59
POVS_VPORT_ENTRY vport,
60
PFNTunnelVportPendingOp callback,
63
NDIS_STATUS OvsSlowPathDecapVxlan(const PNET_BUFFER_LIST packet,
64
OvsIPv4TunnelKey *tunnelKey);
66
NDIS_STATUS OvsEncapVxlan(POVS_VPORT_ENTRY vport,
67
PNET_BUFFER_LIST curNbl,
68
OvsIPv4TunnelKey *tunKey,
69
POVS_SWITCH_CONTEXT switchContext,
70
POVS_PACKET_HDR_INFO layers,
71
PNET_BUFFER_LIST *newNbl);
73
NDIS_STATUS OvsDecapVxlan(POVS_SWITCH_CONTEXT switchContext,
74
PNET_BUFFER_LIST curNbl,
75
OvsIPv4TunnelKey *tunKey,
76
PNET_BUFFER_LIST *newNbl);
78
static __inline UINT32
79
OvsGetVxlanTunHdrSize(VOID)
81
/* XXX: Can L2 include VLAN at all? */
82
return sizeof (EthHdr) + sizeof (IPHdr) + sizeof (UDPHdr) +
86
#define VXLAN_UDP_PORT 4789
87
#define VXLAN_UDP_PORT_NBO 0xB512
89
#endif /* __VXLAN_H_ */