cilium: route mtu not set unless route.Spec set MTU
cilium: route mtu not set unless route.Spec set MTU

Calling route.Upsert() with an MTU parameter will only set the MTU on
the route if the MTU of the route spec (first argument to Upsert)
also sets the MTU to some non-zero value. However, this condition is
not met by any route.Upsert() calls. It seems calling code expects
the route to use the MTU param.

At least Encryption code expected this and is causing routes to
violate MTU. And when using vxlan I expected routes to use a lower
route MTU to account for vxlan header but this is not the case.

After this patch the MTU param will be used to set the route MTU if
it is !nil. If users of the API want to explicitly set the MTU then
they need to set the route spec MTU value and nil the MTU param into
route.Upsert().

Fixes: #8883
Signed-off-by: John Fastabend <ee461b60978bea1c76b3018c0b89685175b248e2@gmail.com>

tklauser/cilium,tklauser/cilium,tklauser/cilium,cilium/cilium,cilium/cilium,tgraf/cilium,cilium/cilium,tgraf/cilium,tgraf/cilium,tklauser/cilium,cilium/cilium,michi-covalent/cilium,cilium/cilium,michi-covalent/cilium,michi-covalent/cilium,tgraf/cilium,tgraf/cilium,michi-covalent/cilium,tklauser/cilium,tgraf/cilium,michi-covalent/cilium,cilium-team/cilium,cilium-team/cilium