Changing the source address and source port changes the UDP checksum input.

highlighted = computed this step

UDP checksum must be repaired too

UDP checksum input includes a pseudo-header, so the source address rewrite matters to UDP too.

after UDP checksum=0x3e9c\text{after UDP checksum}=0x3e9c
After UDP checksumThe after UDP checksum is recomputed over pseudo-header, UDP header, and payload.After UDP checksum compute - compute zero word 9rowindexvalueword00xcb00word10x7105word20xc633word30x6435word40x0011word50x000aword60xf230word70x0035word80x000aword90x0000 (zeroed)word100x6869raw sum0x0003c160folded0xc163result0x3e9c

The source port also changed

The UDP source port changed from 40000 to 62000.

400006200040000\to62000
After UDP checksumThe after UDP checksum is recomputed over pseudo-header, UDP header, and payload.After UDP checksum compute - compute zero word 9rowindexvalueword00xcb00word10x7105word20xc633word30x6435word40x0011word50x000aword60xf230word70x0035word80x000aword90x0000 (zeroed)word100x6869raw sum0x0003c160folded0xc163result0x3e9c

Before and after UDP checksums

The UDP checksum changes from 0x0ee0 to 0x3e9c.

0x0ee00x3e9c0x0ee0\to0x3e9c
After UDP checksumThe after UDP checksum is recomputed over pseudo-header, UDP header, and payload.After UDP checksum compute - compute zero word 9rowindexvalueword00xcb00word10x7105word20xc633word30x6435word40x0011word50x000aword60xf230word70x0035word80x000aword90x0000 (zeroed)word100x6869raw sum0x0003c160folded0xc163result0x3e9c

Summary

After NAT, UDP checksum repair covers both the pseudo-header and UDP source port.

after UDP checksum=0x3e9c\text{after UDP checksum}=0x3e9c
After UDP checksumThe after UDP checksum is recomputed over pseudo-header, UDP header, and payload.After UDP checksum compute - compute zero word 9rowindexvalueword00xcb00word10x7105word20xc633word30x6435word40x0011word50x000aword60xf230word70x0035word80x000aword90x0000 (zeroed)word100x6869raw sum0x0003c160folded0xc163result0x3e9c