From 70d9d69ab99b4a64175c883d010005b1adc4b9d2 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Tue, 18 Oct 2022 01:48:28 +0900 Subject: restarting on master=6.0 with rhe patches v7 --- debian/changelog | 9 +++ debian/config/defines | 2 +- ...ssector-dissect-into-ip-ipv6-header-insid.patch | 79 ++++++++++++++++++++++ debian/patches/series | 3 + 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch diff --git a/debian/changelog b/debian/changelog index 41c9fc5a7..a7c6fb94d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +linux (6.0.8-1~rhe0+7) UNRELEASED; urgency=medium + + * Based on 7964afa171ff ("Prepare to release linux (6.0.8-1).", 2022-11-11, + sid) + * Adjusted configs: debian/changelog and debian/config/defines + * Added RHE patches (v7 - no changes from 5.16.0-rhe0) + + -- Kazuki Yamaguchi Sun, 13 Nov 2022 21:10:56 +0900 + linux (6.0.8-1) unstable; urgency=medium * New upstream stable update: diff --git a/debian/config/defines b/debian/config/defines index e7c6ce18e..6b676bfda 100644 --- a/debian/config/defines +++ b/debian/config/defines @@ -1,5 +1,5 @@ [abi] -abiname: 4 +abiname: rhe0 ignore-changes: __cpuhp_* __udp_gso_segment diff --git a/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch b/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch new file mode 100644 index 000000000..4438c1430 --- /dev/null +++ b/debian/patches/rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch @@ -0,0 +1,79 @@ +From 9903b7d309f4587540f47e0ab6e5b04b65aab22c Mon Sep 17 00:00:00 2001 +From: Kazuki Yamaguchi +Date: Sun, 6 Sep 2020 04:46:10 +0900 +Subject: [PATCH] net/flow_dissector: dissect into ip/ipv6 header inside MPLS + +--- + net/core/flow_dissector.c | 27 ++++++++++++++++++++++----- + 1 file changed, 22 insertions(+), 5 deletions(-) + +diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c +index 5dc3860e9fc7..0fcfd8a78cf1 100644 +--- a/net/core/flow_dissector.c ++++ b/net/core/flow_dissector.c +@@ -413,9 +413,9 @@ static enum flow_dissect_ret + __skb_flow_dissect_mpls(const struct sk_buff *skb, + struct flow_dissector *flow_dissector, + void *target_container, const void *data, int nhoff, +- int hlen, int lse_index, bool *entropy_label) ++ int hlen, int lse_index, bool *entropy_label, __be16 *proto) + { +- struct mpls_label *hdr, _hdr; ++ struct mpls_label *hdr, _hdr[2]; + u32 entry, label, bos; + + if (!dissector_uses_key(flow_dissector, +@@ -431,7 +431,7 @@ __skb_flow_dissect_mpls(const struct sk_buff *skb, + if (!hdr) + return FLOW_DISSECT_RET_OUT_BAD; + +- entry = ntohl(hdr->entry); ++ entry = ntohl(hdr[0].entry); + label = (entry & MPLS_LS_LABEL_MASK) >> MPLS_LS_LABEL_SHIFT; + bos = (entry & MPLS_LS_S_MASK) >> MPLS_LS_S_SHIFT; + +@@ -464,7 +464,19 @@ __skb_flow_dissect_mpls(const struct sk_buff *skb, + + *entropy_label = label == MPLS_LABEL_ENTROPY; + +- return bos ? FLOW_DISSECT_RET_OUT_GOOD : FLOW_DISSECT_RET_PROTO_AGAIN; ++ if (bos) { ++ /* A wild assumption. I use IPv4 and IPv6 only */ ++ u8 firstbyte = ntohl(hdr[1].entry) >> 24; ++ if (0x45 <= firstbyte && firstbyte <= 0x4f) { ++ *proto = htons(ETH_P_IP); ++ return FLOW_DISSECT_RET_PROTO_AGAIN; ++ } else if (0x60 <= firstbyte && firstbyte <= 0x6f) { ++ *proto = htons(ETH_P_IPV6); ++ return FLOW_DISSECT_RET_PROTO_AGAIN; ++ } ++ return FLOW_DISSECT_RET_OUT_GOOD; ++ } ++ return FLOW_DISSECT_RET_PROTO_AGAIN; + } + + static enum flow_dissect_ret +@@ -1302,7 +1314,7 @@ bool __skb_flow_dissect(const struct net *net, + fdret = __skb_flow_dissect_mpls(skb, flow_dissector, + target_container, data, + nhoff, hlen, mpls_lse, +- &mpls_el); ++ &mpls_el, &proto); + nhoff += sizeof(struct mpls_label); + mpls_lse++; + break; +@@ -1871,6 +1883,11 @@ static const struct flow_dissector_key flow_keys_dissector_keys[] = { + .key_id = FLOW_DISSECTOR_KEY_GRE_KEYID, + .offset = offsetof(struct flow_keys, keyid), + }, ++ { ++ .key_id = FLOW_DISSECTOR_KEY_MPLS, ++ /* XXX: Reusing keyid */ ++ .offset = offsetof(struct flow_keys, keyid), ++ }, + }; + + static const struct flow_dissector_key flow_keys_dissector_symmetric_keys[] = { +-- +2.38.0 + diff --git a/debian/patches/series b/debian/patches/series index d3ca53839..e1c1f9bbf 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -118,3 +118,6 @@ bugfix/all/libapi-define-_fortify_source-as-2-not-empty.patch bugfix/all/tools-perf-fix-missing-ldflags-for-some-programs.patch # ABI maintenance + +# RHE +rhe/0001-net-flow_dissector-dissect-into-ip-ipv6-header-insid.patch -- cgit v1.2.3