get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/138924/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 138924,
    "url": "http://patches.dpdk.org/api/patches/138924/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1711580958-20808-4-git-send-email-roretzla@linux.microsoft.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1711580958-20808-4-git-send-email-roretzla@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1711580958-20808-4-git-send-email-roretzla@linux.microsoft.com",
    "date": "2024-03-27T23:09:06",
    "name": "[v2,03/15] net: pack structures when building with MSVC",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "1ff041e7927ea6848f8360a7c104823ad43f1df7",
    "submitter": {
        "id": 2077,
        "url": "http://patches.dpdk.org/api/people/2077/?format=api",
        "name": "Tyler Retzlaff",
        "email": "roretzla@linux.microsoft.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1711580958-20808-4-git-send-email-roretzla@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 31634,
            "url": "http://patches.dpdk.org/api/series/31634/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31634",
            "date": "2024-03-27T23:09:03",
            "name": "fix packing of structs when building with MSVC",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/31634/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/138924/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/138924/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5BDED43D5B;\n\tThu, 28 Mar 2024 00:09:37 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DF88941141;\n\tThu, 28 Mar 2024 00:09:24 +0100 (CET)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id 36C97406BC\n for <dev@dpdk.org>; Thu, 28 Mar 2024 00:09:20 +0100 (CET)",
            "by linux.microsoft.com (Postfix, from userid 1086)\n id 5206220E6924; Wed, 27 Mar 2024 16:09:19 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 5206220E6924",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1711580959;\n bh=Ki3JG4rhpX/MsUw/9yAbTgF1KlFKrDOKEmyyVmHufZ4=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=bSuZu9XCI3xkI4HTqTJdsBDV0b9UbWr7QFhtwkJFLWOopWNLmQ6ZEtFer9MVA6PsU\n 1VjSyHRBm+xegM0XVDzwy8hvPqJd0U2WvmL4CuoYs7iNi5tKwWwPXYqOp2qSyz5tr5\n a2/06HlfV97Gw+BO5+0XelC/KOiyXO5eARersV0E=",
        "From": "Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "To": "dev@dpdk.org",
        "Cc": "Akhil Goyal <gakhil@marvell.com>, Aman Singh <aman.deep.singh@intel.com>,\n Anatoly Burakov <anatoly.burakov@intel.com>,\n Bruce Richardson <bruce.richardson@intel.com>,\n Byron Marohn <byron.marohn@intel.com>, Conor Walsh <conor.walsh@intel.com>,\n Cristian Dumitrescu <cristian.dumitrescu@intel.com>,\n Dariusz Sosnowski <dsosnowski@nvidia.com>,\n David Hunt <david.hunt@intel.com>, Jerin Jacob <jerinj@marvell.com>,\n Jingjing Wu <jingjing.wu@intel.com>,\n Kirill Rybalchenko <kirill.rybalchenko@intel.com>,\n Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,\n Matan Azrad <matan@nvidia.com>, Ori Kam <orika@nvidia.com>,\n Radu Nicolau <radu.nicolau@intel.com>, Ruifeng Wang <ruifeng.wang@arm.com>,\n Sameh Gobriel <sameh.gobriel@intel.com>,\n Sivaprasad Tummala <sivaprasad.tummala@amd.com>,\n Suanming Mou <suanmingm@nvidia.com>, Sunil Kumar Kori <skori@marvell.com>,\n Vamsi Attunuru <vattunuru@marvell.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n Vladimir Medvedkin <vladimir.medvedkin@intel.com>,\n Yipeng Wang <yipeng1.wang@intel.com>,\n Yuying Zhang <Yuying.Zhang@intel.com>,\n Yuying Zhang <yuying.zhang@intel.com>,\n Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "Subject": "[PATCH v2 03/15] net: pack structures when building with MSVC",
        "Date": "Wed, 27 Mar 2024 16:09:06 -0700",
        "Message-Id": "<1711580958-20808-4-git-send-email-roretzla@linux.microsoft.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1711580958-20808-1-git-send-email-roretzla@linux.microsoft.com>",
        "References": "<1710968771-16435-1-git-send-email-roretzla@linux.microsoft.com>\n <1711580958-20808-1-git-send-email-roretzla@linux.microsoft.com>",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Add __rte_msvc_pushpack(1) to all __rte_packed structs to cause packing\nwhen building with MSVC.\n\nSigned-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>\n---\n lib/net/rte_arp.h      | 2 ++\n lib/net/rte_dtls.h     | 1 +\n lib/net/rte_esp.h      | 2 ++\n lib/net/rte_ether.h    | 1 +\n lib/net/rte_geneve.h   | 1 +\n lib/net/rte_gre.h      | 4 ++++\n lib/net/rte_gtp.h      | 5 +++++\n lib/net/rte_ib.h       | 1 +\n lib/net/rte_icmp.h     | 3 +++\n lib/net/rte_ip.h       | 4 ++++\n lib/net/rte_l2tpv2.h   | 4 ++++\n lib/net/rte_macsec.h   | 2 ++\n lib/net/rte_mpls.h     | 1 +\n lib/net/rte_pdcp_hdr.h | 4 ++++\n lib/net/rte_ppp.h      | 1 +\n lib/net/rte_sctp.h     | 1 +\n lib/net/rte_tcp.h      | 1 +\n lib/net/rte_tls.h      | 1 +\n lib/net/rte_udp.h      | 1 +\n lib/net/rte_vxlan.h    | 2 ++\n 20 files changed, 42 insertions(+)",
    "diff": "diff --git a/lib/net/rte_arp.h b/lib/net/rte_arp.h\nindex 668cea1..35d68c1 100644\n--- a/lib/net/rte_arp.h\n+++ b/lib/net/rte_arp.h\n@@ -21,6 +21,7 @@\n /**\n  * ARP header IPv4 payload.\n  */\n+__rte_msvc_pack\n struct __rte_aligned(2) rte_arp_ipv4 {\n \tstruct rte_ether_addr arp_sha;  /**< sender hardware address */\n \trte_be32_t            arp_sip;  /**< sender IP address */\n@@ -31,6 +32,7 @@ struct __rte_aligned(2) rte_arp_ipv4 {\n /**\n  * ARP header.\n  */\n+__rte_msvc_pack\n struct __rte_aligned(2) rte_arp_hdr {\n \trte_be16_t arp_hardware; /**< format of hardware address */\n #define RTE_ARP_HRD_ETHER     1  /**< ARP Ethernet address format */\ndiff --git a/lib/net/rte_dtls.h b/lib/net/rte_dtls.h\nindex 4f541df..0c75b06 100644\n--- a/lib/net/rte_dtls.h\n+++ b/lib/net/rte_dtls.h\n@@ -34,6 +34,7 @@\n  * DTLS Header\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_dtls_hdr {\n \t/** Content type of DTLS packet. Defined as RTE_DTLS_TYPE_*. */\n \tuint8_t type;\ndiff --git a/lib/net/rte_esp.h b/lib/net/rte_esp.h\nindex 464c513..27c9287 100644\n--- a/lib/net/rte_esp.h\n+++ b/lib/net/rte_esp.h\n@@ -20,6 +20,7 @@\n /**\n  * ESP Header\n  */\n+__rte_msvc_pack\n struct rte_esp_hdr {\n \trte_be32_t spi;  /**< Security Parameters Index */\n \trte_be32_t seq;  /**< packet sequence number */\n@@ -28,6 +29,7 @@ struct rte_esp_hdr {\n /**\n  * ESP Trailer\n  */\n+__rte_msvc_pack\n struct rte_esp_tail {\n \tuint8_t pad_len;     /**< number of pad bytes (0-255) */\n \tuint8_t next_proto;  /**< IPv4 or IPv6 or next layer header */\ndiff --git a/lib/net/rte_ether.h b/lib/net/rte_ether.h\nindex 32ed515..354e3a5 100644\n--- a/lib/net/rte_ether.h\n+++ b/lib/net/rte_ether.h\n@@ -301,6 +301,7 @@ struct __rte_aligned(2) rte_ether_hdr {\n  * Contains the 16-bit VLAN Tag Control Identifier and the Ethernet type\n  * of the encapsulated frame.\n  */\n+__rte_msvc_pack\n struct rte_vlan_hdr {\n \trte_be16_t vlan_tci;  /**< Priority (3) + CFI (1) + Identifier Code (12) */\n \trte_be16_t eth_proto; /**< Ethernet type of encapsulated frame. */\ndiff --git a/lib/net/rte_geneve.h b/lib/net/rte_geneve.h\nindex 3bbc561..5c02526 100644\n--- a/lib/net/rte_geneve.h\n+++ b/lib/net/rte_geneve.h\n@@ -38,6 +38,7 @@\n  * More-bits (optional) variable length options.\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_geneve_hdr {\n #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n \tuint8_t ver:2;\t\t/**< Version. */\ndiff --git a/lib/net/rte_gre.h b/lib/net/rte_gre.h\nindex 8da8027..77882e7 100644\n--- a/lib/net/rte_gre.h\n+++ b/lib/net/rte_gre.h\n@@ -27,6 +27,7 @@\n  * GRE Header\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_gre_hdr {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint16_t res2:4; /**< Reserved */\n@@ -51,6 +52,7 @@ struct rte_gre_hdr {\n /**\n  * Optional field checksum in GRE header\n  */\n+__rte_msvc_pack\n struct rte_gre_hdr_opt_checksum_rsvd {\n \trte_be16_t checksum;\n \trte_be16_t reserved1;\n@@ -59,6 +61,7 @@ struct rte_gre_hdr_opt_checksum_rsvd {\n /**\n  * Optional field key in GRE header\n  */\n+__rte_msvc_pack\n struct rte_gre_hdr_opt_key {\n \trte_be32_t key;\n } __rte_packed;\n@@ -66,6 +69,7 @@ struct rte_gre_hdr_opt_key {\n /**\n  * Optional field sequence in GRE header\n  */\n+__rte_msvc_pack\n struct rte_gre_hdr_opt_sequence {\n \trte_be32_t sequence;\n } __rte_packed;\ndiff --git a/lib/net/rte_gtp.h b/lib/net/rte_gtp.h\nindex 9849872..26fc80a 100644\n--- a/lib/net/rte_gtp.h\n+++ b/lib/net/rte_gtp.h\n@@ -28,6 +28,7 @@\n  * No optional fields and next extension header.\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_gtp_hdr {\n \tunion {\n \t\tuint8_t gtp_hdr_info; /**< GTP header info */\n@@ -55,6 +56,7 @@ struct rte_gtp_hdr {\n } __rte_packed;\n \n /* Optional word of GTP header, present if any of E, S, PN is set. */\n+__rte_msvc_pack\n struct rte_gtp_hdr_ext_word {\n \trte_be16_t sqn;\t      /**< Sequence Number. */\n \tuint8_t npdu;\t      /**< N-PDU number. */\n@@ -66,6 +68,7 @@ struct rte_gtp_hdr_ext_word {\n  * defined based on RFC 38415-g30.\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_gtp_psc_generic_hdr {\n \tuint8_t ext_hdr_len;\t/**< PDU ext hdr len in multiples of 4 bytes */\n #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n@@ -89,6 +92,7 @@ struct rte_gtp_psc_generic_hdr {\n  * type0 defined based on RFC 38415-g30\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_gtp_psc_type0_hdr {\n \tuint8_t ext_hdr_len;\t/**< PDU ext hdr len in multiples of 4 bytes */\n #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN\n@@ -116,6 +120,7 @@ struct rte_gtp_psc_type0_hdr {\n  * type1 defined based on RFC 38415-g30\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_gtp_psc_type1_hdr {\n \tuint8_t ext_hdr_len;\t/**< PDU ext hdr len in multiples of 4 bytes */\n #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN\ndiff --git a/lib/net/rte_ib.h b/lib/net/rte_ib.h\nindex 9eab5f9..c4c5d39 100644\n--- a/lib/net/rte_ib.h\n+++ b/lib/net/rte_ib.h\n@@ -26,6 +26,7 @@\n  * IB Specification Vol 1-Release-1.4.\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_ib_bth {\n \tuint8_t\topcode;\t\t/**< Opcode. */\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\ndiff --git a/lib/net/rte_icmp.h b/lib/net/rte_icmp.h\nindex 4bf64d7..e865db4 100644\n--- a/lib/net/rte_icmp.h\n+++ b/lib/net/rte_icmp.h\n@@ -25,6 +25,7 @@\n /**\n  * ICMP base header\n  */\n+__rte_msvc_pack\n struct rte_icmp_base_hdr {\n \tuint8_t type;\n \tuint8_t code;\n@@ -34,6 +35,7 @@ struct rte_icmp_base_hdr {\n /**\n  * ICMP echo header\n  */\n+__rte_msvc_pack\n struct rte_icmp_echo_hdr {\n \tstruct rte_icmp_base_hdr base;\n \trte_be16_t identifier;\n@@ -45,6 +47,7 @@ struct rte_icmp_echo_hdr {\n  *\n  * @see rte_icmp_echo_hdr which is similar.\n  */\n+__rte_msvc_pack\n struct rte_icmp_hdr {\n \tuint8_t  icmp_type;     /* ICMP packet type. */\n \tuint8_t  icmp_code;     /* ICMP packet code. */\ndiff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h\nindex 0d103d4..908a25c 100644\n--- a/lib/net/rte_ip.h\n+++ b/lib/net/rte_ip.h\n@@ -38,6 +38,7 @@\n /**\n  * IPv4 Header\n  */\n+__rte_msvc_pack\n struct rte_ipv4_hdr {\n \t__extension__\n \tunion {\n@@ -523,6 +524,7 @@ struct rte_ipv4_hdr {\n /**\n  * IPv6 Header\n  */\n+__rte_msvc_pack\n struct rte_ipv6_hdr {\n \trte_be32_t vtc_flow;\t/**< IP version, traffic class & flow label. */\n \trte_be16_t payload_len;\t/**< IP payload size, including ext. headers */\n@@ -538,6 +540,7 @@ struct rte_ipv6_hdr {\n /**\n  * IPv6 Routing Extension Header\n  */\n+__rte_msvc_pack\n struct rte_ipv6_routing_ext {\n \tuint8_t next_hdr;\t\t\t/**< Protocol, next header. */\n \tuint8_t hdr_len;\t\t\t/**< Header length. */\n@@ -783,6 +786,7 @@ struct rte_ipv6_routing_ext {\n #define RTE_IPV6_SET_FRAG_DATA(fo, mf)\t\\\n \t(((fo) & RTE_IPV6_EHDR_FO_MASK) | ((mf) & RTE_IPV6_EHDR_MF_MASK))\n \n+__rte_msvc_pack\n struct rte_ipv6_fragment_ext {\n \tuint8_t next_header;\t/**< Next header type */\n \tuint8_t reserved;\t/**< Reserved */\ndiff --git a/lib/net/rte_l2tpv2.h b/lib/net/rte_l2tpv2.h\nindex 9cda347..a917013 100644\n--- a/lib/net/rte_l2tpv2.h\n+++ b/lib/net/rte_l2tpv2.h\n@@ -129,6 +129,7 @@ struct rte_l2tpv2_common_hdr {\n  * L2TPv2 message Header contains all options(length, ns, nr,\n  * offset size, offset padding).\n  */\n+__rte_msvc_pack\n struct rte_l2tpv2_msg_with_all_options {\n \trte_be16_t length;\t\t/**< length(16) */\n \trte_be16_t tunnel_id;\t\t/**< tunnel ID(16) */\n@@ -143,6 +144,7 @@ struct rte_l2tpv2_msg_with_all_options {\n  * L2TPv2 message Header contains all options except length(ns, nr,\n  * offset size, offset padding).\n  */\n+__rte_msvc_pack\n struct rte_l2tpv2_msg_without_length {\n \trte_be16_t tunnel_id;\t\t/**< tunnel ID(16) */\n \trte_be16_t session_id;\t\t/**< session ID(16) */\n@@ -180,6 +182,7 @@ struct rte_l2tpv2_msg_without_offset {\n /**\n  * L2TPv2 message Header contains options offset size and offset padding.\n  */\n+__rte_msvc_pack\n struct rte_l2tpv2_msg_with_offset {\n \trte_be16_t tunnel_id;\t\t/**< tunnel ID(16) */\n \trte_be16_t session_id;\t\t/**< session ID(16) */\n@@ -217,6 +220,7 @@ struct rte_l2tpv2_msg_without_all_options {\n /**\n  * L2TPv2 Combined Message Header Format: Common Header + Options\n  */\n+__rte_msvc_pack\n struct rte_l2tpv2_combined_msg_hdr {\n \tstruct rte_l2tpv2_common_hdr common; /**< common header */\n \tunion {\ndiff --git a/lib/net/rte_macsec.h b/lib/net/rte_macsec.h\nindex d0cd2f6..54de1bd 100644\n--- a/lib/net/rte_macsec.h\n+++ b/lib/net/rte_macsec.h\n@@ -29,6 +29,7 @@\n  * MACsec Header (SecTAG)\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_macsec_hdr {\n \t/**\n \t * Tag control information and Association number of secure channel.\n@@ -52,6 +53,7 @@ struct rte_macsec_hdr {\n  * MACsec SCI header (8 bytes) after the MACsec header\n  * which is present if SC bit is set in tci_an.\n  */\n+__rte_msvc_pack\n struct rte_macsec_sci_hdr {\n \tuint8_t sci[RTE_MACSEC_SCI_LEN]; /**< Optional secure channel ID. */\n } __rte_packed;\ndiff --git a/lib/net/rte_mpls.h b/lib/net/rte_mpls.h\nindex 51523e7..d5f6026 100644\n--- a/lib/net/rte_mpls.h\n+++ b/lib/net/rte_mpls.h\n@@ -22,6 +22,7 @@\n  * MPLS header.\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_mpls_hdr {\n \trte_be16_t tag_msb; /**< Label(msb). */\n #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN\ndiff --git a/lib/net/rte_pdcp_hdr.h b/lib/net/rte_pdcp_hdr.h\nindex 72ae9a6..6a20ad9 100644\n--- a/lib/net/rte_pdcp_hdr.h\n+++ b/lib/net/rte_pdcp_hdr.h\n@@ -60,6 +60,7 @@ enum rte_pdcp_pdu_type {\n  * 6.2.2.1 Data PDU for SRBs\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_pdcp_cp_data_pdu_sn_12_hdr {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint8_t sn_11_8 : 4;\t/**< Sequence number bits 8-11 */\n@@ -75,6 +76,7 @@ struct rte_pdcp_cp_data_pdu_sn_12_hdr {\n  * 6.2.2.2 Data PDU for DRBs and MRBs with 12 bits PDCP SN\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_pdcp_up_data_pdu_sn_12_hdr {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint8_t sn_11_8 : 4;\t/**< Sequence number bits 8-11 */\n@@ -92,6 +94,7 @@ struct rte_pdcp_up_data_pdu_sn_12_hdr {\n  * 6.2.2.3 Data PDU for DRBs and MRBs with 18 bits PDCP SN\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_pdcp_up_data_pdu_sn_18_hdr {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint8_t sn_17_16 : 2;\t/**< Sequence number bits 16-17 */\n@@ -110,6 +113,7 @@ struct rte_pdcp_up_data_pdu_sn_18_hdr {\n  * 6.2.3.1 Control PDU for PDCP status report\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_pdcp_up_ctrl_pdu_hdr {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint8_t r : 4;\t\t/**< Reserved */\ndiff --git a/lib/net/rte_ppp.h b/lib/net/rte_ppp.h\nindex 7b86ac4..fde585f 100644\n--- a/lib/net/rte_ppp.h\n+++ b/lib/net/rte_ppp.h\n@@ -21,6 +21,7 @@\n /**\n  * PPP Header\n  */\n+__rte_msvc_pack\n struct rte_ppp_hdr {\n \tuint8_t addr; /**< PPP address(8) */\n \tuint8_t ctrl; /**< PPP control(8) */\ndiff --git a/lib/net/rte_sctp.h b/lib/net/rte_sctp.h\nindex 965682d..a6cfe8f 100644\n--- a/lib/net/rte_sctp.h\n+++ b/lib/net/rte_sctp.h\n@@ -25,6 +25,7 @@\n /**\n  * SCTP Header\n  */\n+__rte_msvc_pack\n struct rte_sctp_hdr {\n \trte_be16_t src_port; /**< Source port. */\n \trte_be16_t dst_port; /**< Destin port. */\ndiff --git a/lib/net/rte_tcp.h b/lib/net/rte_tcp.h\nindex 506ac4e..d11cb2c 100644\n--- a/lib/net/rte_tcp.h\n+++ b/lib/net/rte_tcp.h\n@@ -25,6 +25,7 @@\n /**\n  * TCP Header\n  */\n+__rte_msvc_pack\n struct rte_tcp_hdr {\n \trte_be16_t src_port; /**< TCP source port. */\n \trte_be16_t dst_port; /**< TCP destination port. */\ndiff --git a/lib/net/rte_tls.h b/lib/net/rte_tls.h\nindex 2eb3c6d..81af4c7 100644\n--- a/lib/net/rte_tls.h\n+++ b/lib/net/rte_tls.h\n@@ -32,6 +32,7 @@\n  * TLS Header\n  */\n __extension__\n+__rte_msvc_pack\n struct rte_tls_hdr {\n \t/** Content type of TLS packet. Defined as RTE_TLS_TYPE_*. */\n \tuint8_t type;\ndiff --git a/lib/net/rte_udp.h b/lib/net/rte_udp.h\nindex 6135494..5416855 100644\n--- a/lib/net/rte_udp.h\n+++ b/lib/net/rte_udp.h\n@@ -25,6 +25,7 @@\n /**\n  * UDP Header\n  */\n+__rte_msvc_pack\n struct rte_udp_hdr {\n \trte_be16_t src_port;    /**< UDP source port. */\n \trte_be16_t dst_port;    /**< UDP destination port. */\ndiff --git a/lib/net/rte_vxlan.h b/lib/net/rte_vxlan.h\nindex 997fc78..bcfd579 100644\n--- a/lib/net/rte_vxlan.h\n+++ b/lib/net/rte_vxlan.h\n@@ -31,6 +31,7 @@\n  * Reserved fields (24 bits and 8 bits)\n  */\n __extension__ /* no named member in struct */\n+__rte_msvc_pack\n struct rte_vxlan_hdr {\n \tunion {\n \t\tstruct {\n@@ -57,6 +58,7 @@ struct rte_vxlan_hdr {\n  * Identifier and Reserved fields (16 bits and 8 bits).\n  */\n __extension__ /* no named member in struct */\n+__rte_msvc_pack\n struct rte_vxlan_gpe_hdr {\n \tunion {\n \t\tstruct {\n",
    "prefixes": [
        "v2",
        "03/15"
    ]
}