summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--datapath-windows/ovsext/Actions.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c
index 70ac0a0e5..218e7db81 100644
--- a/datapath-windows/ovsext/Actions.c
+++ b/datapath-windows/ovsext/Actions.c
@@ -1712,6 +1712,15 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
ipHdr->ttl = ipAttr->ipv4_ttl;
key->ipKey.nwTtl = ipAttr->ipv4_ttl;
}
+ if (ipHdr->dscp != (ipAttr->ipv4_tos & 0xfc)) {
+ /* ECN + DSCP */
+ UINT8 newTos = (ipHdr->tos & 0x3) | (ipAttr->ipv4_tos & 0xfc);
+ if (ipHdr->check != 0) {
+ ipHdr->check = ChecksumUpdate16(ipHdr->check, ipHdr->tos, newTos);
+ }
+ ipHdr->tos = newTos;
+ key->ipKey.nwTos = newTos;
+ }
return NDIS_STATUS_SUCCESS;
}