lb: Loadbalancer plugin, correctly rewrite checksum in L3DSR, non-TCP cases 73/28673/6
authorHiroki Narukawa <nhirokinet@nhiroki.net>
Fri, 4 Sep 2020 06:41:40 +0000 (15:41 +0900)
committerDamjan Marion <dmarion@me.com>
Sat, 24 Oct 2020 09:00:56 +0000 (09:00 +0000)
commitfa4d4c635b82e31ecf7a52b8c794714f47b298cd
tree3996153577a792a258299f4c0e33b6ccdf393e8d
parent490e077fb9a2295d704db3c1bee5901823d2441b
lb: Loadbalancer plugin, correctly rewrite checksum in L3DSR, non-TCP cases

Current loadbalancer seems to rewrite the 17th and 18th octet of L4 header regardless of which kind of L4 protocol is used in case of L3DSR.

In case UDP, it rewrites 9th and 10th octet of payload (because UDP header is 8 octets long). If UDP payload is less than 8 octets, UDP checksum becomes invalid.

In other protocols similar problems is likely to occue.

This patch checks which L4 protocol is used, and rewrite packet regarding the L4 protocol.

Signed-off-by: Hiroki Narukawa <nhirokinet@nhiroki.net>
Change-Id: I84390ff58a33f05efac0421856beea89014adc72
Type: fix
src/plugins/lb/node.c