CA-82314: networkd: introduce Linklocal6 IPv6 address mode

This commit redefines the IPv6 address mode "None6" to mean "no IPv6 address at
all, not even a link local one", and introduces the new mode Linklocal6, which
means "only IPv6 address, except a link local one".

Previously, it was not possible to get networkd to remove the link-local IPv6
address from an interface.

When a link local IPv6 address is requested, it is derived from the interface's
MAC address as commonly done.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
CA-82314: nm: Allow (only) bridge interfaces to have a link-local IPv6 address

Due to a recent change in xcp-network, the None6 IPv6 address mode removes all
IPv6 addresses, including the link local one.  To avoid problems with bonding,
we only want bridge interfaces to have any IP addresses, while the physical
interfaces may not even have a link-local address.

This commit ensures that bridge interfaces are configured accordingly.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
CA-90424: Does not migrate VDI if it is already migrating.

Signed-off-by: Jerome Maloberti <jerome.maloberti@citrix.com>
CA-116420: when creating linux bond, add MAC address after adding bond slaves

This is needed under kernel 3.x, because the kernel now changes the bond
MAC to the MAC of the first slave that is added, which is not always
what we want.

Imported from xcp-networkd.git 0726ee01d071daa0ed8f1011e8bd5e6b05fee47b

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Imported-by: John Else <john.else@citrix.com>
CA-114498: Linux bonding: set properties (e.g. mode) before adding slaves

This is needed to get LACP bonding to work on the Linux bridge backend.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Imported-by: John Else <john.else@citrix.com>
Merge pull request #1688 from johnelse/criticals-from-trunk

Backport critical fixes from trunk
networkd: don't disable GRO by default

Imported from xcp-idl.git 00439e84bb82460950405f8e06d68d7c0dca952d

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Imported-by: John Else <john.else@citrix.com>
Update last released database schema version

Signed-off-by: John Else <john.else@citrix.com>
Add PIF.properties field

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Add PIF.set_property

We'll add some constraints to this in the next patches.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Add creedence release

Signed-off-by: John Else <john.else@citrix.com>
Fix up release versions in datamodel

Signed-off-by: John Else <john.else@citrix.com>
Set PIF properties when creating a new PIF, depending on the type of PIF

The only property that we currently recognise is "gro", which by default has
the value "on".

GRO is a low-level property of a network interface, which applies to physical
PIFs, and to a bond as a collection of physical PIFs.

We therefore currently distinguish the following cases:
* A physical PIF gets the default properties when introduced.
* A bond PIF inherits the PIF properties from the primary slave.
* A VLAN or Tunnel PIF does not have properties. It is assumed to implicitly
  inherit the properties from the PIF it is based on.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Validate input to PIF.set_property

We currently only accept the "gro" property, which can be "on" of "off".

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Only allow PIF.properties to change on unbonded physical PIFs or bond PIFs

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
When creating a bond, all PIFs must have the same properties

And those properties will become the bond's properties.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Add PIF.properties to the CLI

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Set default PIF properties on upgrade

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>

Conflicts:
	ocaml/idl/datamodel.ml
	ocaml/xapi/xapi_db_upgrade.ml
When changing PIF properties of a bond master, also update its slaves

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
Translate PIF.properties to networkd config, and execute them

For the Linux bridge case, it is important that we set the ethtool params on
bond and VLAN devices for things to work well.

VLANs inherit the properties from the PIF they are based off. For bonds, the
properties of all slaves are the same as the master's.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>