Message ID | 20220624110909.88892-1-svc.ovs-community@vmware.com |
---|---|
State | Accepted |
Headers | show |
Series | [ovs-dev,v1,1/2] datapath-windows:Fix icmp related error code. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/intel-ovs-compilation | success | test: success |
Series applied on master thank you for the patches! Alin. -----Original Message----- From: dev <ovs-dev-bounces@openvswitch.org> On Behalf Of ldejing via dev Sent: Friday, June 24, 2022 2:09 PM To: dev@openvswitch.org Cc: ldejing <ldejing@vmware.com> Subject: [ovs-dev] [PATCH v1 1/2] datapath-windows:Fix icmp related error code. From: ldejing <ldejing@vmware.com> When icmp error code send back to sender, currently ovs ct can't create conntrack for the error code properly, this patch mainly fix the bug. icmp error code test case: 1) packet too big. 2) network unreachable 3) parameter problem Signed-off-by: ldejing <ldejing@vmware.com> --- datapath-windows/ovsext/Conntrack-icmp.c | 6 +++++- datapath-windows/ovsext/Conntrack.c | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/datapath-windows/ovsext/Conntrack-icmp.c b/datapath-windows/ovsext/Conntrack-icmp.c index 9221f8518..081eb73d9 100644 --- a/datapath-windows/ovsext/Conntrack-icmp.c +++ b/datapath-windows/ovsext/Conntrack-icmp.c @@ -78,7 +78,11 @@ OvsConntrackValidateIcmp6Packet(const ICMPHdr *icmp) return FALSE; } - return icmp->type == ICMP6_ECHO_REQUEST; + return icmp->type == ICMP6_ECHO_REQUEST || + icmp->type == ICMP6_PACKET_TOO_BIG || + icmp->type == ICMP6_DST_UNREACH || + icmp->type == ICMP6_TIME_EXCEEDED || + icmp->type == ICMP6_PARAM_PROB; } OVS_CT_ENTRY * diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index 471bf961b..f56349640 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -356,8 +356,8 @@ OvsCtEntryCreate(OvsForwardingContext *fwdCtx, const ICMPHdr *icmp; icmp = OvsGetIcmp(curNbl, layers->l4Offset, &storage); if (!OvsConntrackValidateIcmp6Packet(icmp)) { - if(icmp) { - OVS_LOG_TRACE("Invalid ICMP packet detected, icmp->type %u", + if (icmp) { + OVS_LOG_TRACE("Invalid ICMP6 packet detected, + icmp->type %u", icmp->type); } state = OVS_CS_F_INVALID; -- 2.30.1 (Apple Git-130)
diff --git a/datapath-windows/ovsext/Conntrack-icmp.c b/datapath-windows/ovsext/Conntrack-icmp.c index 9221f8518..081eb73d9 100644 --- a/datapath-windows/ovsext/Conntrack-icmp.c +++ b/datapath-windows/ovsext/Conntrack-icmp.c @@ -78,7 +78,11 @@ OvsConntrackValidateIcmp6Packet(const ICMPHdr *icmp) return FALSE; } - return icmp->type == ICMP6_ECHO_REQUEST; + return icmp->type == ICMP6_ECHO_REQUEST || + icmp->type == ICMP6_PACKET_TOO_BIG || + icmp->type == ICMP6_DST_UNREACH || + icmp->type == ICMP6_TIME_EXCEEDED || + icmp->type == ICMP6_PARAM_PROB; } OVS_CT_ENTRY * diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index 471bf961b..f56349640 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -356,8 +356,8 @@ OvsCtEntryCreate(OvsForwardingContext *fwdCtx, const ICMPHdr *icmp; icmp = OvsGetIcmp(curNbl, layers->l4Offset, &storage); if (!OvsConntrackValidateIcmp6Packet(icmp)) { - if(icmp) { - OVS_LOG_TRACE("Invalid ICMP packet detected, icmp->type %u", + if (icmp) { + OVS_LOG_TRACE("Invalid ICMP6 packet detected, icmp->type %u", icmp->type); } state = OVS_CS_F_INVALID;