{
    "content": [
        {
            "type": "text",
            "text": "# tc-csum (man)\n\n## NAME\n\ncsum - checksum update action\n\n## SYNOPSIS\n\ntc ... action csum UPDATE\nUPDATE := TARGET [ UPDATE ]\nTARGET := { ip4h | icmp | igmp | tcp | udp | udplite | sctp | SWEETS }\nSWEETS := { and | or | + }\n\n## DESCRIPTION\n\nThe  csum  action triggers checksum recalculation of specified packet headers. It is commonly\nused to fix incorrect checksums after the pedit action has modified the packet content.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **OPTIONS**\n- **EXAMPLES**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "tc-csum",
        "section": "",
        "mode": "man",
        "summary": "csum - checksum update action",
        "synopsis": "tc ... action csum UPDATE\nUPDATE := TARGET [ UPDATE ]\nTARGET := { ip4h | icmp | igmp | tcp | udp | udplite | sctp | SWEETS }\nSWEETS := { and | or | + }",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [
            "The following performs stateless NAT for incoming packets from 192.0.2.100 to new destination",
            "198.51.100.1. Assuming these are UDP packets, both IP and UDP checksums have to  be  recalcu‐",
            "lated:",
            "# tc qdisc add dev eth0 ingress handle ffff:",
            "# tc filter add dev eth0 prio 1 protocol ip parent ffff: \\",
            "u32 match ip src 192.0.2.100/32 flowid :1 \\",
            "action pedit munge ip dst set 198.51.100.1 pipe \\",
            "csum ip and udp"
        ],
        "see_also": [
            {
                "name": "tc",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc/8/json"
            },
            {
                "name": "tc-pedit",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc-pedit/8/json"
            },
            {
                "name": "tc",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "EXAMPLES",
                "lines": 11,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "csum - checksum update action\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "tc ... action csum UPDATE\n\nUPDATE := TARGET [ UPDATE ]\n\nTARGET := { ip4h | icmp | igmp | tcp | udp | udplite | sctp | SWEETS }\n\nSWEETS := { and | or | + }\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "The  csum  action triggers checksum recalculation of specified packet headers. It is commonly\nused to fix incorrect checksums after the pedit action has modified the packet content.\n",
                "subsections": []
            },
            "OPTIONS": {
                "content": "TARGET Specify which headers to update: IPv4 header (ip4h), ICMP header (icmp),  IGMP  header\n(igmp),  TCP  header  (tcp), UDP header (udp), UDPLite header (udplite) or SCTP header\n(sctp).\n\nSWEETS These are merely syntactic sugar and ignored internally.\n",
                "subsections": []
            },
            "EXAMPLES": {
                "content": "The following performs stateless NAT for incoming packets from 192.0.2.100 to new destination\n198.51.100.1. Assuming these are UDP packets, both IP and UDP checksums have to  be  recalcu‐\nlated:\n\n# tc qdisc add dev eth0 ingress handle ffff:\n# tc filter add dev eth0 prio 1 protocol ip parent ffff: \\\nu32 match ip src 192.0.2.100/32 flowid :1 \\\naction pedit munge ip dst set 198.51.100.1 pipe \\\ncsum ip and udp\n\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "tc(8), tc-pedit(8)\n\niproute2                                     11 Jan 2015                    Checksum action in tc(8)",
                "subsections": []
            }
        }
    }
}