NDIS_STATUS
OvsParseIPv6(const NET_BUFFER_LIST *packet,
- OvsFlowKey *key,
- POVS_PACKET_HDR_INFO layers)
+ OvsFlowKey *key,
+ POVS_PACKET_HDR_INFO layers)
{
UINT16 ofs = layers->l3Offset;
IPv6Hdr ipv6HdrStorage;
VOID
OvsParseTcp(const NET_BUFFER_LIST *packet,
- L4Key *flow,
- POVS_PACKET_HDR_INFO layers)
+ L4Key *flow,
+ POVS_PACKET_HDR_INFO layers)
{
TCPHdr tcpStorage;
const TCPHdr *tcp = OvsGetTcp(packet, layers->l4Offset, &tcpStorage);
if (tcp) {
flow->tpSrc = tcp->source;
flow->tpDst = tcp->dest;
- flow->flags = OvsGetTcpFlags(packet, layers);
layers->isTcp = 1;
layers->l7Offset = layers->l4Offset + 4 * tcp->doff;
}
}
+VOID
+OvsParseSctp(const NET_BUFFER_LIST *packet,
+ L4Key *flow,
+ POVS_PACKET_HDR_INFO layers)
+{
+ SCTPHdr sctpStorage;
+ const SCTPHdr *sctp = OvsGetSctp(packet, layers->l4Offset, &sctpStorage);
+ if (sctp) {
+ flow->tpSrc = sctp->source;
+ flow->tpDst = sctp->dest;
+ layers->isSctp = 1;
+ layers->l7Offset = layers->l4Offset + sizeof *sctp;
+ }
+}
+
VOID
OvsParseUdp(const NET_BUFFER_LIST *packet,
- L4Key *flow,
- POVS_PACKET_HDR_INFO layers)
+ L4Key *flow,
+ POVS_PACKET_HDR_INFO layers)
{
UDPHdr udpStorage;
const UDPHdr *udp = OvsGetUdp(packet, layers->l4Offset, &udpStorage);