Skip to content

Fix IPv6 netmask format for sysconfig (#1215)

BZ: 2053546
Tested by: QA

commit b97a30f0a05c1dea918c46ca9c05c869d15fe2d5
Author: Harald <hjensas@redhat.com>
Date:   Tue Feb 8 15:49:00 2022 +0100

    Fix IPv6 netmask format for sysconfig (#1215)

    This change converts the IPv6 netmask from the network_data.json[1]
    format to the CIDR style, <IPv6_addr>/<prefix>.

    Using an IPv6 address like ffff:ffff:ffff:ffff:: does not work with
    NetworkManager, nor networkscripts.

    NetworkManager will ignore the route, logging:
      ifcfg-rh: ignoring invalid route at \
        "::/:: via fd00:fd00:fd00:2::fffe dev $DEV" \
        (/etc/sysconfig/network-scripts/route6-$DEV:3): \
        Argument for "::/::" is not ADDR/PREFIX format

    Similarly if using networkscripts, ip route fail with error:
      Error: inet6 prefix is expected rather than \
        "fd00:fd00:fd00::/ffff:ffff:ffff:ffff::".

    Also a bit of refactoring ...

    cloudinit.net.sysconfig.Route.to_string:
    * Move a couple of lines around to reduce repeated code.
    * if "ADDRESS" not in key -> continute, so that the
      code block following it can be de-indented.
    cloudinit.net.network_state:
    * Refactors the ipv4_mask_to_net_prefix, ipv6_mask_to_net_prefix
      removes mask_to_net_prefix methods. Utilize ipaddress library to
      do some of the heavy lifting.

    LP: #1959148

Conflicts:
    * minor conflicts due to different code formatting (single line import vs 2 lines), will probably be fixed
      in future rebases.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Edited by Emanuele Giuseppe Esposito

Merge request reports